Files
planar-EL512.256-H/src/still_alive/imported.h
T

784 lines
27 KiB
C
Raw Normal View History

// Song text, timing, ASCII art and credits from Portal's ending sequence,
// imported from still-alive-web by SD SkyKlouD:
// https://github.com/SDSkyKlouD/still-alive-web
//
// Disclaimer: "Still Alive" was written by Jonathan Coulton for Portal (2007).
// Portal, its credits and ASCII art are (c) Valve Corporation, see
// https://store.steampowered.com/legal/. Included only for personal,
// non-commercial use in this hobby project; all rights remain with their
// owners. This project is not affiliated with or endorsed by Valve.
//
// Generated by tools/import_still_alive.py - do not edit by hand.
#pragma once
#include "show_data.h"
static const char* const ART_APERTURE_LINES[] = {
" .,-:;//;:=,",
" . :H@@@MM@M#H/.,+%;,",
" ,/X+ +M@@M@MM%=,-%HMMM@X/,",
" -+@MM; $M@@MH+-,;XMMMM@MMMM@+-",
" ;@M@@M- XM@X;. -+XXXXXHHH@M@M#@/.",
" ,%MM@@MH ,@%= .---=-=:=,.",
" =@#@@@MX ., -%HX$$%%%+;",
" =-./@M@M$ .;@MMMM@MM:",
" X@/ -$MM/ .+MM@@@M$",
",@M@H: :@: . =X#@@@@-",
",@@@MMX, . /H- ;@M@M=",
".H@@@@M@+, %MM+..%#$.",
" /MMMM@MMH/. XM@MH; =;",
" /%+%$XHH@$= , .H@@@@MX,",
" .=--------. -%H.,@@@@@MX,",
" .%MM@@@HHHXX$$$%+- .:$MMX =M@@MM%.",
" =XMMM@MM@MM#H;,-+HMM@M+ /MMMX=",
" =%@M@M#@$-.=$@MM@@@M; %M%=",
" ,:+$+-,/H#MMMMMMM@= =,",
" =++%%%%+/:-.",
};
static const char* const ART_CAKE_LINES[] = {
" ,:/+/-",
" /M/ .,-=;//;-",
" .:/= ;MH/, ,=/+%$XH@MM#@:",
" -$##@+$###@H@MMM#######H:. -/H#",
" .,H@H@ X######@ -H#####@+- -+H###@X",
" .,@##H; +XM##M/, =%@###@X;-",
"X%- :M##########$. .:%M###@%:",
"M##H, +H@@@$/-. ,;$M###@%, -",
"M####M=,,---,.-%%H####M$: ,+@##",
"@##################@/. :%H##@$-",
"M###############H, ;HM##M$=",
"#################. .=$M##M$=",
"################H..;XM##M$= .:+",
"M###################@%= =+@MH%",
"@################M/. =+H#X%=",
"=+M##############M, -/X#X+;.",
" .;XM##########H= ,/X#H+:,",
" .=+HM######M+/+HM@+=.",
" ,:/%XM####H/.",
" ,.:=-.",
};
static const char* const ART_EXPLOSION_LINES[] = {
" .+",
" /M;",
" H#@: ;,",
" -###H- -@/",
" %####$. -; .%#X",
" M#####+;#H :M#M.",
".. .+/;%#########X###-",
" -/%H%+;-, +##############/",
" .:$M###MH$%+############X ,--=;-",
" -/H#####################H+=.",
" .+#################X.",
" =%M####################H;.",
" /@###############+;;/%%;,",
" -%###################$.",
" ;H######################M=",
" ,%#####MH$%;+#####M###-/@####%",
" :$H%+;=- -####X.,H# -+M##@-",
" . ,###; ; =$##+",
" .#H, :XH,",
" + .;-",
};
static const char* const ART_RADIO_LINES[] = {
" ;=",
" /=",
" ;=",
" /=",
" ;=",
" /=",
" ;=",
" /=",
" ,--==-:$;",
" ,/$@#######@X+-",
" ./@###############X=",
" /M#####X+/;;;;+H#####$.",
" %####M/;+H@XX@@%;;@####@,",
" +####H=+##$,--,=M#X-%####@.",
" -####X,X@HHXH##MXHXXH-+####$",
" X###@.X/$M$:####$=@X/X,X####-",
".####:+$:##@:####$:##H/X=####%",
"-%%$%,+==%$+-$+:$;-$$%-+,/$%%+",
"-/+%%X$XX$$$$$$$%$$$%$X$X$%+/-",
};
static const char* const ART_ATOM_LINES[] = {
" =/;;/-",
" +: //",
" /; /;",
" -X H.",
".//;;;:;;-, X= :+ .-;:=;:;%;.",
"M- ,=;;;#:, ,:#;;:=, ,@",
":% :%.=/++++/=.$= %=",
" ,%; %/:+/;,,/++:+/ ;+.",
" ,+/. ,;@+, ,%H;, ,/+,",
" ;+;;/= @. .H##X -X :///+;",
" ;+=;;;.@, .XM@$. =X.//;=%/.",
" ,;: :@%= =$H: .+%-",
" ,%= %;-///==///-// =%,",
";+ :%-;;;:;;;;-X- +:",
"@- .-;;;;M- =M/;;;-. -X",
" :;;::;;-. %- :+ ,-;;-;:==",
" ,X H.",
" ;/ %=",
" // +;",
" ,////,",
};
static const char* const ART_BIOHAZARD_LINES[] = {
" =+$HM####@H%;,",
" /H###############M$,",
" ,@################+",
" .H##############+",
" X############/",
" $##########/",
" %########/",
" /X/;;+X/",
"",
" -XHHX-",
" ,######,",
"#############X .M####M. X#############",
"##############- -//- -##############",
"X##############%, ,+##############X",
"-##############X X##############-",
" %############% %############%",
" %##########; ;##########%",
" ;#######M= =M#######;",
" .+M###@, ,@###M+.",
" :XH. .HX:",
};
static const char* const ART_BLACKMESA_LINES[] = {
" .-;+$XHHHHHHX$+;-.",
" ,;X@@X%/;=----=:/%X@@X/,",
" =$@@%=. .=+H@X:",
" -XMX: =XMX=",
" /@@: =H@+",
" %@X, .$@$",
" +@X. $@%",
"-@@, .@@=",
"%@% +@$",
"H@: :@H",
"H@: :HHHHHHHHHHHHHHHHHHX, =@H",
"%@% ;@M@@@@@@@@@@@@@@@@@H- +@$",
"=@@, :@@@@@@@@@@@@@@@@@@@@@= .@@:",
" +@X :@@@@@@@@@@@@@@@M@@@@@@:%@%",
" $@$, ;@@@@@@@@@@@@@@@@@M@@@@@@$.",
" +@@HHHHHHH@@@@@@@@@@@@@@@@@@@@@@@+",
" =X@@@@@@@@@@@@@@@@@@@@@@@@@@@@X=",
" :$@@@@@@@@@@@@@@@@@@@M@@@@$:",
" ,;$@@@@@@@@@@@@@@@@@@X/-",
" .-;+$XXHHHHHX$+;-.",
};
static const char* const ART_BROKENHEART_LINES[] = {
" .,---.",
" ,/XM#MMMX;,",
" -%##########M%,",
" -@######% $###@=",
" .,--, -H#######$ $###M:",
" ,;$M###MMX; .;##########$;HM###X=",
" ,/@##########H= ;################+",
"-+#############M/, %##############+",
"%M###############= /##############:",
"H################ .M#############;.",
"@###############M ,@###########M:.",
"X################, -$=X#######@:",
"/@##################%- +######$-",
".;##################X .X#####+,",
" .;H################/ -X####+.",
" ,;X##############, .MM/",
" ,:+$H@M#######M#$- .$$=",
" .,-=;+$@###X: ;/=.",
" .,/X$; .::,",
" ., ..",
};
static const char* const ART_CHECK_LINES[] = {
" :X-",
" :X###",
" ;@####@",
" ;M######X",
" -@########$",
" .$##########@",
" =M############-",
" +##############$",
" .H############$=.",
" ,/: ,M##########M;.",
" -+@###; =##########M;",
" =%M#######; :#########M/",
"-$M###########; :#########/",
" ,;X###########; =########$.",
" ;H#########+#######M=",
" ,+##############+",
" /M#########@-",
" ;M######%",
" +####:",
" ,$M-",
};
static const char* const ART_COMPANIONCUBE_LINES[] = {
"+@##########M/ :@#########@/",
"##############$;H#######@;+#############",
"###############M########################",
"##############X,-/++/+%+/,%#############",
"############M$: -X############",
"##########H;. ,--. =X##########",
":X######M; -$H@M##MH%: :H#######@",
" =%#M+=, ,+@#######M###H: -=/M#%",
" %M##@+ .X##$, ./+- ./###; +M##%",
" %####M. /###= @##M. X###%",
" %####M. ;M##H:. =$###X. $###%",
" %####@. /####M$-./@#####: %###%",
" %H#M/, /H###########@: ./M#%",
" ;$H##@@H: .;$HM#MMMH$;, ./H@M##M$=",
"X#########%. ..,,. .;@#########",
"###########H+:. ./@###########",
"##############/ ./%%%%+/.-M#############",
"##############H$@#######@@##############",
"##############X%########M$M#############",
"+M##########H: .$##########X=",
};
static const char* const ART_FIRE_LINES[] = {
" -$-",
" .H##H,",
" +######+",
" .+#########H.",
" -$############@.",
" =H###############@ -X:",
" .$##################: @#@-",
" ,; .M###################; H###;",
" ;@#: @###################@ ,#####:",
" -M###. M#################@. ;######H",
" M####- +###############$ =@#######X",
" H####$ -M###########+ :#########M,",
" /####X- =########% :M########@/.",
" ,;%H@X; .$###X :##MM@%+;:-",
" ..",
" -/;:-,. ,,-==+M########H",
" -##################@HX%%+%%$%%%+:,,",
" .-/H%%%+%%$H@###############M@+=:/+:",
"/XHX%:#####MH%= ,---:;;;;/%%XHM,:###$",
};
static const char* const ART_GLADOS_LINES[] = {
" #+ @ # # M#@",
" . .X X.%##@;# # +@#######X. @#%",
" ,==. ,######M+ -#####%M####M- #",
" :H##M%:=##+ .M##M,;#####/+#######% ,M#",
" .M########= =@#@.=#####M=M#######= X#",
" :@@MMM##M. -##M.,#######M#######. = M",
" @##..###:. .H####. @@ X,",
" ############: ###,/####; /##= @#. M",
" ,M## ;##,@#M;/M#M @# X#% X#",
".%= ######M## ##.M#: ./#M ,M #M ,#$",
"##/ $## #+;#: #### ;#/ M M- @# :",
"#+ #M@MM###M-;M #:$#-##$H# .#X @ + $#. #",
" ######/.: #%=# M#:MM./#.-# @#: H#",
"+,.= @###: /@ %#,@ ##@X #,-#@.##% .@#",
"#####+;/##/ @## @#,+ /#M . X,",
" ;###M#@ M###H .#M- ,##M ;@@; ###\"",
" .M#M##H ;####X ,@#######M/ -M###$ -H",
" .M###% X####H .@@MM@; ;@#M@",
" H#M /@####/ ,++. / ==-,",
" ,=/:, .+X@MMH@#H #####$=",
};
static const char* const ART_LIGHTBULB_LINES[] = {
" ,=;%$%%$X%%%%;/%%%%;=,",
" ,/$$+:- -:+$$/,",
" :X$= =$X:",
" ;M%. .%M;",
"+#/ /#+",
"## M#",
"H#, =;+/;, ,#X",
".HM- :@X+%H: .%M%- .M#. -M@.",
" /#%. @#- ,H@--MH, .;@$- .%#+",
" .$M; .+@X;, MM#@:/$X;. ;M$,",
" =@H, ,:+%H#M%;- ,H@=",
" .$#; -#H =#$",
" %#; #M ;#%",
" H#- ## -#H",
" ;#+ ## +#;",
" ;H+;;;;;;HH;;;;;;+H/",
" =H#@HHHHHHHHHH@#H=",
" =@#H%%%%%%%$HH@#@=",
" =@#X%%%%%%%$M###@=",
" =+%XHHX%+=",
};
static const char* const ART_MECHARM_LINES[] = {
" X MM X",
" X MM X",
" X MM X",
" X MM X",
" + HX +",
" ,=$$XX%/-",
" =X#########@%-",
" ;##############=",
"-###############M,",
";##@@@######M@###=",
".+:;+:=H##$=:/:;H.",
"- +###- ## :###,,;",
"+@:/%;-H##H==/::H;",
" /#@/-=+$$%::+H#$",
" $#%-, ,.:##-",
"-@/ =X%.",
"%H= -$;",
" =HH, .%M;",
" /MM/ :@M/.",
" .:XX, -$H:.",
};
static const char* const ART_PERSONALITYSPHERE_LINES[] = {
" .-+$H###MM@MMMMM##@$+-,. ....",
"-@$+%$+%HX+--.. . . .,:X$/+/++$#:",
"-#MXH$= $HXH#:",
" .--,:#+ ,+$HMX =@@X%, . .X#:,,,",
" =#@$H :####H =####;,M%$#X",
" X###$ $####X =####H %###X",
" ;###X /###@$: ,+HM##H.+###;",
" :###;,X##%=;%H@H$;-;M#@-;###/",
" ,M##;.@##;-H#######M=.M##-:###-",
" ;##M ;##X @###H-=@###.;##X H##;",
" ;##M./##X.@###H:/M###-=##X X##;",
" -###;,M##:,@########+-H##; @##-",
" %##M==@##%==%HMH%::/M##+.X##+",
" %###/./###X+: -+$M##M=,X##+",
" X###X X####H +#####% @##H",
" :###H %####H +#####; X##;",
" /#$. -HM##H /###@+. +#$. .",
"/HX%$X: .,-, .-,. =XX$H@-",
"/#H+/+%+/+;=. .=/%;;/;;+#+",
" .. .,-:XM#MM@@@@@@H@@M#@+=,. ,,",
};
static const Art ARTS[] = {
{nullptr, 0},
{ART_APERTURE_LINES, 20}, // 1
{ART_CAKE_LINES, 20}, // 2
{ART_EXPLOSION_LINES, 20}, // 3
{ART_RADIO_LINES, 19}, // 4
{ART_ATOM_LINES, 20}, // 5
{ART_BIOHAZARD_LINES, 20}, // 6
{ART_BLACKMESA_LINES, 20}, // 7
{ART_BROKENHEART_LINES, 20}, // 8
{ART_CHECK_LINES, 20}, // 9
{ART_COMPANIONCUBE_LINES, 20}, // 10
{ART_FIRE_LINES, 19}, // 11
{ART_GLADOS_LINES, 20}, // 12
{ART_LIGHTBULB_LINES, 20}, // 13
{ART_MECHARM_LINES, 20}, // 14
{ART_PERSONALITYSPHERE_LINES, 20}, // 15
};
static constexpr size_t ART_COUNT = sizeof(ARTS) / sizeof(ARTS[0]);
static const LyricStep LYRICS[] = {
{0, 0, STEP_CLEAR, ART_KEEP, ""},
{0, 2000, STEP_NEWLINE, ART_KEEP, "Forms FORM-29827281-12:"},
{2000, 2000, STEP_NEWLINE, ART_KEEP, "Test Assessment Report"},
{4010, 0, STEP_NEWLINE, ART_KEEP, ""},
{4020, 0, STEP_NEWLINE, ART_KEEP, ""},
{6870, 2050, STEP_NEWLINE, ART_KEEP, "This was a triumph."},
{10820, 2100, STEP_NEWLINE, ART_KEEP, "I'm making a note here:"},
{12930, 1800, STEP_NEWLINE, ART_KEEP, "HUGE SUCCESS."},
{15730, 2360, STEP_NEWLINE, ART_KEEP, "It's hard to overstate"},
{18130, 2710, STEP_NEWLINE, ART_KEEP, "my satisfaction."},
{22970, 1760, STEP_NEWLINE, 1, "Aperture Science"},
{26830, 1570, STEP_NEWLINE, ART_KEEP, "We do what we must"},
{28600, 750, 0, ART_KEEP, "because "},
{29550, 710, STEP_NEWLINE, ART_KEEP, "we can."},
{31930, 1550, 0, ART_KEEP, "For the good "},
{33480, 1530, STEP_NEWLINE, ART_KEEP, "of all of us."},
{35289, 1741, STEP_NEWLINE, 6, "Except the ones who are dead."},
{37030, 400, STEP_NEWLINE, ART_KEEP, ""},
{37430, 1858, STEP_NEWLINE, 1, "But there's no sense crying"},
{39298, 1782, STEP_NEWLINE, ART_KEEP, "over every mistake."},
{41280, 1985, STEP_NEWLINE, ART_KEEP, "You just keep on trying"},
{43275, 1366, 0, ART_KEEP, "till you run out of "},
{44641, 400, STEP_NEWLINE, ART_KEEP, "cake."},
{45227, 1970, STEP_NEWLINE, 5, "And the Science gets done."},
{47197, 1970, STEP_NEWLINE, ART_KEEP, "And you make a neat gun."},
{49187, 1520, STEP_NEWLINE, 1, "For the people who are"},
{50727, 1500, STEP_NEWLINE, ART_KEEP, "still alive."},
{53827, 0, STEP_CLEAR, ART_KEEP, ""},
{53827, 550, STEP_NEWLINE, ART_KEEP, "Forms FORM-55551-5:"},
{54377, 1100, STEP_NEWLINE, ART_KEEP, "Personnel File Addendum:"},
{55477, 0, STEP_NEWLINE, ART_KEEP, ""},
{58487, 0, STEP_NEWLINE, ART_KEEP, ""},
{58547, 1917, STEP_NEWLINE, ART_KEEP, "I'm not even angry."},
{62832, 697, 0, ART_KEEP, "I'm being "},
{63529, 650, 0, ART_KEEP, "so "},
{64179, 906, 0, ART_KEEP, "sincere "},
{65085, 1115, STEP_NEWLINE, ART_KEEP, "right now."},
{67825, 650, 0, ART_KEEP, "Even "},
{68475, 1347, 0, ART_KEEP, "though you "},
{69822, 488, 0, 8, "broke "},
{70310, 998, STEP_NEWLINE, ART_KEEP, "my heart."},
{71308, 325, 0, ART_KEEP, "And "},
{71633, 488, 0, ART_KEEP, "killed "},
{72121, 557, STEP_NEWLINE, ART_KEEP, "me."},
{74678, 1649, STEP_NEWLINE, 3, "And tore me to pieces."},
{78649, 1440, 0, ART_KEEP, "And threw every piece "},
{80091, 580, 0, ART_KEEP, "into "},
{81066, 882, STEP_NEWLINE, 11, "a fire."},
{83597, 1400, 0, ART_KEEP, "As they burned "},
{84997, 1509, STEP_NEWLINE, ART_KEEP, "it hurt because"},
{86831, 1625, STEP_NEWLINE, 9, "I was so happy for you!"},
{88897, 2067, STEP_NEWLINE, ART_KEEP, "Now these points of data"},
{90964, 1950, STEP_NEWLINE, ART_KEEP, "make a beautiful line."},
{92914, 2020, STEP_NEWLINE, ART_KEEP, "And we're out of beta."},
{94934, 1950, STEP_NEWLINE, ART_KEEP, "We're releasing on time."},
{96884, 2113, STEP_NEWLINE, 3, "So I'm GLaD. I got burned."},
{98997, 2020, STEP_NEWLINE, 5, "Think of all the things we learned"},
{101017, 1556, STEP_NEWLINE, 1, "for the people who are"},
{102573, 395, 0, ART_KEEP, "still "},
{102968, 1440, STEP_NEWLINE, ART_KEEP, "alive."},
{106008, 0, STEP_CLEAR, ART_KEEP, ""},
{106008, 450, STEP_NEWLINE, ART_KEEP, "Forms FORM-55551-6:"},
{106459, 1310, STEP_NEWLINE, ART_KEEP, "Personnel File Addendum Addendum:"},
{107768, 0, STEP_NEWLINE, ART_KEEP, ""},
{108428, 2200, STEP_NEWLINE, ART_KEEP, "One last thing:"},
{110628, 0, STEP_NEWLINE, ART_KEEP, ""},
{110678, 1324, 0, ART_KEEP, "Go ahead and leave "},
{112002, 627, STEP_NEWLINE, ART_KEEP, "me."},
{114417, 534, 0, ART_KEEP, "I think "},
{114951, 1184, 0, ART_KEEP, "I prefer "},
{116135, 1022, 0, ART_KEEP, "to stay "},
{117157, 232, 0, ART_KEEP, "in"},
{117389, 882, STEP_NEWLINE, ART_KEEP, "side."},
{119701, 511, 0, ART_KEEP, "May"},
{120212, 2972, STEP_NEWLINE, ART_KEEP, "be you'll find someone else"},
{123184, 1254, STEP_NEWLINE, ART_KEEP, "to help you."},
{126690, 511, 0, ART_KEEP, "Maybe "},
{127201, 325, 0, 7, "Black "},
{127526, 998, 0, ART_KEEP, "Mesa"},
{128524, 2183, STEP_NEWLINE, ART_KEEP, "..."},
{130707, 1440, 0, ART_KEEP, "THAT WAS A JOKE. "},
{133168, 279, 0, ART_KEEP, "FAT "},
{133447, 859, STEP_NEWLINE, ART_KEEP, "CHANCE."},
{135699, 1486, 0, ART_KEEP, "Anyway"},
{137185, 1765, STEP_NEWLINE, 2, ", this cake is great."},
{138950, 1904, STEP_NEWLINE, ART_KEEP, "It's so delicious and moist."},
{141272, 1927, STEP_NEWLINE, 12, "Look at me still talking"},
{143199, 2090, STEP_NEWLINE, 6, "when there's Science to do."},
{145289, 1695, STEP_NEWLINE, 1, "When I look out there,"},
{146984, 2183, STEP_NEWLINE, ART_KEEP, "it makes me GLaD I'm not you."},
{149167, 2043, STEP_NEWLINE, 5, "I've experiments to run."},
{151210, 2020, STEP_NEWLINE, 3, "There is research to be done."},
{153230, 1625, STEP_NEWLINE, 1, "On the people who are"},
{154855, 348, 0, ART_KEEP, "still "},
{155203, 1440, STEP_NEWLINE, ART_KEEP, "alive."},
{156843, 0, STEP_CLEAR, ART_KEEP, ""},
{156953, 0, STEP_NEWLINE, ART_KEEP, ""},
{156963, 0, STEP_NEWLINE, ART_KEEP, ""},
{156973, 0, STEP_NEWLINE, ART_KEEP, ""},
{156983, 300, 0, ART_NONE, "PS: "},
{157283, 1625, STEP_NEWLINE, ART_KEEP, "And believe me I am"},
{158908, 1138, STEP_NEWLINE, ART_KEEP, "still alive."},
{160846, 198, 0, ART_KEEP, "PPS: "},
{161044, 1904, STEP_NEWLINE, ART_KEEP, "I'm doing Science and I'm"},
{162948, 1091, STEP_NEWLINE, ART_KEEP, "still alive."},
{164839, 175, 0, ART_KEEP, "PPPS: "},
{165014, 1904, STEP_NEWLINE, ART_KEEP, "I feel FANTASTIC and I'm"},
{166918, 1091, STEP_NEWLINE, ART_KEEP, "still alive."},
{168009, 0, STEP_NEWLINE, ART_KEEP, ""},
{168109, 1154, STEP_NEWLINE, ART_KEEP, "FINAL THOUGHT: "},
{169263, 1579, STEP_NEWLINE, ART_KEEP, "While you're dying I'll be"},
{170842, 1254, STEP_NEWLINE, ART_KEEP, "still alive."},
{172096, 0, STEP_NEWLINE, ART_KEEP, ""},
{172196, 829, STEP_NEWLINE, ART_KEEP, "FINAL THOUGHT PS: "},
{173025, 1834, STEP_NEWLINE, ART_KEEP, "And when you're dead I will be"},
{174859, 1161, STEP_NEWLINE, ART_KEEP, "still alive."},
{176020, 0, STEP_NEWLINE, ART_KEEP, ""},
{176479, 0, STEP_NEWLINE, ART_KEEP, ""},
{176879, 1184, STEP_NEWLINE, ART_KEEP, "STILL ALIVE"},
{179250, 0, STEP_CLEAR, ART_KEEP, ""},
{180250, 0, STEP_NEWLINE, ART_KEEP, ""},
{181250, 0, STEP_NEWLINE, ART_KEEP, ""},
{182250, 0, STEP_NEWLINE, ART_KEEP, ""},
{183250, 1500, STEP_NEWLINE, ART_KEEP, " ***"},
{184750, 1500, STEP_NEWLINE, ART_KEEP, " Portal? 10th anniversary"},
{186250, 1500, STEP_NEWLINE, ART_KEEP, " 'Still Alive' ending scene"},
{187750, 1500, STEP_NEWLINE, ART_KEEP, " remade with HTML, JS"},
{189250, 2500, STEP_NEWLINE, ART_KEEP, " by SD SkyKlouD"},
{191750, 0, STEP_NEWLINE, ART_KEEP, ""},
{192250, 600, STEP_NEWLINE, ART_KEEP, " ? 2007- Valve Corporation."},
{192850, 900, STEP_NEWLINE, ART_KEEP, " All Rights Reserved."},
{193750, 1500, STEP_NEWLINE, ART_KEEP, " Valve, Steam, Portal are trademarks"},
{195250, 1500, STEP_NEWLINE, ART_KEEP, " and/or registered trademarks of"},
{196750, 1500, STEP_NEWLINE, ART_KEEP, " Valve Corporation. All other trademarks"},
{198250, 1500, STEP_NEWLINE, ART_KEEP, " are property of their respective owners."},
{200250, 0, STEP_NEWLINE, ART_KEEP, ""},
{200750, 2000, STEP_NEWLINE, ART_KEEP, " For the full legal info, please refer"},
{204250, 0, STEP_NEWLINE, ART_KEEP, ""},
{229250, 0, STEP_NEWLINE, ART_KEEP, ""},
{229350, 0, STEP_NEWLINE, ART_KEEP, ""},
{229450, 0, STEP_NEWLINE, ART_KEEP, ""},
{229750, 4000, STEP_NEWLINE, ART_KEEP, "... is anyone there?"},
{241750, 3000, STEP_NEWLINE, ART_KEEP, "I think you can leave here now."},
{245250, 0, STEP_NEWLINE, ART_KEEP, ""},
{246250, 2000, STEP_NEWLINE, ART_KEEP, "Here would be no profit"},
{248750, 2000, STEP_NEWLINE, ART_KEEP, "if you stay here more and more."},
{273939, 0, STEP_CLEAR, ART_KEEP, ""},
{274439, 0, STEP_NEWLINE, ART_KEEP, ""},
{274939, 0, STEP_NEWLINE, ART_KEEP, ""},
{275439, 0, STEP_NEWLINE, ART_KEEP, ""},
{275939, 5000, STEP_NEWLINE, ART_KEEP, "... will you play a game with me?"},
{281439, 2000, STEP_NEWLINE, ART_KEEP, "I know a simple game, called"},
{283939, 0, STEP_NEWLINE, ART_KEEP, ""},
{284939, 5000, STEP_NEWLINE, ART_KEEP, "// Getting Faster and Faster //"},
{290939, 2000, STEP_NEWLINE, ART_KEEP, "... I just said this is a simple game."},
{293439, 500, 0, ART_KEEP, "Actually, "},
{294939, 3500, 0, ART_KEEP, "THIS IS NOT A GAME. "},
};
static constexpr size_t LYRIC_COUNT = sizeof(LYRICS) / sizeof(LYRICS[0]);
static const char* const CREDITS[] = {
">LIST PERSONNEL",
"",
"",
"Gautam Babbar",
"Ted Backman",
"Kelly Bailey",
"Jeff Ballinger",
"Aaron Barber",
"Jeep Barnett",
"Jeremy Bennett",
"Dan Berger",
"Yahn Bernier",
"Ken Birdwell",
"Derrick Birum",
"Mike Blaszczak",
"Iestyn Bleasdale-Shepherd",
"Chris Bokitch",
"Steve Bond",
"Matt Boone",
"Antoine Bourdon",
"Jamaal Bradley",
"Jason Brashill",
"Charlie Brown",
"Charlie Burgin",
"Andrew Burke",
"Augusta Butlin",
"Julie Caldwell",
"Dario Casali",
"Chris Chin",
"Jess Cliffe",
"Phil Co",
"John Cook",
"Christen Coomer",
"Greg Coomer",
"Scott Dalton",
"Kerry Davis",
"Jason Deakins",
"Joe Demers",
"Ariel Diaz",
"Quintin Doroquez",
"Jim Dose",
"Chris Douglass",
"Laura Dubuk",
"Mike Dunkle",
"Mike Durand",
"Mike Dussault",
"Dhabih Eng",
"Katie Engel",
"Chet Faliszek",
"Adrian Finol",
"Bill Fletcher",
"Moby Francke",
"Stephane Gaudette",
"Kathy Gehrig",
"Vitaliy Genkin",
"Paul Graham",
"Chris Green",
"Chris Grinstead",
"John Guthrie",
"Aaron Halifax",
"Reagan Halifax",
"Leslie Hall",
"Jeff Hameluck",
"Joe Han",
"Don Holden",
"Jason Holtman",
"Gray Horsfield",
"Keith Huggins",
"Jim Hughes",
"Jon Huisingh",
"Brian Jacobson",
"Lars Jensvold",
"Erik Johnson",
"Jakob Jungels",
"Rich Kaethler",
"Steve Kalning",
"Aaron Kearly",
"Iikka Keranen",
"David Kircher",
"Eric Kirchmer",
"Scott Klintworth",
"Alden Kroll",
"Marc Laidlaw",
"Jeff Lane",
"Tim Larkin",
"Dan LeFree",
"Isabelle LeMay",
"Tom Leonard",
"Jeff Lind",
"Doug Lombardi",
"Bianca Loomis",
"Richard Lord",
"Realm Lovejoy",
"Randy Lundeen",
"Scott Lynch",
"Ido Magal",
"Nick Maggiore",
"John McCaskey",
"Patrick McClard",
"Steve McClure",
"Hamish McKenzie",
"Gary McTaggart",
"Jason Mitchell",
"Mike Morasky",
"John Morello II",
"Bryn Moslow",
"Arsenio Navarro",
"Gabe Newell",
"Milton Ngan",
"Jake Nicholson",
"Martin Otten",
"Nick Papineau",
"Karen Prell",
"Bay Raitt",
"Tristan Reidford",
"Alfred Reynolds",
"Matt Rhoten",
"Garret Rickey",
"Dave Riller",
"Elan Ruskin",
"Matthew Russell",
"Jason Ruymen",
"David Sawyer",
"Marc Scaparro",
"Wade Schin",
"Matthew Scott",
"Aaron Seeler",
"Jennifer Seeley",
"Taylor Sherman",
"Eric Smith",
"Jeff Sorensen",
"David Speyrer",
"Jay Stelly",
"Jeremy Stone",
"Eric Strand",
"Kim Swift",
"Kelly Thornton",
"Eric Twelker",
"Carl Uhlman",
"Doug Valente",
"Bill Van Buren",
"Gabe Van Engel",
"Alex Vlachos",
"Robin Walker",
"Joshua Weier",
"Andrea Wicklund",
"Greg Winkler",
"Erik Wolpaw",
"Doug Wood",
"Matt T. Wood",
"Danika Wright",
"Matt Wright",
"Shawn Zabecki",
"Torsten Zabka ",
"",
"",
"",
"",
"'Still Alive' by:",
"Jonathan Coulton",
"",
"",
"",
"Voices:",
"Ellen McLain - GlaDOS, Turrets",
"Mike Patton - THE ANGER SPHERE",
"",
"",
"",
"Voice Casting:",
"Shana LandsburgTeri Fiddleman",
"",
"",
"",
"",
"Voice Recording:",
"Pure Audio, Seattle, WA",
"",
"",
"",
"",
"Voice recording",
"scheduling and logistics:",
"Pat Cockburn, Pure Audio",
"",
"",
"",
"",
"Translations:",
"SDL",
"",
"",
"",
"",
"Crack Legal Team:",
"Liam Lavery",
"Karl Quackenbush",
"Kristen Boraas",
"Kevin Rosenfield",
"Alan Bruggeman",
"Dennis Tessier",
"",
"",
"",
"Thanks for the use of their face:",
"Alesia Glidewell - Chell",
"",
"",
"",
"Special thanks to everyone at:",
"Alienware",
"ATI",
"Dell",
"Falcon Northwest",
"Havok",
"SOFTIMAGE",
"and Don Kemmis, SLK Technologies",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"THANK YOU FOR PARTICIPATING",
"IN THIS",
"ENRICHMENT CENTER ACTIVITY!!",
"",
"",
"",
"",
"",
"",
"",
"",
};
static constexpr size_t CREDIT_COUNT = sizeof(CREDITS) / sizeof(CREDITS[0]);
static constexpr uint32_t SONG_START_MS = 6750;
static constexpr uint32_t CREDITS_START_MS = 9000;
static constexpr uint32_t CREDIT_CHAR_US = 68624;
static constexpr bool CREDITS_LOOP = false;