Mercurial > hg > forks > pwpunix
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_isi/demo.c Fri Jun 01 17:41:15 2012 +0300 @@ -0,0 +1,955 @@ +#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(); + } +}