Public Access
Include imported Still Alive data with disclaimer
Commit src/still_alive/imported.h instead of ignoring it. The importer now writes a source reference (SDSkyKlouD/still-alive-web) and a disclaimer (Jonathan Coulton / Valve, personal non-commercial use, not affiliated) at the top of the file; the README carries the same disclaimer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
329f97a5ec
commit
7e738b951b
4 files changed
+810
-11
No files matched your search
@@ -24,6 +24,3 @@ $RECYCLE.BIN/
|
|||||||
# Editors
|
# Editors
|
||||||
*.swp
|
*.swp
|
||||||
*~
|
*~
|
||||||
|
|
||||||
# Imported still_alive text (tools/import_still_alive.py)
|
|
||||||
src/still_alive/imported.h
|
|
||||||
@@ -92,17 +92,26 @@ pio device monitor
|
|||||||
## Still Alive demo
|
## Still Alive demo
|
||||||
|
|
||||||
A recreation of Portal's ending: timed song text typed into a console on the
|
A recreation of Portal's ending: timed song text typed into a console on the
|
||||||
left, credits scrolling top right, ASCII art bottom right. Without extra data it
|
left, credits scrolling top right, ASCII art bottom right. The text, timing, art
|
||||||
plays placeholder text. To import the original text, timing, art and credits from
|
and credits in `src/still_alive/imported.h` come from
|
||||||
[SDSkyKlouD/still-alive-web](https://github.com/SDSkyKlouD/still-alive-web):
|
[SDSkyKlouD/still-alive-web](https://github.com/SDSkyKlouD/still-alive-web) and can
|
||||||
|
be regenerated with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python tools/import_still_alive.py
|
python tools/import_still_alive.py
|
||||||
pio run -e still_alive -t upload
|
pio run -e still_alive -t upload
|
||||||
```
|
```
|
||||||
|
|
||||||
This writes `src/still_alive/imported.h`, which is git-ignored. Reset the board and
|
Without `imported.h` the demo plays placeholder text. Reset the board and start the
|
||||||
start the song when the serial log says (7.75 s after reset with the imported data).
|
song when the serial log says (7.75 s after reset with the imported data).
|
||||||
|
|
||||||
|
**Disclaimer:** "Still Alive" was written by Jonathan Coulton for Portal (2007).
|
||||||
|
Portal, its credits and ASCII art are © Valve Corporation (see
|
||||||
|
[Valve Legal Info](https://store.steampowered.com/legal/)); the web recreation they
|
||||||
|
are imported from is by [SD SkyKlouD](https://github.com/SDSkyKlouD/still-alive-web).
|
||||||
|
They are included only for personal, non-commercial use in this hobby project, and
|
||||||
|
all rights remain with their owners. This project is not affiliated with or
|
||||||
|
endorsed by Valve.
|
||||||
|
|
||||||
## Using the driver
|
## Using the driver
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,784 @@
|
|||||||
|
// 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;
|
||||||
@@ -10,7 +10,7 @@ placeholder lyrics.h / art.h / credits.h when it exists.
|
|||||||
python tools/import_still_alive.py --html index.html --js stillalive.js
|
python tools/import_still_alive.py --html index.html --js stillalive.js
|
||||||
python tools/import_still_alive.py --out somewhere/imported.h
|
python tools/import_still_alive.py --out somewhere/imported.h
|
||||||
|
|
||||||
imported.h is listed in .gitignore, so the imported text stays on your machine.
|
imported.h is committed with a disclaimer and source reference at its top.
|
||||||
|
|
||||||
Source format: each <div class="container_lyrics" data-start=ms> is one screen
|
Source format: each <div class="container_lyrics" data-start=ms> is one screen
|
||||||
(the console clears when it starts). Inside it, <span data-start data-dur
|
(the console clears when it starts). Inside it, <span data-start data-dur
|
||||||
@@ -153,8 +153,17 @@ def main():
|
|||||||
sys.exit("error: no lyrics, art or credits found; has the source changed?")
|
sys.exit("error: no lyrics, art or credits found; has the source changed?")
|
||||||
check(steps, arts)
|
check(steps, arts)
|
||||||
|
|
||||||
out = ["// Generated by tools/import_still_alive.py from",
|
out = ["// Song text, timing, ASCII art and credits from Portal's ending sequence,",
|
||||||
"// https://github.com/SDSkyKlouD/still-alive-web - do not edit.",
|
"// 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"', ""]
|
"#pragma once", "", '#include "show_data.h"', ""]
|
||||||
for name, lines in arts.items():
|
for name, lines in arts.items():
|
||||||
out.append(f"static const char* const ART_{name.upper()}_LINES[] = {{")
|
out.append(f"static const char* const ART_{name.upper()}_LINES[] = {{")
|
||||||
|
|||||||
Reference in new issue
Block a user