Lua-scripted subtitles. Instructions for viewing:
- Copy entire code block into a simple text editor, like Notepad.
- Save as
filename.lua, though replace "filename" with whatever you want. Be sure to set "Save as type" to "all files".
Now bring up your Snes9x emulator, load the right ROM, run the movie, then run the script. Just look in the File pull-down menu for a "Run Lua Script..." option. Words should appear on occasion in the emulator window.
--Subtitles for EVO
local MX= 2 -- If not using latest revision of Snes9x, set to 0
local MY= 2
local MsgDuration= 300
local t, y, L1, L2= {}, {}, {}, {}
local MsgTmr= MsgDuration
local Line= {}
Line[1]=""
Line[2]=""
-- Sets message and resets timer. Can also set y position
function NewMsg(Line1, Line2, yt) -- y is optional
MsgTmr= 0
Line[1]= Line1
Line[2]= Line2
if yt then
MY= yt
end
end
-- Displays text
function DispMsg()
if MsgTmr < MsgDuration then
MsgTmr= MsgTmr + 1
gui.text(MX,MY ,Line[1])
gui.text(MX,MY+9,Line[2])
end
end
local i= 1
-- Shrinks file size
function S(st,sy,sL1,sL2) --Time, Y-pos, Lines 1&2
t[i],y[i],L1[i],L2[i]= st,sy,sL1,sL2
i=i+1
end
--*****************************************************************************
-- Begin text
S( 60, 2,"This run aims for speed" ,"")
S( 500, 2,"Yes, this intro is unskippable." ,"")
S( 1840, 2,"This run has more evolutions" ,"than a Pokemon TAS!")
S( 2300, 2,"I'll let you know my stats..." ,"Stats: str= 1 agi= 4 jump= 1")
S( 2630, 2,"str for damage, agi for speed." ,"jump affects... Jumps... Joy")
S( 2960,30,"There are other stats." ,"They're all useless in this TAS.")
S( 3340,30,"The first Jellyfish you come to" ,"will always tell you this stuff.")
S( 3700,30,"Original Dorsal Fin: +1str +1agi","Stats: str= 2 agi= 5 jump= 1")
S( 3990,30,"Also boosts HP. Unimportant in" ,"this run, so I don't care.")
S( 4300,30,"Jumping is the fastest form of" ,"travel. Why else would I do it?")
S( 5400,30,"... If I can just avoid going up","for one frame...")
S( 6250,30,"Quick exit due to R button." ,"")
S( 6870,30,"The cave where much luck is" ,"manipulated in my favor.")
S( 7430,30,"1/16 chance for each flashy meat","and done rather stylish, too.")
S( 7700,30,"Different enemies have different","chances, however.")
S( 8080,30,"Eel is very fast. Though this" ,"can randomly pick a slow manta.")
S( 8500,30,"Oh, right. The Eel's stats..." ,"Stats: str= 3 agi=12 jump= 6")
S( 8890,30,"50 enemies must spawn. This is" ,"why I swim at this spot.")
S( 9210,30,"Address 7E0766 is useful here." ,"It is an enemy counter.")
S( 9600, 2,"Time limit for crystal forms" ,"is 32 seconds (1920 frames)")
S( 10580,30,"Evil RNG... Poor jellyfish takes","a tackle thanks to it...")
S( 10980,30,"And this is why I want the RNG" ,"to behave: Flashy meat.")
S( 12410,30,"Quick pause to manipulate luck." ,"Blame the evil RNG, man!")
S( 13200,30,"Stuff in the following cave have","1/32 chance of flashing meat")
S( 13600,30,"Tackled here to maintain Eel" ,"speed for a short while.")
S( 14020,30,"Kuraselache's Tail: +4 agi +4jmp","Stats: str= 2 agi= 9 jump= 5")
S( 14330,30,"More HP, too. But again, HP is" ,"not imporant in this run.")
S( 14700,30,"Tackle Fin: +3 agi, +2 str" ,"Stats: str= 4 agi=12 jump= 5")
S( 15260,30,"Kuraselache's Dorsal Fin." ,"Stats: str= 6 agi=14 jump= 5")
S( 15820,30,"Heads-up! Our heroic fishy will" ,"make silly faces!")
S( 16550,30,"Again, nothing is faster than" ,"jumps. There's more, trust me.")
S( 17800,30,"Guess who's tackle will win out!","Imagine the perfect snapshot!")
S( 18750,30,"A message would pop up here." ,"Naturally, it is skipped.")
S( 19800,30,"Oh, crud! I lost my fish stats!" ,"Stats: str= 1 agi= 4 jump= 1")
--Chapter 2
S( 21500, 2,"A few hundred million years" ,"pass in less than 10 minutes.")
S( 22950,30,"Wazzat?! A Yellow crystal? It" ,"summons Dialogue: Time Waster!")
S( 23280, 2,"Detour. It's long, but the time" ,"it saves makes up for it.")
S( 24450,30,"And there's the reason for the" ,"detour: Green Crystal!")
S( 24950, 2,"Ah, yes... Recall the fish..." ,"Stats: str= 6 agi=14 jump= 5")
S( 25800,30,"Oh, silly me. I skipped another" ,"dialogue! Impossible w/o fish.")
S( 26600,30,"As a fish, I can't bounce on" ,"enemies. So I bite instead.")
S( 27000,30,"Bites can stun enemies long" ,"enough for me to jump away.")
S( 28080, 2,"Alas, it's many, many more jumps","from here on out.")
S( 30000,30,"It's silly how quick this battle","goes.")
S( 31500,30,"I make a short delay here, to" ,"get rid of fish frames.")
S( 32700,30,"You can't bounce as a fish." ,"But as an amphibian... Boing!")
S( 33040,30,"Gulping air in order to keep" ,"bouncing. Maintains fish speed.")
S( 33350,30,"Keril: +4 agility" ,"Stats: str= 1 agi= 8 jump= 1")
S( 34540, 2,"Those amphibians aren't foes." ,"They're still good for bounces!")
S( 35500,30,"Look! I'm an amphibian! These" ,"things are known for jumps!")
S( 36000,30,"10 minutes have passed" ,"About 25% done with input file!")
S( 36600,30,"Eating stuff delays death." ,"Still, less stuff to lag with.")
S( 37000,30,"Jumping Dorsal fin: +3s +5a +4j" ,"Stats: str= 4 agi=13 jump= 5")
S( 37400,30,"1/32 chance for flashing meat." ,"I don't need them all to flash.")
S( 37900,30,"The boss won't show until ALL" ,"the enemies and meat are gone.")
S( 38750,30,"Spring Tail:+2 str +2 agi +7 jmp","Stats: str= 6 agi=15 jump=12")
S( 39200,30,"Actually, I'm done evolving as" ,"the Amphibian. No need for food")
S( 41190,30,"Another green crystal..." ,"I'll make use of it!")
S( 42390,30,"I jump once. Fun how releasing" ,"control coasts me through.")
S( 44400,30,"Biting Megausu gets him off the" ,"screen sooner.")
S( 45200,30,"Shorter tackles because I let" ,"Queen Bee off the ground.")
S( 46130,30,"Oh, dear... Not again! NO!" ,"Stats: str= 1 agi= 4 jump= 1")
--Chapter 3
S( 47900, 2,"I hear this is a bad time to be.","I mean, the meteors and all...")
S( 49050,30,"Ugh... No wimpy dino... Oh, my" ,"Green Crystal! I'll use it!")
S( 49400,30,"Remember the amphy's stats?" ,"Stats: str= 6 agi=15 jump=12")
S( 50900,30,"There will be a chain of stages" ,"where I simply jump through...")
S( 51780,30,"Eh? Don't want it? Oh joy! I'll" ,"take it off your hands, then!")
S( 53700,30,"Ah, another new creature to jump","on! Imagine the plot unfolding!")
S( 54700,30,"These yell when attacked. That" ,"noise can deal damage to you.")
S( 57950,30,"Wait, did I see 'reptile' in" ,"there? I'm not one, am I? Uh...")
S( 58150,30,"Gah! No reptile! NO! Must use" ,"my other Green Crystal!")
S( 58550,30,"Seriously, 1 damage a hit?" ,"6/hit takes a while as is!")
S( 59500,30,"Detour: Going to become a bird." ,"It's freakin' fast, man!")
S( 60700,30,"Sweet! A plot twist! We get to" ,"jump to the LEFT now! Awesome!")
S( 61700,30,"Note, I never got any EVO.P as" ,"a Reptile...")
S( 62500,30,"Ah, Mt. Brave. Amphibians like" ,"me can jump up easily!")
S( 63460,30,"Reptile...?" ,"")
S( 63560,30,"Reptile...? REPTILE!?" ,"")
S( 63660,30,"Reptile...? REPTILE!?" ,"NO! Not that again! So weak!")
S( 63860,30,"I'm... Doomed... No more..." ,"Bye world... I'm jumping off!")
S( 64180,30,"But wait!! What's that?! Joy!" ,"I'm a bird! My savior!")
S( 64810, 2,"Bird stats start decent, though.","Stats: str= 1 agi= 9 jump= 4")
S( 65400,30,"But I need a little more stats." ,"One side trip here, and...")
S( 65800,30,"This thing has a 1/128 chance" ,"to drop flashing meat.")
S( 66200,30,"Pronesaurus Dorsal Fin" ,"Stats: str= 4 agi=11 jump= 6")
S( 66400,30,"Ptenodons Crest" ,"Stats: str= 5 agi=13 jump= 8")
S( 66850, 2,"The detour finally ends..." ,"We're on our way through now!")
S( 67300,30,"Still smilin'. That meat was" ,"THAT good, I tell ya!")
S( 68500,30,"Caution: Glitch ahead. I zip," ,"causing a mess with the sky.")
S( 69700,30,"Boss battle: Defeat 10 of these" ,"silly things.")
S( 70050,30,"They have a 1/64 chance of" ,"forking over flashing meat.")
S( 70500,30,"The pre-emptive evolution helps.","5 damage instead of 1!")
S( 70950,30,"Mmm... Luck-manipulated meat..." ,"Part of a balanced diet!")
S( 71350,30,"Longtail birds Tail" ,"Stats: str=10 agi=20 jump=11")
S( 72000,30,"20 minutes have passed" ,"I'm just chugging along.")
S( 72500,30,"I hate lag. Avoiding it made it" ,"less epic than my test run.")
S( 74400, 2,"Ominous Green Crystal..." ,"Floating like it's nothin'...")
S( 75000, 2,"Extreme dodgeball! Looks like" ,"The Dinos are losing this one!")
--Chapter 4
S( 77400, 2,"This is the coolest chapter!" ,"... I don't mean figuratively.")
S( 78650,30,"Non-mammals can't walk on ice" ,"all that well...")
S( 79000,30,"I can always jump! Somehow, air" ,"has more traction than ice.")
S( 79400,30,"Tackles work well, too." ,"Silly ice...")
S( 79750,30,"This is where you'd become a" ,"mammal. I'll stay a bird...")
S( 81000,30,"Yes, I need to visit in order" ,"to continue...")
S( 82300,30,"Now we can jump in a cave!" ,"All the places we can jump!")
S( 83000,30,"There's actually an alternate" ,"path. But this one's faster.")
S( 84050, 2,"Wonder how my bird manages with" ,"that cold air...")
S( 84650,30,"Now what did I just say? Now" ,"it's not cold at all!")
S( 85600,30,"A more impressive zip glitch" ,"takes place here.")
S( 85940,30,"I have indeed touched the sky." ,"It's kind of red and stuff.")
S( 87280, 2,"Classic wraparound effect." ,"I head south to North Pole!")
S( 87700,30,"Must be the off-screen teleport" ,"that I always heard about.")
S( 88650,30,"Another boss battle." ,"Result is predictable.")
S( 89000,30,"Note how useful those downward" ,"tackles are. Bird only")
S( 90750, 2,"Okay, this wraparound is silly." ,"Don't think too hard on it.")
S( 91720,30,"Warted Body: +2 strength" ,"Stats: str=12 agi=20 jump=11")
S( 92100,30,"Notably, flying up this pillar" ,"lets me get grabbed faster.")
S( 93100,30,"Ah, my favorite scene! Look at" ,"how I bounce through!")
S( 93900,30,"Bird flight speeds up this place","dramatically. So neat!")
S( 94270,30,"Yes, this is a teleporter maze." ,"It's quick enough, anyway.")
S( 94800,30,"Here's why Birdy speeds things:" ,"Going up. Yay for flight!")
S( 96400,30,"I take my time eating these." ,"I must wait a fixed time!")
S( 97200, 2,"Dramatic escape sequence! ...Oh?","I'm already out?! Yay!")
S( 98000,30,"There would be this ice barrier.","A boom miles away took it out.")
S( 99100,30,"This tackle sequence is used to" ,"prevent me from taking damage")
S(100600,30,"You can tell she's female by the","teal eye shadow she wears.")
S(101100,30,"Same attack pattern to avoid" ,"the same sort of damage.")
S(101700,30,"That time I needed to eat quick" ,"to trigger the next scene.")
S(102500,30,"Oh? About that 3800 EVO.P?" ,"You'll find out later.")
--Chapter 5
S(104600, 2,"Never thought history would be" ,"anything like this.")
S(105800,30,"My goodness! We're jumping to" ,"the left again! Madness!")
S(106850,30,"You can become human. It is" ,"disappointingly weak...")
S(107165,30,"Human form is only for mammals." ,"Like I care for this run...")
S(107670,30,"Water causes evolution. I fly" ,"to avoid that mess.")
S(108000, 2,"30 minutes have passed" ,"Are we there yet? NO!")
S(108700,30,"Rather conveniently placed" ,"foe, would you say?")
S(109400,30,"Odd, but the Y button allows me" ,"to bounce off them...")
S(111850,30,"I tried. I really did. I just" ,"can't manipulate them...")
S(114150,30,"Dialogue skip! No monkey shall" ,"tell me to use elevators!")
S(114550,30,"Yes, repeated tackles is faster" ,"than straight flying...")
S(114870,30,"But only at a high enough" ,"agility.")
S(115350,30,"This boss has an unusually short","stun time. Tough thing...")
S(115680,30,"However, short stun times are" ,"good things for a TASer!")
S(116800,30,"If you think about it, this" ,"place is insane...")
S(117400,30,"First, we have a bird underwater","")
S(118100,30,"And quite suddenly, there's ice.","")
S(118600,30,"And a fish riding another fish." ," With a gun, too.")
S(119100,30,"I manipulate their patrol so my" ,"dashes aren't interrupted.")
S(120500,30,"Then we meet a spell-casting" ,"boss. Now there's magic?")
S(121600,30,"Top it all off with a throne" ,"room.")
S(121920,30,"Complete with royalty, curtains,","red carpet... Underwater?")
S(122800,30,"Yeah... Back to the land for me!","I'm outta here!")
S(124000,30,"They talk about that flying fort","over in Chapter 4.")
S(125000,30,"I could use that zip glitch, but","low ceiling made it useless")
S(126050,30,"Alright, Cro-Maine, I'm-a go" ,"and bury you!!")
S(126500,30,"Well, uh... What do you know?" ,"I DID bury him! What the hey?")
S(127500,30,"Ah, the final place. You can" ,"tell from the music.")
S(128100,30,"Elevator glitch. I can jump and" ,"still trigger it.")
S(128420,30,"Generally good for getting a" ,"better position.")
S(130100,30,"Bolbox... A boss that takes" ,"forever to die.")
S(131390,30,"Armor Body" ,"Stats: str=14 agi=18 jump=11")
S(131630,30,"Horned Helmet" ,"Stats: str=16 agi=16 jump= 9")
S(132000,30,"Agility has little meaning now." ,"So, strength all the way!")
S(132650,30,"I can attack Bolbox, but no" ,"progress 'til minion is dead.")
S(133080,30,"Must eat as well. " ,"enemy won't show!")
S(133550,30,"Just killing time. May as well" ,"act out while waiting.")
S(134000,30,"My test run used 12 damage hits.","")
S(134600,30,"Ulch... Avoiding lag made this" ,"dance so much less appealing.")
S(135500,30,"If I hit again before eating," ,"Bolbox would recover 80 HP.")
S(137400,30,"That white ball transforms into" ,"a cute harmless amphibian!")
S(137900,30,"Finding actions to entertain" ,"you during waits ain't easy.")
S(138470,30,"Static noise? Seems it tried to" ,"attack. I didn't let it.")
S(139100,30,"It's nearly over... Just one" ,"more orb after this one...")
S(140250,30,"Uh, oh... Bolbox's last resort" ,"is coming! Here it comes!")
S(140625,30,"It's almost here! It's... It is-","")
S(140705,30,"It's almost here! It's... It is-","... A hunk of meat?!")
S(141200,30,"Alas, Bolbox's last ditch effort","to bribe me ends in failure.")
S(144000, 2,"40 minutes have passed" ,"Enjoying the ending?")
--End text
--*****************************************************************************
i= 1
while t[i] and (t[i] < movie.framecount()) do i= i+1 end
while t[i] do
if t[i] <= movie.framecount() then
NewMsg(L1[i],L2[i],y[i])
i= i+1
end
DispMsg()
snes9x.frameadvance()
end
local timer= 0
while true do -- Idle loop. Prevents pre-lua pause state
DispMsg() -- To get that last message...
timer= timer+1
snes9x.frameadvance()
if timer >= 72000 then
gui.text(0,200,"Um, sir... You have an active script...")
end
if timer >=216000 then
gui.text(0,210,"If you want hidden messages, open the darn script!")
end
end