view final_isi/demo.c @ 69:c13a2f8c5b10

Rename files and some minor cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 01 Jun 2012 17:41:15 +0300
parents final_isi/fisidemo.c@53676367d46f
children
line wrap: on
line source

#include "wrapper.h"

#include "fisi.h"
#include "ansi.h"

extern int bgcol, txtcol, ansifrom;
extern char buffclass;

extern char fx_main;
extern char fx_main_spex;
extern char fx_3d;
extern char fx_flare;

extern char *ruutu, *txb, *abb, *vib;

extern framekey o0[];

void prforhyb(char *h)
{
    int i;
    for (i = 80 * 25; i; i--)
    {
        if ((*h == 32) || (!*h))
            if (!(*(h + 1) & 0xf0))
            {
                *h = 253;
                *(h + 1) = 1;
            }
        h += 2;
    }
}

void demoloop()
{
    int quit = 0;
    char lastkey = 0;
    int dt = 0;
    int fader = 0, fadetype = 1;

    while (!quit)
    {
        int t = pwplib_timer();

        while (dt < t)
        {
            int d = dt;

            if (d < 5 * 384)
                if (!(d % 5))
                    switch (d / 5)
                    {
                      case (0):
                          scroller_init(0);
                          preparebuff(SINGLE);
                          fx_main = SCROLLER;
                          fx_main_spex = 0;
                          break;
                      case (64):
                          fader = 7;
                          fadetype = 1;
                          txtline(txb + 80 * 10, "elet{{n", "the`year");
                          break;
                      case (66):
                          txtline(txb + 80 * 20, "vuotta", "is");
                          break;
                      case (68):
                          txtline(txb + 80 * 30, "}o}~", "}o}~");
                          break;
                      case (96):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (100):
                          clrline(txb + 80 * 10);
                          break;
                      case (116):
                          clrline(txb + 80 * 10);
                          break;

                      case (128):
                          fader = 7;
                          fadetype = 1;
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 80 * 10, "kaaos", "chaos");
                          break;
                      case (132):
                          txtline(txb + 80 * 20, "on`t{ytt{nyt", "has`taken");
                          break;
                      case (134):
                          txtline(txb + 80 * 30, "maan", "the`earth");
                          break;
                      case (128 + 32):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (128 + 48):
                          clrline(txb + 80 * 20);
                          break;
                      case (128 + 64):
                          fader = 7;
                          fadetype = 1;
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 80 * 2, "maailman", "the`great");
                          break;
                      case (192 + 4):
                          txtline(txb + 80 * 14, "suuri", "leader`of");
                          break;
                      case (192 + 8):
                          txtline(txb + 80 * 26, "johtaja", "the`world`has");
                          break;
                      case (192 + 12):
                          txtline(txb + 80 * 38, "on`vangittu", "been`captured");
                          break;
                      case (192 + 32):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (192 + 64):
                          fader = 7;
                          fadetype = 1;
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 80 * 2, "ja`vain", "and");
                          break;
                      case (192 + 70):
                          txtline(txb + 80 * 11, "yksi`mies", "only");
                          break;
                      case (192 + 72):
                          txtline(txb + 80 * 20, "voi", "one`man");
                          break;
                      case (192 + 74):
                          txtline(txb + 80 * 29, "pelastaa", "can");
                          break;
                      case (192 + 76):
                          txtline(txb + 80 * 38, "h{net", "save`him");
                          break;
                      case (192 + 96):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (256 + 64):
                          memset(txb, 0, 80 * 50);
                          fader = 7;
                          fadetype = 1;
                          txtline(txb + 80 * 20, "i`s`i", "i`s`i");
                          break;
                      case (256 + 64 + 32):
                          txtline(txb + 80 * 8, "final", "final");
                          break;
                      case (256 + 104):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (256 + 112):
                          memset(txb, 0xff, 80 * 50);
                          fader = 15;
                          fadetype = 3;
                          break;
                      case (256 + 118):
                          preparebuff(NONE);
                          fx_main = NONE;
                          uncrunch(LOGO, ruutu, sizeof(LOGO));
                          break;
                    }

            d -= 5 * (256 + 128 + 28);
            if (d >= 0)
                if (!(d & 3))
                    switch (d >> 2)
                    {
                      case (0):
                          preparebuff(SINGLE);
                          fx_main = SCROLLER;
                          scroller_init(HORIZON | NOSKRAMBLE);
                          memset(txb, 0, 80 * 25 * 2);
                          scr_txr(1);
                          o0[OHGT].curr = 48 * 256;
                          o0[OHGT].targ = 22 * 256;
                          o0[OHGT].frac = 2048;
                          o0[OZOOM].curr = o0[OZOOM].targ = 10;
                          fx_3d = 1;
                          txtline(txb + 80 * 8, "isi", "daddy");
                          txtline(txb + 80 * 18, "ei`turhia", "wont`wait");
                          txtline(txb + 80 * 28, "aikaile", "too`long");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (32):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (64):
                          memset(txb, 0, 80 * 25 * 2);
                          txtline(txb + 80 * 5, "isi`laittaa", "daddy");
                          txtline(txb + 80 * 15, "p{{h{ns{", "puts`on`his");
                          txtline(txb + 80 * 25, "virtuaalisen", "virtual");
                          txtline(txb + 80 * 35, "kyp{r{n", "helm");
                          fader = 7;
                          fadetype = 3;
                          break;

                      case (64 + 32):
                          fader = 31;
                          fadetype = 2;
                          break;

                      case (64 + 40):
                          preparebuff(NONE);
                          memset(ruutu, 0, 80 * 25 * 2);
                          uncrunch(SYBER0, ruutu, sizeof(SYBER0));
                          break;

                      case (64 + 44):
                          memset(ruutu, 0, 80 * 25 * 2);
                          uncrunch(SYBER1, ruutu, sizeof(SYBER1));
                          break;

                      case (64 + 48):
                          memset(ruutu, 0, 80 * 25 * 2);
                          uncrunch(SYBER2, ruutu, sizeof(SYBER2));
                          break;

                      case (64 + 52):
                          preparebuff(SINGLE);
                          memset(txb, 0xee, 80 * 25 * 2);
                          fader = 31;
                          fadetype = 2;
                          o0[OFLX].curr = o0[OFLX].targ = 20 * 256;
                          o0[OFLY].curr = o0[OFLY].targ = -15 * 256;
                          fx_flare = 1;
                          break;

                      case (64 + 58):
                          fader = 31;
                          fadetype = 2;
                          fx_flare = 0;
                          break;

                      case (64 + 64):
                          fx_flare = 1;
                          memset(txb, 0, 80 * 25 * 2);
                          txtline(txb + 80 * 5, "ja`hetkess{", "and");
                          txtline(txb + 80 * 15, "h{nest{", "instantly");
                          txtline(txb + 80 * 25, "tulee", "he`becomes");
                          fader = 7;
                          fadetype = 3;
                          break;

                      case (64 + 64 + 32):
                          fx_flare = 0;
                          memset(txb, 0, 80 * 25 * 2);
                          txtline(txb + 80 * 30, "salaper{inen", "the");
                          txtline(txb + 80 * 40, "", "mysterious");
                          break;

                      case (64 + 64 + 32 + 16):
                          fx_3d = 1;
                          eggine_load(0);
                          o0[OY].curr = 70 * 32;
                          o0[OY].targ = 25 * 32;
                          o0[OROT].targ = 800;
                          o0[OZOOM].targ = 31000;
                          break;

                      case (64 + 64 + 64):
                          memset(txb, 0, 80 * 25 * 2);
                          o0[OY].targ = 25 * 32;
                          txtline(txb + 80 * 20, "virtuaalimies", "virtual`man");
                          break;

                      case (64 + 64 + 64 + 16):
                          o0[OROT].targ = 760;
                          o0[OROT].frac = 512;
                          break;

                      case (64 + 64 + 64 + 32):
                          fadetype = 4;
                          fader = 1;
                          fx_3d = 1;
                          eggine_load(0);
                          break;

                      case (64 + 64 + 64 + 40):
                          o0[OZOOM].targ = 100;
                          o0[OZOOM].frac = 4096;
                          break;

                      case (64 + 64 + 64 + 48):
                          memset(txb, 0xff, 80 * 25 * 2);
                          break;

                    }

            d -= 8 * 128;
            if (d >= 0)
                if (!(d & 3))
                    switch (d >> 2)
                    {
                      case (0):
                          fx_3d = fx_flare = 0;
                          preparebuff(HYBRID);
                          memset(abb, 0x0000, 80 * 25 * 2);
                          memset(txb, 0x0000, 80 * 25 * 2);
                          memset(vib, 0, 80 * 50);
                          fx_main = NONE;
                          uncrunch(VPELU0, abb, sizeof(VPELU0));
                          uncrunch(VPELU1, txb, sizeof(VPELU1));
                          prforhyb(abb);
                          prforhyb(txb);
                          ansifrom = 2;
                          atxtline(vib, "kuka`sin{", "who`are", 0);
                          atxtline(vib + 9 * 80, "``olet", "``you", 0);
                          break;
                      case (64):
                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "ja", "and", 0);
                          atxtline(vib + 9 * 80, "``miksi`olet", "why`have`you", 0);
                          break;
                      case (64 + 16):
                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "vanginnut", "captured", 0);
                          atxtline(vib + 9 * 80, "``minut", "``me", 0);
                          break;
                      case (64 + 32):
                          ansifrom = 0;
                          memset(txb, 0, 80 * 25 * 2);
                          uncrunch(VPELU2, txb, sizeof(VPELU2));
                          prforhyb(txb);
                          break;
                      case (128):
                          ansifrom = 2;
                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "min{`olen", "i`am", 1);
                          break;
                      case (128 + 16):
                          atxtline(vib + 9 * 80, "sinun", "your", 1);
                          break;
                      case (128 + 32):
                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "pime{", "dark", 1);
                          atxtline(vib + 9 * 80, "puoliskosi", "half", 1);
                          break;
                      case (128 + 64):
                          memset(abb, 0x0000, 80 * 25 * 2);
                          memset(txb, 0x0000, 80 * 25 * 2);
                          memset(vib, 0, 80 * 50);
                          ansifrom = 2;
                          uncrunch(VMPELU0, abb, sizeof(VMPELU0));
                          uncrunch(VMPELU1, txb, sizeof(VMPELU1));
                          prforhyb(abb);
                          prforhyb(txb);
                          atxtline(vib, "musta", "the`black", 0);
                          atxtline(vib + 9 * 80, "``pelu", "``pelu", 0);
                          break;
                    }

            d -= ((128 + 128) * 4);
            if (d >= 0)
                if (!(d & 3))
                    switch (d >> 2)
                    {
                      case (0):
                          memset(txb, 0, 80 * 25 * 2);
                          preparebuff(SINGLE);
                          scroller_init(HORIZON | NOSKRAMBLE);
                          scr_txr(1);
                          fx_main = SCROLLER;
                          fx_main_spex = 1;
                          fx_3d = 1;
                          eggine_load(0);
                          o0[OY].curr = 70 * 32;
                          o0[OY].targ = 25 * 32;
                          o0[OY].frac = 2048;

                          o0[OZOOM].curr = 25000;
                          o0[OZOOM].targ = 100;
                          o0[OZOOM].frac = 1024;

                          fader = 7;
                          fadetype = 1;
                          memset(txb, 0, 80 * 25 * 2);
                          txtline(txb + 9 * 80, "isi", "daddy");
                          txtline(txb + 18 * 80, "etsii", "looks`for");
                          txtline(txb + 27 * 80, "poikaansa", "his`son");
                          txtline(txb + 36 * 80, "urheasti", "bravely");
                          break;

                      case (32):
                          fader = 31;
                          fadetype = 2;
                          break;

                      case (48):
                          o0[OHGT].targ = 5 * 256;
                          o0[OHGT].frac = 4096;
                          break;

                      case (64):
                          eggine_load(1);
                          memset(txb, 0, 80 * 25 * 2);
                          o0[OY].curr = 70 * 32;
                          o0[OY].targ = 25 * 32;
                          o0[OY].frac = 2048;
                          o0[OZOOM].curr = 20000;
                          o0[OZOOM].targ = 27000;
                          o0[OROT].targ = 1000;
                          o0[OROT].frac = 4096;

                          txtline(txb + 2 * 80, "mutta", "but");
                          txtline(txb + 11 * 80, "pimeyden", "the`dark");
                          txtline(txb + 20 * 80, "varjostajat", "shadows");
                          txtline(txb + 29 * 80, "huomaavat", "notice");
                          txtline(txb + 38 * 80, "h{net", "him");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (64 + 32):
                          fader = 31;
                          fadetype = 2;
                          o0[OROT].targ = 700;
                          o0[OROT].frac = 2048;
                          o0[OROT].frac = 1024;
                          break;
                      case (64 + 48):
                          o0[OROT].targ = 1000;
                          break;
                      case (64 + 56):
                          o0[OROT].targ = 200;
                          break;
                      case (64 + 64):
                          o0[OZOOM].targ = 100;
                          o0[OZOOM].frac = 4096;
                          break;
# 338 "tmp"
                      case (64 + 64 + 16):
                          o0[OY].curr = 70 * 32;
                          o0[OY].targ = 25 * 32;
                          o0[OY].frac = 4096;
                          o0[OROT].targ = 500;
                          o0[OZOOM].curr = 31000;
                          o0[OZOOM].targ = 100;
                          o0[OZOOM].frac = 4096;
                          memset(txb, 0, 80 * 25 * 2);
                          txtline(txb + 8 * 80, "pimeyden", "there`is");
                          txtline(txb + 18 * 80, "varjostajia", "a`lot`of");
                          txtline(txb + 28 * 80, "tulee", "dark");
                          txtline(txb + 38 * 80, "paljon", "shadows");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (64 + 64 + 32):
                          o0[OY].curr = 70 * 32;
                          o0[OY].targ = 25 * 32;
                          o0[OY].frac = 4096;
                          o0[OROT].targ = 50;
                          o0[OZOOM].curr = 31000;
                          o0[OZOOM].targ = 100;
                          o0[OZOOM].frac = 4096;

                          break;
                      case (64 + 64 + 48):
                          o0[OY].curr = 70 * 32;
                          o0[OY].targ = 25 * 32;
                          o0[OY].frac = 4096;
                          o0[OROT].targ = 500;
                          o0[OZOOM].curr = 31000;
                          o0[OZOOM].targ = 100;
                          o0[OZOOM].frac = 4096;
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (64 + 64 + 64):
                          memset(txb, 0, 80 * 25 * 2);
                          txtline(txb + 8 * 80, "ja`isi", "and`daddy");
                          txtline(txb + 18 * 80, "on`nyt", "is`now");
                          txtline(txb + 28 * 80, "katalassa", "in`quite");
                          txtline(txb + 38 * 80, "pinteess{", "`a`trouble");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (64 + 64 + 64 + 32):
                          fader = 31;
                          fadetype = 2;
                          break;
                    }

            d -= 256 * 4;
            if (d >= 0)
                if (!(d & 3))
                    switch (d >> 2)
                    {
                      case (0):
                          preparebuff(HYBRID);
                          memset(txb, 0, 80 * 25 * 2);
                          ansifrom = 2;
                          uncrunch(P_SPR, txb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR, txb + 60 * 2 + 10 * 160, sizeof(MP_SPR));
                          memset(abb, 0, 80 * 25 * 2);
                          uncrunch(P_SPR, abb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR1, abb + 60 * 2 + 10 * 160, sizeof(MP_SPR1));
                          prforhyb(abb);
                          prforhyb(txb);
                          fx_main = 0;
                          fx_3d = 0;
                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "lapsena", "as`children", 1);
                          atxtline(vib + 9 * 80, "olimme`yksi`", "we`were`one``", 1);
                          break;

                      case (32):
                          uncrunch(SINIPELU, abb + 20 * 2 + 7 * 160, sizeof(SINIPELU));
                          break;

                      case (64):
                          ansifrom = 2;
                          memset(abb, 0, 80 * 25 * 2);
                          uncrunch(P_SPR, abb + 11 * 160, sizeof(P_SPR1));
                          uncrunch(MP_SPR1, abb + 60 * 2 + 10 * 160, sizeof(MP_SPR1));
                          prforhyb(abb);
                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "sitten`meid{t", "then`we`were", 1);
                          atxtline(vib + 9 * 80, "erotettiin`", "separated``", 1);
                          break;

                      case (96):

                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "sin{`olet", "you`are`good", 1);
                          atxtline(vib + 9 * 80, "hyv{```", "i`am`evil", 1);
                          atxtline(vib + 18 * 80, "min{`paha`", "", 1);
                          break;

                      case (96 + 16):
                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "sin{`valkea", "you`are`white", 1);
                          atxtline(vib + 9 * 80, "min{`musta`", "i`am`dark", 1);
                          break;





                      case (128):
                          ansifrom = 2;
                          memset(abb, 0, 80 * 25 * 2);
                          uncrunch(P_SPR, abb + 11 * 160, sizeof(P_SPR1));
                          uncrunch(MP_SPR1, abb + 60 * 2 + 10 * 160, sizeof(MP_SPR1));
                          prforhyb(abb);
                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "meid{n", "we`should", 1);
                          atxtline(vib + 9 * 80, "pit{isi`taas", "unite`again", 1);
                          atxtline(vib + 18 * 80, "yhdisty{``", "", 1);
                          break;

                      case (128 + 32):
                          uncrunch(JINJANG, abb + 20 * 2 + 7 * 160, sizeof(JINJANG));
                          prforhyb(abb);
                          break;

                      case (128 + 64):
                          memset(txb, 0, 80 * 25 * 2);
                          ansifrom = 2;
                          uncrunch(P_SPR, txb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR, txb + 60 * 2 + 10 * 160, sizeof(MP_SPR));
                          memset(abb, 0, 80 * 25 * 2);
                          uncrunch(P_SPR1, abb + 11 * 160, sizeof(P_SPR1));
                          uncrunch(MP_SPR, abb + 60 * 2 + 10 * 160, sizeof(MP_SPR));
                          prforhyb(abb);
                          prforhyb(txb);
                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "mutta", "but", 0);
                          atxtline(vib + 9 * 80, "mit{`siit{", "what`would`it", 0);
                          atxtline(vib + 18 * 80, "``seuraisi", "``lead`to", 0);
                          break;

                      case (128 + 64 + 32):
                          uncrunch(MP_SPR2, abb + 60 * 2 + 10 * 160, sizeof(MP_SPR2));
                          ansifrom = 1;
                          memset(vib, 0, 80 * 25 * 2);
                          atxtline(vib, "maailmanloppu", "the`end", 1);
                          atxtline(vib + 9 * 80, "", "of`the`world", 1);
                          break;
                    }

            d -= 4 * 256;
            if (d >= 0)
                if (!(d & 3))
                    switch (d >> 2)
                    {
                      case (0):
                          preparebuff(SINGLE);
                          fx_main = SCROLLER;
                          scroller_init(HORIZON | NOSKRAMBLE);

                          memset(txb, 0, 80 * 25 * 2);
                          txtcol = 0;
                          o0[OHGT].curr = o0[OHGT].targ = 256 * 25;
                          o0[OHGT].frac = 2048;
                          o0[OFLX].curr = -50 * 256;
                          o0[OFLY].curr = -30 * 256;
                          o0[OFLX].targ = 10 * 256;
                          o0[OFLY].targ = -20 * 256;
                          fx_3d = fx_flare = 1;
                          eggine_load(0);
                          o0[OZOOM].curr = 100;
                          o0[OZOOM].targ = 25000;
                          o0[OZOOM].frac = 4096;
                          o0[OROT].curr = 500;
                          o0[OX].curr = 40 * 32;
                          o0[OY].curr = 25 * 32;

                      case (16):
                          o0[OROT].targ = 80;
                          break;
                      case (32):
                          o0[OY].targ = 70 * 32;
                          o0[OZOOM].targ = 15000;
                          o0[OFLX].targ = -20 * 256;
                          o0[OFLY].targ = -7 * 256;
                          o0[OHGT].targ = 10 * 256;
                          break;
                      case (40):
                          eggine_load(1);
                          o0[OZOOM].curr = 100;
                          o0[OZOOM].targ = 31000;
                          o0[OY].curr = o0[OY].targ = 25 * 32;
                          o0[OFLX].targ = 0 * 256;
                          break;
                      case (48):
                          o0[OZOOM].targ = 25000;
                          break;
                      case (56):
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 9 * 80, "isi", "daddy");
                          txtline(txb + 18 * 80, "on`nyt", "is`now");
                          txtline(txb + 27 * 80, "saarrettu", "trapped");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (64 + 16):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (64 + 32):
                          o0[OROT].targ = 400;
                          o0[OROT].frac = 4096;
                          memset(txb, 0xee, 80 * 50);
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (64 + 36):
                          fader = 7;
                          fadetype = 1;
                          o0[OROT].targ = 10;
                          o0[OFLX].targ = 10 * 32;
                          o0[OFLY].targ = -20 * 32;
                          break;
                      case (64 + 40):
                          fader = 31;
                          fadetype = 2;
                          eggine_load(0);
                          o0[OY].curr = 10 * 32;
                          o0[OY].targ = 30 * 32;
                          o0[OROT].targ = 600;
                          fx_flare = 0;
                          o0[OHGT].curr = o0[OHGT].targ = 40 * 256;
                          o0[OZOOM].curr = o0[OZOOM].targ = 20000;
                          break;
                      case (64 + 48):
                          o0[OY].targ = 20 * 32;
                          break;
                      case (64 + 56):
                          o0[OZOOM].targ = 30000;
                          break;
                      case (64 + 64):
                          o0[OHGT].targ = 25 * 256;
                          o0[OY].targ = 30 * 32;
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 4 * 80, "onneksi", "fortunately");
                          txtline(txb + 14 * 80, "isill{`on", "daddy`has");
                          txtline(txb + 24 * 80, "salainen", "a`secret");
                          txtline(txb + 34 * 80, "ase", "weapon");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (64 + 64 + 16):
                          o0[OROT].targ = 500;
                          fx_flare = 1;
                          o0[OFLX].curr = -40 * 256;
                          o0[OFLX].targ = 30 * 256;
                          break;
                      case (64 + 64 + 24):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (64 + 64 + 32):
                          preparebuff(HYBRID);
                          memset(txb, 0, 80 * 50);
                          memset(abb, 0, 80 * 50);
                          uncrunch(WINNUKE0, txb, sizeof(WINNUKE0));
                          uncrunch(WINNUKE1, abb, sizeof(WINNUKE1));
                          ansifrom = 1;
                          fx_flare = 0;
                          eggine_load(1);
                          o0[OY].targ = o0[OY].curr = 15 * 32;
                          o0[OROT].curr = 500;
                          o0[OROT].targ = 200;
                          o0[OZOOM].curr = o0[OZOOM].targ = 25000;
                          o0[OHGT].curr = o0[OHGT].targ = 40 * 256;
                          break;
                      case (64 + 64 + 32 + 16):
                          ansifrom = 0;
                          break;
                      case (64 + 64 + 32 + 24):
                          preparebuff(SINGLE);
                          o0[OZOOM].curr = o0[OZOOM].targ = 25000;
                          o0[OROT].curr = o0[OROT].targ = 500;
                          o0[OHGT].curr = o0[OHGT].targ = 15 * 256;
                          fx_flare = 1;
                          break;
                      case (64 + 64 + 32 + 32):
                          o0[OROT].targ = 200;
                          o0[OHGT].targ = 45 * 256;
                          o0[OFLY].targ = -25 * 256;
                          o0[OFLX].targ = -30 * 256;

                          break;
                      case (64 + 64 + 32 + 36):
                          o0[OZOOM].targ = 100;
                          fx_flare = 1;

                          o0[OFLY].curr = (15 - 25) * 256;
                          o0[OFLX].curr = 0;

                          o0[OFLY].targ = (35 - 25) * 256;
                          o0[OFLX].targ = (10 - 40) * 256;
                          o0[OY].targ = 35 * 32;
                          o0[OX].targ = 10 * 32;

                          o0[OX].frac = 8192;
                          o0[OY].frac = 8192;
                          o0[OFLX].frac = 8192;
                          o0[OFLY].frac = 8192;
                          break;
                      case (64 + 64 + 32 + 48):
                          memset(txb, 0xcc, 80 * 50);
                          fader = 31;
                          fadetype = 2;
                          fx_flare = 0;
                          break;
                      case (64 + 64 + 32 + 52):
                          fx_flare = 1;
                          break;
                      case (64 + 64 + 32 + 56):
                          fader = 31;
                          fadetype = 2;
                          fx_flare = 0;
                          break;
                    }

            d -= 4 * 256;

            if (d >= 0)
                if (!(d & 3))
                    switch (d >> 2)
                    {
                      case (0):
                          eggine_load(0);
                          o0[OHGT].targ = 5 * 256;
                          o0[OZOOM].targ = o0[OZOOM].curr = 28000;
                          o0[OROT].targ = 300;
                          o0[OX].curr = o0[OX].targ = 40 * 32;
                          o0[OY].curr = 60 * 32;
                          o0[OY].targ = 25 * 32;

                          break;
                      case (16):
                          o0[OZOOM].targ = 100;
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 4 * 80, "isi`jatkaa", "daddy");
                          txtline(txb + 14 * 80, "matkaansa", "journeys`on");
                          txtline(txb + 24 * 80, "mustan`pelun", "to`black`pelu");
                          txtline(txb + 34 * 80, "linnakkeelle", "fortress");
                          fader = 7;
                          fadetype = 1;
                          break;
                      case (48):
                          fader = 31;
                          fadetype = 2;
                          break;
                      case (64):
                          preparebuff(HYBRID);
                          fx_main = 0;
                          memset(txb, 0, 80 * 25 * 2);
                          ansifrom = 0;
                          uncrunch(P_SPR, txb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR2, txb + 30 * 2 + 10 * 160, sizeof(MP_SPR2));
                          break;
                      case (64 + 16):
                          memset(txb, 0, 80 * 25 * 2);
                          memset(vib, 0, 80 * 25 * 2);
                          uncrunch(P_SPR, txb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR2, txb + 27 * 2 + 10 * 160, sizeof(MP_SPR2));
                          atxtline(vib, "isiiii", "daddeeeee", 0);
                          atxtline(vib + 9 * 80, "pelasta`jo", "save`meeee", 0);
                          prforhyb(txb);
                          break;
                      case (64 + 32):
                          memset(txb, 0, 80 * 25 * 2);
                          uncrunch(P_SPR, txb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR2, txb + 24 * 2 + 10 * 160, sizeof(MP_SPR2));
                          prforhyb(txb);
                          break;
                      case (64 + 48):
                          memset(txb, 0, 80 * 25 * 2);
                          uncrunch(P_SPR, txb + 11 * 160, sizeof(P_SPR));
                          uncrunch(MP_SPR2, txb + 2 * 21 + 10 * 160, sizeof(MP_SPR2));
                          break;
                      case (64 + 56):
                          preparebuff(SINGLE);
                          fx_main = SCROLLER;
                          txtcol = 0;
                          memset(vib, 0, 80 * 25 * 2);
                          o0[OHGT].targ = 5 * 256;
                          o0[OZOOM].curr = 100;
                          o0[OZOOM].targ = 28000;
                          o0[OROT].curr = 200;
                          o0[OROT].targ = 700;
                          o0[OFLX].curr = 30 * 256;
                          o0[OFLY].curr = -15 * 256;
                          o0[OFLX].targ = -30 * 256;
                          o0[OFLY].targ = 15 * 256;
                          o0[OY].targ = 40 * 32;
                          break;
                      case (128 + 5):
                          o0[OY].targ = 60 * 32;
                          o0[OZOOM].targ = 20000;
                          break;
                      case (128 + 16):
                          preparebuff(HYBRID);
                          fx_main = 0;
                          ansifrom = 0;
                          fx_3d = 0;
                          memset(vib, 0, 80 * 50);
                          memset(txb, 0, 80 * 50);
                          uncrunch(SAVE0, txb, sizeof(SAVE0));
                          break;
                      case (128 + 20):
                          memset(txb, 0, 80 * 50);
                          uncrunch(SAVE1, txb, sizeof(SAVE1));
                          break;
                      case (128 + 24):
                          memset(txb, 0, 80 * 50);
                          uncrunch(SAVE2, txb, sizeof(SAVE2));
                          break;
                      case (128 + 28):
                          memset(txb, 0, 80 * 50);
                          uncrunch(SAVE3, txb, sizeof(SAVE3));
                          break;
                      case (128 + 32):
                          memset(txb, 0, 80 * 50);
                          uncrunch(SAVE4, txb, sizeof(SAVE4));
                          break;
                      case (128 + 36):
                          memset(txb, 0, 80 * 50);
                          uncrunch(SAVE5, txb, sizeof(SAVE5));
                          break;
                      case (128 + 48):
                          prforhyb(txb);
                          atxtline(vib, "oho", "uh`oh", 0);
                          break;
                      case (128 + 64):
                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "isiiii", "daddeeee", 1);
                          break;
                      case (128 + 64 + 16):
                          uncrunch(XFOR, txb + 50 * 160, sizeof(XFOR));
                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "pelastit", "you`saved", 1);
                          break;
                      case (128 + 64 + 32):

                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "minut`ja", "me`and", 1);
                          break;
                      case (128 + 64 + 48):

                          memset(vib, 0, 80 * 50);
                          atxtline(vib, "maailman", "the`world``", 1);
                          break;
                          break;
                      case (256):
                          preparebuff(SINGLE);
                          memset(txb, 0, 80 * 50);
                          memset(abb, 0, 80 * 50);
                          memset(vib, 0, 80 * 50);
                          txtline(txb + 8 * 80, "mites`nyt", "how`can");
                          txtline(txb + 24 * 80, "noin`k{vi", "this`happen");
                          fader = 31;
                          fadetype = 1;
                          break;
                      case (256 + 64):
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 6 * 80, "no`eip{`ole", "well");
                          txtline(txb + 16 * 80, "meid{n", "thats`not");
                          txtline(txb + 26 * 80, "ongelma", "our`problem");
                          break;
                      case (256 + 128):
                          memset(txb, 0, 80 * 50);
                          txtline(txb + 22 * 80, "the`end", "the`end");
                          break;
                      case (256 + 128 + 64):
                          lastkey = 27;
                          break;
                    }

            if (fader)
            {
                int f = fader;
                int joo[8] = {
                    0x0000,
                    0x0808,
                    0x0707,
                    0x7070,
                    0x7777,
                    0x7f7f,
                    0xf7f7,
                    0xffff
                };
                if (fadetype == 2)
                    f = 7 - f / 4;
                if (fadetype == 3)
                    f = f / 2;
                if (fadetype == 4)
                {
                    f &= 7;
                    fader += 2;
                }

                if (f > 7)
                    f = 7;
                if (f < 0)
                    f = 0;
                txtcol = joo[7 - f];
                fader--;
            }

            dt++;
        }

        if (buffclass)
            effu(t);

        pwplib.loopflush();
    }
}