--I have no illusion I guessed what output you want.
--This is all the information I could drag out of this script.
--I leave it up to you to modify this to fit what you want.
--By the way, as it is, the files will be sorted by when the subs finish.
local OutputMethod= {
Text= function(File,Frame,Duration,Left,Top,Str,TextColor,BackColor)
File:write(string.format("Frame:%7d Len:%4d X:%3d Y:%3d Color:%s BackColor:%s Text:%s\r\n",
Frame,Duration,Left,Top,TextColor,BackColor,Str
))
end,
Box= function(File,Frame,Duration,Left,Top,Width,Height,Border,Fill)
File:write(string.format("Frame:%7d Len:%4d X:%3d Y:%3d W:%3d H:%3d Border:%s Fill:%s\r\n",
Frame,Duration,Left,Top,Width,Height,Border,Fill
))
end,
Line= function(File,Frame,Duration,x1,y1,x2,y2,Color)
File:write(string.format("Frame:%7d Len:%4d X1:%3d Y1:%3d X2:%3d Y2:%3d Color:%s\r\n",
Frame,Duration,x1,y1,x2,y2,Color
))
end
}
--#############################################################################
--Setting up files. Also a good spot for you to look at.
local TextFile, BoxFile, LineFile, MessyText, MessyBox, err
TextFile ,err= io.open("Subs_TextOutput.txt" ,"wb"); if err then error(err) end
BoxFile ,err= io.open("Subs_BoxOutput.txt" ,"wb"); if err then error(err) end
LineFile ,err= io.open("Subs_LineOutput.txt" ,"wb"); if err then error(err) end
MessyText,err= io.open("Subs_MessTxtOutput.txt","wb"); if err then error(err) end
MessyBox ,err= io.open("Subs_MessBoxOutput.txt","wb"); if err then error(err) end
--If you want a file pre-merged, something like this can work:
--TextFile ,err= io.open("Subs_TextOutput.txt" ,"w"); if err then error(err) end
--BoxFile = TextFile
--LineFile = TextFile
--MessyText = TextFile
--MessyBox = TextFile
--#############################################################################
--Functions whose output I'm not positive on. One more good spot to adjust.
--*****************************************************************************
local function ReplaceSpecialCharacters(t)
--*****************************************************************************
--Some things just ruin our formatting in the output.
--This function serves to replace certain things in the string.
t= string.gsub(t,"\n","\\n") --NewLine
return t
end
--*****************************************************************************
local function BlankTextToBox(w,h)
--*****************************************************************************
--Because a blank text is basically a box.
--Of course, default text size couldn't be in integer pixels. Just can't!
--w = Maximum detected characters in a line
--h = Number of detected lines
return math.floor(w*(7.2)-1), math.floor(h*(13.60)-1.2)
end
--#############################################################################
--I did all this code below just to isolate the interface above.
--If you know lua stuff, enough to debug stuff I do, feel free to look.
--Otherwise, you might want to just leave the below alone.
local ActiveSubs= {}
--ActiveSubs[si] : si, Subtitle Index.
-- .Active : Finalize resets this to nil. If already nil, Finalize kills it.
-- .Item[i] : Existing items to the same si index.
-- .frame : Frame it began existence
-- .File : Usually the EasyFile, changes to MessyFile if changes noted
-- .Messy : Output for when things aren't consistent between frames
-- .Out : Output string, to select method as needed
-- .Params : Table. Parameters given. Frankly don't care what's in it.
-- .Changed : Whether or not this had a history of at least one change.
--*****************************************************************************
local function IsBlank(txt)
--*****************************************************************************
--Identifies if there's anything that isn't whitespace in there.
--Returns two parameters: Height and width, in number of characters.
--Returns nil if it detects something that isn't whitespace.
--This is so we know to treat it like a box instead of text.
local Spaces, Lines, MaxSpaces= 0,1,0
for i= 1, #txt do
local s= string.sub(txt,i,i)
if (s ~= " ") and (s ~= "\n") and (s ~= "\t") then return end
if s == " " then
Spaces= Spaces+1
MaxSpaces= math.max(Spaces,MaxSpaces)
elseif s == "\t" then --Okay, so you also use horizontal tabs.
spaces= spaces+8 --TODO: find actual spacing, but it's not important here
MaxSpaces= math.max(Spaces,MaxSpaces)
else --NewLine
Spaces= 0
Lines= Lines+1
end
end
return Lines, MaxSpaces
end
--*****************************************************************************
local function ToColor(c)
--*****************************************************************************
local t= type(c)
--Assume this is colorific.
if t == "string" then return c end
--Nil works fine, so give something for it.
if t == "nil" then return "default" end
--Numbers don't show up how we want in tostring, so format it.
if t == "number" then return string.format("#%08X",c) end
--I'm out of ideas. And frankly, if we're here, bad news.
error("Not a recognized color",3)
end
--*****************************************************************************
local function Initialize(i)
--*****************************************************************************
ActiveSubs[i]= ActiveSubs[i] or {}
t= ActiveSubs[i]
t.Active= (t.Active or 0)+1 --If we're given the same index, don't overwrite
t.Item= t.Item or {} --the same item!
t.Item[t.Active]= t.Item[t.Active] or {}
return t,t.Item[t.Active]
end
--*****************************************************************************
local function CompareTables(t1,t2)
--*****************************************************************************
--I won't bother checking if they are tables to begin with, that's your problem
--Or mine. I'm the one writing the code. Stop reading this and embarrassing me.
if #t1 ~= #t2 then return false end --Not equal length, therefore not equal
for i= 1, #t1 do
if t1[i] ~= t2[i] then return false end
end
return true
end
--*****************************************************************************
local function HandleArbitraryData(index, frame, params, OutStr,EasyFile,MessyFile)
--*****************************************************************************
local Sub,Item= Initialize(index)
if Item.frame then
if CompareTables(Item.Params,params) then
--Data is identical. No action
else --Not equal. Ram the output now.
print("Output: " .. Item.Out)
OutputMethod[Item.Out](
Item.Messy, --Messy, messy...
Item.frame, --Time it begins.
frame-Item.frame, --Length of time
unpack(Item.Params) --Stuff. By "luck", I hope it works out.
)
Item.frame = frame
Item.File = MessyFile --No going back from being altered.
Item.Messy = MessyFile --In case we changed files somehow.
Item.Out = OutStr
Item.Params = params
Item.Changed= true
end
else --Initialize item
Item.frame = frame
Item.File = EasyFile
Item.Messy = MessyFile
Item.Out = OutStr
Item.Params= params --Stuff my extra stuffs in here, yo!
end
end
--*****************************************************************************
local function FauxRect(index,frame, ...)
--*****************************************************************************
--FauxRect(index,frame,
-- [1]Left,[2]Top,[3]Width,[4]Height,[5]BorderColor,[6]FillColor)
gui.drawRectangle(...) --visual
local params= {...}
params[5]= ToColor(params[5]) --These are colors.
params[6]= ToColor(params[6])
HandleArbitraryData(index, frame, params,"Box",MessyBox)
end
--*****************************************************************************
local function FauxBox(index,frame,...)
--*****************************************************************************
--FauxBox(index,frame,
-- [1]Left,[2]Top,[3]Right,[4]Bottom,[5]BorderColor,[6]FillColor)
--Best tweak the right and bottom a bit.
gui.drawBox(...) --visual
local params= {...}
params[3]= params[3] - params[1] --Get Width
params[4]= params[4] - params[2] --Get Height
params[5]= ToColor(params[5]) --These are colors.
params[6]= ToColor(params[6])
HandleArbitraryData(index, frame, params,"Box",BoxFile,MessyBox)
end
--*****************************************************************************
local function FauxLine(index,frame,...)
--*****************************************************************************
--FauxLine(index,frame,
-- [1]x1,[2]y1,[3]x2,[4]y2,[5]Color)
gui.drawLine(...) --Visual
local params= {...}
params[5]= ToColor(params[5])
--Just a note, MessyLine doesn't exist. Hope that ain't called.
HandleArbitraryData(index, frame, params, "Line",LineFile,MessyLine)
end
--*****************************************************************************
local function FauxText(index,frame,...)
--*****************************************************************************
--FauxText(index,frame,
-- [1]Left,[2]Top,[3]Str,[4]TextColor,[5]BackColor)
gui.drawText(...) --Visual
local params= {...}
params[4]= ToColor(params[4]) --Very colorful, I hope
params[5]= ToColor(params[5])
--Wait a sec... Let's not call HandleArbitraryData just yet!
local w,h= IsBlank(params[3])
if w then --If we have a width, it's a box!!
--FauxRect(index,frame,
-- [1]Left,[2]Top,[3]Width,[4]Height,[5]BorderColor,[6]FillColor)
--Left and Top are fine.
params[3],params[4]= BlankTextToBox(w,h)
--[5] is text:BackColor, which coincides with rect:BorderColor
params[6]= params[5] --FillColor
HandleArbitraryData(index, frame, params,"Box",BoxFile,MessyBox)
else
params[3]= ReplaceSpecialCharacters(params[3]) --Now replace newlines.
HandleArbitraryData(index, frame, params,"Text",TextFile,MessyText)
end
end
--*****************************************************************************
local function Finalize(frame)
--*****************************************************************************
local c= 0
for si,Subs in pairs(ActiveSubs) do
c= c+1
if Subs.Active then
Subs.Active= nil
else
ActiveSubs[si]= nil --Remove it
local Items= Subs.Item
for i= 1, #Items do
local Item= Items[i]
print("Output: " .. Item.Out)
OutputMethod[Item.Out]( --It's about to 'not exist', dump it now!
Item.File, --File
Item.frame, --When it began
frame-Item.frame, --How long it lasted
unpack(Item.Params) --Stuff
)
end --For each item
end --Whether the subtitle is active
end --For each active sub
gui.text(80,0,c)
end --Function
--*****************************************************************************
local function CloseScript()
--*****************************************************************************
TextFile:close()
BoxFile:close()
LineFile:close()
MessyText:close()
MessyBox:close()
error("Script escape. Time limit exceeded.",0) --Errors close scripts just fine.
end
--#############################################################################
--ctrl+H replacement of various functions, and small insertions.
--Yep, here we are.
local gui= nil --In case I missed more references to the gui. Throw error!
--memory.usememorydomain("EWRAM")
while true do
local si= 0
Fct = emu.framecount()
Dsx = mainmemory.read_s32_be(0xA2D8)
Dsy = mainmemory.read_s32_be(0xA2DC)
Dpx = mainmemory.read_u16_be(0xA2D0)
Dpy = mainmemory.read_u16_be(0xA2D4)
Scx = mainmemory.read_u16_be(0x852C)
Scy = mainmemory.read_u16_be(0x8528)
Hxr = mainmemory.read_u16_be(0x8F5A)
Hyt = mainmemory.read_u16_be(0x8F54)
Hyb = mainmemory.read_u16_be(0x8F5E)
Hxl = mainmemory.read_u16_be(0x8F60)
--Title
si= si+1; if Fct > 63 and Fct < 341 then FauxText(si,Fct,2,164,"One day, Donald found a map inside\none of uncle Scrooge's old books.","white","black");end
si= si+1; if Fct > 340 and Fct < 619 then FauxText(si,Fct,2,164,"Then, he and his nephews got on a plane\nto search for \"The Great Duck Treasure.\"","white","black");end
--Mexico
si= si+1; if Fct > 649 and Fct < 3812 then
si= si+1; if Fct > 650 and Fct < 891 then FauxText(si,Fct,2,164,"Mexico:\nHere Donald will get \"Some Information.\" ");end
si= si+1; if Fct > 890 and Fct < 1191 then FauxText(si,Fct,2,164,"I assume you already know what a TAS is, \nbut here's the basics just in case.");end
si= si+1; if Fct > 1190 and Fct < 1491 then FauxText(si,Fct,2,164,"First of all, to keep track of our speed \nand position we watch memory adresses.");end
si= si+1; if Fct > 1490 and Fct < 1851 then FauxText(si,Fct,2,10,"Speed:\nX: "..Dsx.."\nY: "..Dsy.."\nPosition: \nX: "..Dpx.."\nY: "..Dpy);end
si= si+1; if Fct > 1884 and Fct < 2185 then FauxText(si,Fct,2,164,"Pretty confusing in real time, isn't it? \nBut TASes are played frame by frame.");end
si= si+1; if Fct > 2184 and Fct < 2465 then FauxText(si,Fct,2,164,"We no longer rely on reflexes to dodge \nbullets, or jump over bottomless pits.");end
si= si+1; if Fct > 2464 and Fct < 2745 then FauxText(si,Fct,2,164,"But if a mistake is made, and we know how \nto fix it, save states are there for us.");end
si= si+1; if Fct > 2746 and Fct < 3089 then FauxText(si,Fct,2,164,"Do you want to know more?\nPlease visit http://TASvideos.org ");end
si= si+1; if Fct > 3329 and Fct < 3370 then FauxRect(si,Fct,62,19,191,87,0xFF660000,0xFF660000);
FauxBox(si,Fct,64,21,251,104,0xFFFF6666)
FauxText(si,Fct,68,89," ","white","black");
FauxText(si,Fct,68,24,"\"WITHOUT THE HERO KEY, \n THE DOOR WON'T OPEN.\n\n AN EXPLORER WENT TO \n DUCKBURG WITH IT.\"","white","black");end
si= si+1; if Fct > 3369 and Fct < 3595 then FauxRect(si,Fct,62,19,191,87,0x55660000,0x55660000);
FauxBox(si,Fct,64,21,251,104,0xFFFF6666)
FauxText(si,Fct,68,24,"\"WITHOUT THE HERO KEY, \n THE DOOR WON'T OPEN.\n\n AN EXPLORER WENT TO \n DUCKBURG WITH IT.\"","white",0x00000000);end
si= si+1; if Fct > 3622 and Fct < 3811 then FauxText(si,Fct,10,164,"Mexico: 159 frames saved. \nTotal : 159 frames ahead.");end
end
--Duckburg
si= si+1; if Fct > 3839 and Fct < 5402 then
si= si+1; if Fct > 3840 and Fct < 4081 then FauxText(si,Fct,2,164,"Duckburg:\nHere Donald will take the \"Hero Key.\" "); end
si= si+1; if Fct > 4080 and Fct < 4381 then FauxText(si,Fct,2,164,"Even being the smallest stage of the game, \nquite some time was saved here." ); end
si= si+1; if Fct > 5200 and Fct < 5401 then FauxText(si,Fct,2,164,"Duckburg: 27 frames saved. \nTotal : 186 frames ahead."); end
si= si+1; if Fct > 4885 and Fct < 4957 then FauxRect(si,Fct,64,9,191,71,0xFF660066,0xFF660066);
FauxBox(si,Fct,66,11,253,78,0xFFCC00CC)
FauxText(si,Fct,70,63," ","white","black");
FauxText(si,Fct,70,14,"\"PLEASE TAKE THIS KEY. \n\n I DON'T NEED TO GO TO\n THE RUINS ANYMORE.\"\n","white","black");end
si= si+1; if Fct > 4956 and Fct < 5175 then FauxRect(si,Fct,64,9,191,71,0x55660066,0x55660066);
FauxBox(si,Fct,66,11,253,78,0xFFCC00CC)
FauxText(si,Fct,70,14,"\"PLEASE TAKE THIS KEY. \n\n I DON'T NEED TO GO TO\n THE RUINS ANYMORE.\"\n","white",0X00000000);end
end
--Mexico
si= si+1; if Fct > 5429 and Fct < 10474 then
Act = mainmemory.read_u16_be(0xA2E6)
si= si+1; if Fct > 5430 and Fct < 5751 then FauxText(si,Fct,2,164,"Mexico:\nHere Donald will get the \"Red Plunger.\" "); end
si= si+1; if Fct > 5784 and Fct < 7305 then FauxText(si,Fct,2,10,"Actions: "..Act.." "); end
si= si+1; if Fct > 5784 and Fct < 6165 then FauxText(si,Fct,2,164,"I don't fully understand this address, \nbut it was helpful to create this TAS."); end
si= si+1; if Fct > 6164 and Fct < 6545 then FauxText(si,Fct,2,164,"It controls some of Donald's actions, \nlike recover from damage animation."); end
si= si+1; if Fct > 6544 and Fct < 6925 then FauxText(si,Fct,2,164,"The Belly Slide is also controlled by this \ntimer making it easier to start a new one."); end
si= si+1; if Fct > 6924 and Fct < 7305 then FauxText(si,Fct,2,164,"In the previous run it was not found, \nso there's less trial and error now."); end
si= si+1; if Fct > 7564 and Fct < 7945 then FauxText(si,Fct,2,164,"In this stage Donald must do something he \ndoesn't do very often; go to the left."); end
si= si+1; if Fct > 7944 and Fct < 8325 then FauxText(si,Fct,2,164,"Not really a big deal, but I don't know \nwhy Donald moves so fast to the left."); end
si= si+1; if Fct > 8472 and Fct < 8614 then FauxRect(si,Fct,58,95,191,71,0xFF004C99,0xFF004C99);
FauxBox(si,Fct,60,97,247,164,0xFF0080FF)
FauxText(si,Fct,64,149," ","white","black");
FauxText(si,Fct,64,100,"\"I FOUND THIS PLUNGER. \n\n HERE, USE IT TO MEET\n GYRO IN DUCKBURG.\" ","white","black");end
si= si+1; if Fct > 8613 and Fct < 8753 then FauxRect(si,Fct,58,95,191,71,0x55004C99,0x55004C99);
FauxBox(si,Fct,60,97,247,164,0xFF0080FF)
FauxText(si,Fct,64,100,"\"I FOUND THIS PLUNGER. \n\n HERE, USE IT TO MEET\n GYRO IN DUCKBURG.\" ","white",0X00000000);end
si= si+1; if Fct > 8862 and Fct < 9031 then FauxText(si,Fct,2,164,"Avoid this green block was not so hard..."); end
si= si+1; if Fct > 9030 and Fct < 9199 then FauxText(si,Fct,2,164,"...but this one still needs to be shot."); end
si= si+1; if Fct > 9272 and Fct < 9513 then FauxText(si,Fct,2,164,"Hit boxes are really useful sometimes, \nlike when Donald goes underground.");end
si= si+1; if Fct > 9512 and Fct < 9815 then FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue"); end
si= si+1; if Fct > 9816 and Fct < 9959 then FauxText(si,Fct,2,164,"How to go underground:\npress Up\+Down on ladders. "); end
si= si+1; if Fct > 9992 and Fct < 10257 then FauxText(si,Fct,2,164,"Trivia: Donald made his debut in the 1934 \nshort film \"The Wise Little Hen.\""); end
si= si+1; if Fct > 10284 and Fct < 10473 then FauxText(si,Fct,2,164,"Mexico: 168 frames saved. \nTotal : 354 frames ahead."); end
end
--Duckburg
si= si+1; if Fct > 10501 and Fct < 16144 then
if Hyt > 10000 then Hyt = 1; end
si= si+1; if Fct > 10502 and Fct < 10725 then FauxText(si,Fct,2,164,"Duckburg:\nHere Donald will take the \"Bubblegum Ammo.\" "); end
si= si+1; if Fct > 10758 and Fct < 11139 then FauxText(si,Fct,2,164,"One of the new tricks, the \"Long Jump,\" \nadds a lot of speed to Donald's jumps."); end
si= si+1; if Fct > 11138 and Fct < 11519 then FauxText(si,Fct,2,164,"But some times you can only do a normal \njump as it needs some room to perform."); end
si= si+1; if Fct > 11518 and Fct < 11724 then FauxText(si,Fct,2,164,"You must press C\+Down to Belly Slide, \njump and then hold C\+Down."); end
si= si+1; if Fct > 11756 and Fct < 12105 then FauxText(si,Fct,2,164,"There's a long zip-line section coming, \nand the only thing to do is hang on..."); end
si= si+1; if Fct > 12104 and Fct < 12361 then FauxText(si,Fct,2,164,"Um... what about that hit box again?\nIt'll sure make it more entertaining. ");end
si= si+1; if Fct > 12104 and Fct < 14583 then FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");end
si= si+1; if Fct > 12476 and Fct < 12755 then FauxText(si,Fct,2,164,"Ah, I've got something else to show; \nthe long jump seems to have a buffer.");end
si= si+1; if Fct > 12476 and Fct < 13245 then FauxText(si,Fct,Hxl-Scx,Hyb-Scy,"X:"..string.sub(Dsx,1,2).." ");end
si= si+1; if Fct > 12754 and Fct < 13037 then FauxText(si,Fct,2,164,"Donald jumped from the last zip-line \nwith a speed of 19."); end
si= si+1; if Fct > 13036 and Fct < 13245 then FauxText(si,Fct,2,164,"Now it's back to a normal zip-line \njumping speed of 15."); end
si= si+1; if Fct > 13293 and Fct < 13398 then FauxRect(si,Fct,59,17,191,87,0xFF660066,0xFF660066);
FauxBox(si,Fct,61,19,248,102,0xFFCC00CC)
FauxText(si,Fct,65,87," ","white","black");
FauxText(si,Fct,65,22,"\"DONALD, PLEASE TRY OUT\n MY NEW BUBBLEGUM AMMO.\n\n WITH IT, YOU CAN BREAK\n WALLS IN TRANSYLVANIA.\" ","white","black");end
si= si+1; if Fct > 13397 and Fct < 13573 then FauxRect(si,Fct,59,17,191,87,0x55660066,0x55660066);
FauxBox(si,Fct,61,19,248,102,0xFFCC00CC)
FauxText(si,Fct,65,22,"\"DONALD, PLEASE TRY OUT\n MY NEW BUBBLEGUM AMMO.\n\n WITH IT, YOU CAN BREAK\n WALLS IN TRANSYLVANIA.\" ","white",0x00000000);end
si= si+1; if Fct > 14300 and Fct < 14581 then FauxText(si,Fct,2,164,"There are two more stages with zip-lines, \nand I'll try to use that \"buffer\" again."); end
si= si+1; if Fct > 14740 and Fct < 14981 then FauxText(si,Fct,2,164,"Are you wondering why this ladder was \nnot used to go underground here?"); end
si= si+1; if Fct > 14980 and Fct < 15221 then FauxText(si,Fct,2,164,"It's not possible to reach the start\nof this stage doing the Ladder Trick. "); end
si= si+1; if Fct > 15220 and Fct < 15461 then FauxText(si,Fct,2,164,"Not really useful, but he can go to the \nzip-line section while down there."); end
si= si+1; if Fct > 15685 and Fct < 15949 then FauxText(si,Fct,2,164,"Trivia: Donald's full name is \n\"Donald Fauntleroy Duck.\""); end
si= si+1; if Fct > 15976 and Fct < 16143 then FauxText(si,Fct,2,164,"Duckburg: 149 frames saved. \nTotal : 503 frames ahead."); end
end
--Transylvania
si= si+1; if Fct > 16175 and Fct < 26188 then
Bss = mainmemory.read_u8(0x9039)
si= si+1; if Fct > 16176 and Fct < 16417 then FauxText(si,Fct,2,164,"Transylvania:\nHere Donald gets the \"Real Treasure Map.\" "); end
si= si+1; if Fct > 16416 and Fct < 16717 then FauxText(si,Fct,2,164,"Jump just to shoot an enemy was one \nof many mistakes of the old run."); end
si= si+1; if Fct > 16716 and Fct < 17017 then FauxText(si,Fct,2,164,"Now I'm trying to plan farther ahead \nand shoot whenever I have to jump."); end
si= si+1; if Fct > 17285 and Fct < 17443 then FauxRect(si,Fct,130,12,175,63,0xFF006600,0xFF006600);
FauxBox(si,Fct,132,14,303,73,0xFF66CC00)
FauxText(si,Fct,136,58," ","white","black");
FauxText(si,Fct,136,17,"\"WOW! THIS IS THE \n FAMOUS DRACULA'S\n CASTLE....\"\n ","white","black");end
si= si+1; if Fct > 17476 and Fct < 17777 then FauxText(si,Fct,2,164,"Pausing before a chat is older than \nthe old run, but it's still useful."); end
si= si+1; if Fct > 18236 and Fct < 18537 then FauxText(si,Fct,2,164,"There are places where it would just \nwaste time to avoid damage..."); end
si= si+1; if Fct > 18536 and Fct < 18837 then FauxText(si,Fct,2,164,"...but waiting here saves 15 frames \ncompared to taking damage."); end
si= si+1; if Fct > 18978 and Fct < 19191 then FauxText(si,Fct,2,164,"The Long Jump is even more effective \nunderwater. "); end
si= si+1; if Fct > 19426 and Fct < 19727 then FauxText(si,Fct,2,164,"Here's a place where it's easy to avoid \ntaking damage but it's not worth it."); end
si= si+1; if Fct > 20300 and Fct < 20541 then FauxText(si,Fct,2,164,"If you import the old run into BizHawk, \nyou'll get a desync at this point."); end
si= si+1; if Fct > 20540 and Fct < 20893 then FauxText(si,Fct,2,164,"There is much more lag in this stage now, \nbut I tried to reduce it when possible."); end
si= si+1; if Fct > 21584 and Fct < 21885 then FauxText(si,Fct,2,164,"The strategy used in this section comes \nfrom the RTA World Record of Quack Shot."); end
si= si+1; if Fct > 22130 and Fct < 22471 then FauxText(si,Fct,2,164,"The RTA runner jumps inside this wall and \nDonald zips to the end of this area."); end
si= si+1; if Fct > 22656 and Fct < 22957 then FauxText(si,Fct,2,164,"The drawback; he dies in the process... \nStill, faster than the old strategy."); end
si= si+1; if Fct > 23278 and Fct < 23369 then FauxText(si,Fct,2,164,"Boss: \nDracula. "); end
si= si+1; if Fct > 23400 and Fct < 23641 then FauxText(si,Fct,2,164,"Dracula: But enough talk... \nHave at you!"); end
si= si+1; if Fct > 23400 and Fct < 25535 then FauxRect(si,Fct,2,8,84,18,0xFFFF6666,0xFF660000);
FauxText(si,Fct,5,11,"Dracula: "..Bss.." ","white","black");end
si= si+1; if Fct > 23640 and Fct < 23921 then FauxText(si,Fct,2,164,"Donald: Die monster.\nYou don't belong in this world! "); end
si= si+1; if Fct > 25544 and Fct < 25675 then FauxRect(si,Fct,58,9,191,71,0xFF006600,0xFF006600);
FauxBox(si,Fct,60,11,247,78,0xFF66CC00)
FauxText(si,Fct,64,63," ","white","black");
FauxText(si,Fct,64,14,"\n DONALD TAKES THE REAL \n TREASURE MAP.\n\n","white","black");end
si= si+1; if Fct > 25708 and Fct < 25971 then FauxText(si,Fct,2,164,"Trivia: In the Kingdom Hearts series, \nDonald has the highest Magic stat."); end
si= si+1; if Fct > 26000 and Fct < 26187 then FauxText(si,Fct,2,164,"Transylvania: 603 frames saved. \nTotal : 1176 frames ahead."); end
end
--Maharajah
si= si+1; if Fct > 26219 and Fct < 31006 then
Tux = mainmemory.read_u16_be(0x90D0)
Tuy = mainmemory.read_u16_be(0x90D4)
Tup = mainmemory.read_u16_be(0x90C4)
if Tup < 2 then Tuh = 15 else Tuh = 1; end
Bss = mainmemory.read_u8(0x9038)
si= si+1; if Fct > 26220 and Fct < 26461 then FauxText(si,Fct,2,164,"Maharajah:\nHere Donald will get the \"Sphinx Tear.\" "); end
si= si+1; if Fct > 26460 and Fct < 26741 then FauxText(si,Fct,2,164,"As you can see, I won't collect all five \nPeppers here, just four of them."); end
si= si+1; if Fct > 26740 and Fct < 27021 then FauxText(si,Fct,2,164,"Why not? Well, the Peppers are not so \nuseful here as they were in Duckburg."); end
si= si+1; if Fct > 27020 and Fct < 27321 then FauxText(si,Fct,2,164,"And in Egypt they are pretty much useless \nsince the last one is almost at the end."); end
si= si+1; if Fct > 27404 and Fct < 27599 then FauxRect(si,Fct,130,11,175,79,0xFF006600,0xFF006600);
FauxBox(si,Fct,132,13,303,88,0xFF66CC00)
FauxText(si,Fct,136,73," ","white","black");
FauxText(si,Fct,136,17,"\"WOW! THIS IS THE \n BIG MAHARAJARA'S\n PALACE...\"\n\n ","white","black");end
si= si+1; if Fct > 27632 and Fct < 27827 then FauxText(si,Fct,2,164,"More hit box fun, \nfor every one!");
FauxBox(si,Fct,110,130,142,162,"red");end
si= si+1; if Fct > 27632 and Fct < 28757 then FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");end
si= si+1; if Fct > 27860 and Fct < 28095 then FauxText(si,Fct,2,164,"In most places jumping around ledges \nis slower than falling off of them."); end
si= si+1; if Fct > 28128 and Fct < 28349 then FauxText(si,Fct,2,164,"Shooting makes Donald's hit box smaller, \nbut it was overlooked in the old run.");
FauxBox(si,Fct,Tux-15-Scx,Tuy-15-Tuh-Scy,Tux+15-Scx,Tuy-Scy,"red");end
si= si+1; if Fct > 28383 and Fct < 28637 then FauxBox(si,Fct,144-Scx,464-Scy,176-Scx,460-Scy,"red");
FauxText(si,Fct,103-Scx,355-Scy,"a small hit box \n V")end
si= si+1; if Fct > 28790 and Fct < 29071 then FauxText(si,Fct,2,164,"Not using the Peppers in Maharajah forced \nme to find better ways to kill some foes."); end
si= si+1; if Fct > 29148 and Fct < 29243 then FauxText(si,Fct,2,164,"Boss:\nShere Khan. "); end
si= si+1; if Fct > 29274 and Fct < 29755 then FauxRect(si,Fct,2,8,105,18,0xFFFFB266,0xFFCC6600);
FauxText(si,Fct,5,11,"Shere Khan: "..Bss.." ","white","black");end
si= si+1; if Fct > 29274 and Fct < 29515 then FauxText(si,Fct,2,164,"Shere Khan: Did you think \nI would let you grow old?"); end
si= si+1; if Fct > 29514 and Fct < 29755 then FauxText(si,Fct,2,164,"Donald: You don't scare me! \nI don't run from anyone!");end
si= si+1; if Fct > 30301 and Fct < 30485 then FauxRect(si,Fct,64,11,191,71,0xFF990000,0xFF990000);
FauxBox(si,Fct,66,13,253,80,0xFFFF3333)
FauxText(si,Fct,70,65," ","white","black");
FauxText(si,Fct,70,16,"\"AS I PROMISED, I WILL \n GIVE YOU THE SPHINX\n TEAR.\"\n\n","white","black");end
si= si+1; if Fct > 30518 and Fct < 30781 then FauxText(si,Fct,2,164,"Trivia: In Finland, Donald's comics were \nbanned due to \"inappropriate clothing.\""); end
si= si+1; if Fct > 30810 and Fct < 31005 then FauxText(si,Fct,2,164,"Maharajah: 83 frames slower. \nTotal : 1093 frames ahead."); end
end
--Egypt
si= si+1; if Fct > 31035 and Fct < 38176 then
si= si+1; if Fct > 31036 and Fct < 31277 then FauxText(si,Fct,2,164,"Egypt:\nHere Donald will get the \"Scepter of Ra.\" "); end
si= si+1; if Fct > 31276 and Fct < 31557 then FauxText(si,Fct,2,164,"And here we are with a strategy that will \nput these Peppers to good use at last."); end
si= si+1; if Fct > 31742 and Fct < 32021 then FauxText(si,Fct,2,164,"The Long Jump was found here during \na \"play around\" to enter this door."); end
si= si+1; if Fct > 32054 and Fct < 32335 then FauxText(si,Fct,2,164,"By the way, you can not enter this door \nbefore the flag is set, not matter what."); end
si= si+1; if Fct > 32778 and Fct < 33059 then FauxText(si,Fct,2,164,"Here you can jump at the top of this \nladder, but in Mexico you can not."); end
si= si+1; if Fct > 33212 and Fct < 33493 then FauxText(si,Fct,2,164,"I almost forgot to say it, but shooting \nafter a Long Jump makes it even faster."); end
si= si+1; if Fct > 33492 and Fct < 33773 then FauxText(si,Fct,2,164,"So, if you see me shooting for no apparent \nreason, it is to gain that extra boost."); end
si= si+1; if Fct > 34212 and Fct < 34493 then FauxText(si,Fct,2,164,"It's also kinda late to say it, but it's \nnot possible to slide on steep slopes."); end
si= si+1; if Fct > 34492 and Fct < 34773 then FauxText(si,Fct,2,164,"And without a slide, it's impossible to \nstart a new Power Walk, unfortunately."); end
si= si+1; if Fct > 35570 and Fct < 35667 then FauxText(si,Fct,2,164,"How to Power Walk:\nPress C\+Down then Up\+Down\+Right\+A\+C "); end
si= si+1; if Fct > 35905 and Fct < 35911 then FauxRect(si,Fct,60,16,191,71,0xFF006600,0xFF006600);
FauxBox(si,Fct,62,18,249,85,0xFF66CC00)
FauxText(si,Fct,66,70," ","white","black");
FauxText(si,Fct,66,21,"\n DONALD GETS THE \n SCEPTER OF RA.\n\n","white","black");end
si= si+1; if Fct > 35910 and Fct < 36135 then FauxRect(si,Fct,60,16,191,71,0x55006600,0x55006600);
FauxBox(si,Fct,62,18,249,85,0xFF66CC00)
FauxText(si,Fct,66,21,"\n DONALD GETS THE\n SCEPTER OF RA.","white",0x00000000);end
si= si+1; if Fct > 36494 and Fct < 36795 then FauxText(si,Fct,2,164,"Wow, Egypt is a huge stage! The Hideout \nis longer, but there we have a boss..."); end
si= si+1; if Fct > 37220 and Fct < 37519 then FauxText(si,Fct,2,164,"If you go slower at the end Donald starts \na death animation but doesn't lose a life."); end
si= si+1; if Fct > 37696 and Fct < 37959 then FauxText(si,Fct,2,164,"Trivia: Donald has black eyes and \nsuffers from color blindness."); end
si= si+1; if Fct > 37986 and Fct < 38175 then FauxText(si,Fct,2,164,"Egypt: 696 frames saved.\nTotal: 1789 frames ahead."); end
end
--Southpole
si= si+1; if Fct > 38205 and Fct < 39810 then
si= si+1; if Fct > 38206 and Fct < 38447 then FauxText(si,Fct,2,164,"South Pole:\nHere donald will take the \"Viking Key.\" "); end
si= si+1; if Fct > 38446 and Fct < 38727 then FauxText(si,Fct,2,164,"Another small stage full of improvements; \na lot more damage was taken, for example."); end
si= si+1; if Fct > 38726 and Fct < 39007 then FauxText(si,Fct,2,164,"The trick to collect the Viking Key and \ncall the Airplane was also improved."); end
si= si+1; if Fct > 39491 and Fct < 39599 then FauxRect(si,Fct,58,12,191,71,0xFF006600,0xFF006600);
FauxBox(si,Fct,60,14,247,81,0xFF66CC00)
FauxText(si,Fct,64,66," ","white","black");
FauxText(si,Fct,64,17," DONALD TAKES THE \n VIKING KEY.\n\n\n","white","black");end
si= si+1; if Fct > 39626 and Fct < 39809 then FauxText(si,Fct,2,164,"South Pole: 113 frames saved.\nTotal : 1902 frames ahead."); end
end
--Viking Ship
si= si+1; if Fct > 39839 and Fct < 45694 then
Bss = mainmemory.read_u8(0x92A1)
Pla = mainmemory.read_s16_be(0x90D4)-16
si= si+1; if Fct > 39840 and Fct < 40081 then FauxText(si,Fct,2,164,"Viking Ship:\nHere Donald will take the \"Green Plunger.\" "); end
si= si+1; if Fct > 40080 and Fct < 40361 then FauxText(si,Fct,2,164,"Plungers... not the best ammo of the game, \nthen, why is it the most used one?"); end
si= si+1; if Fct > 40360 and Fct < 40641 then FauxText(si,Fct,2,164,"The reason is pretty simple; it's not \npossible to manipulate enemy drops."); end
si= si+1; if Fct > 40800 and Fct < 41081 then FauxText(si,Fct,2,164,"Gunshots interupt some of the other sound \neffects, but the opposite is also true."); end
si= si+1; if Fct > 41594 and Fct < 41875 then FauxText(si,Fct,2,164,"Remember the speed buffer? It's impossible \nto use it here, but I'll keep trying."); end
si= si+1; if Fct > 41990 and Fct < 42271 then FauxText(si,Fct,2,164,"Some platforms drop your speed to zero. \nYou must slowdown a bit to avoid it.");
FauxText(si,Fct,2629-Scx,Pla-Scy,"STOP!");end
si= si+1; if Fct > 42412 and Fct < 42557 then FauxText(si,Fct,2,164,"Hit boxes, again? ");
FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");
FauxBox(si,Fct,314-Scx,130,330-Scx,176,"red");end
si= si+1; if Fct > 42720 and Fct < 43001 then FauxText(si,Fct,2,164,"I have been saving Popcorn Ammo for some \ntime and it's time to find out why."); end
si= si+1; if Fct > 43286 and Fct < 43369 then FauxText(si,Fct,2,164,"Boss:\nViking Ghost."); end
si= si+1; if Fct > 43402 and Fct < 44931 then FauxRect(si,Fct,2,8,120,18,0xFFC0C0C0,0xFF606060);
FauxText(si,Fct,5,11,"Viking Ghost: "..Bss.." ","white","black");end
si= si+1; if Fct > 43402 and Fct < 43683 then FauxText(si,Fct,2,164,"Viking Ghost:\nLet another's wounds be your warning. "); end
si= si+1; if Fct > 43682 and Fct < 43963 then FauxText(si,Fct,2,164,"Donald:\nOverconfidence has brought many to death. "); end
si= si+1; if Fct > 45104 and Fct < 45477 then FauxRect(si,Fct,62,24,191,87,0xFF990000,0xFF990000);
FauxBox(si,Fct,64,26,251,109,0xFFFF3333)
FauxText(si,Fct,68,94," ","white","black");
FauxText(si,Fct,68,29,"\"WITH THIS PLUNGER,\n THE CHASM NEAR THE\n SOUTH POLE SHALL NOT\n STOP YOU FROM FINDING \n THE VIKING DIARY.\"","white","black");end
si= si+1; if Fct > 45502 and Fct < 45693 then FauxText(si,Fct,2,164,"Viking Ship: 220 frames saved.\nTotal : 2122 frames ahead."); end
end
--South Pole
si= si+1; if Fct > 45725 and Fct < 99999 then
si= si+1; if Fct > 45726 and Fct < 45921 then FauxText(si,Fct,2,164,"South Pole:\nHere Donald will take the \"Viking Diary.\" "); end
si= si+1; if Fct > 45954 and Fct < 46255 then FauxText(si,Fct,2,164,"The Long Jump buffer, as one would expect, \ndoesn't work with Green Plungers."); end
si= si+1; if Fct > 46254 and Fct < 46555 then FauxText(si,Fct,2,164,"In any case, it's a good idea to grab the \nPlunger as high as you possibly can."); end
si= si+1; if Fct > 46554 and Fct < 46855 then FauxText(si,Fct,2,164,"Why? Well, that's the height you're going \nto release the Plunger no matter what."); end
si= si+1; if Fct > 46854 and Fct < 47135 then FauxText(si,Fct,2,164,"I'll freeze his hit box at the position \nhe will release it as an example.");end
si= si+1; if Fct > 47134 and Fct < 47415 then FauxText(si,Fct,2,164,"If I jump, take damage or go all the way\ndown, Donald appears at the green square. ");end
si= si+1; if Fct > 46854 and Fct < 48355 then FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");end
si= si+1; if Fct > 46854 and Fct < 48299 then FauxBox(si,Fct,Hxl-Scx,330-Scy,Hxr-Scx,314-Scy,"green");end
si= si+1; if Fct > 48382 and Fct < 48491 then FauxText(si,Fct,2,164,"How to Get Low:\nPress Up\+Down on Birds. "); end
si= si+1; if Fct > 48522 and Fct < 48803 then FauxText(si,Fct,2,164,"Here comes a barrage of Long Jumps! \nI'll shut up for a while, enjoy. "); end
si= si+1; if Fct > 50032 and Fct < 50313 then FauxText(si,Fct,2,164,"New South Pole skip strategy, and again, \nit's from the RTA World Record."); end
si= si+1; if Fct > 50544 and Fct < 50550 then FauxRect(si,Fct,64,9,191,71,0xFF006600,0xFF006600);
FauxBox(si,Fct,66,11,253,78,0xFF66CC00)
FauxText(si,Fct,70,63," ","white","black");
FauxText(si,Fct,70,14,"\n DONALD TAKES THE \n VIKING DIARY.\"\n\n","white","black");end
si= si+1; if Fct > 50549 and Fct < 50752 then FauxRect(si,Fct,64,9,191,71,0x55006600,0x55006600);
FauxBox(si,Fct,66,11,253,78,0xFF66CC00)
FauxText(si,Fct,70,14,"\n DONALD TAKES THE \n VIKING DIARY.\"\n\n","white",0X00000000);end
si= si+1; if Fct > 51135 and Fct < 51401 then FauxRect(si,Fct,103,7,215,79,0xFF990000,0xFF990000);
FauxBox(si,Fct,105,9,316,84,0xFFFF3333)
FauxText(si,Fct,108,68," ","white","black");
FauxText(si,Fct,108,12,"\"DONALD, IF YOU WANT TO\n SAVE YOUR NEPHEWS, YOU'D \n BETTER GIVE ME THAT\n TREASURE MAP AND DIARY!\"\n ","white","black");
FauxLine(si,Fct,315,10,315,83,0xFF990000);
FauxLine(si,Fct,314,10,314,83,0xFF990000);end
si= si+1; if Fct > 51498 and Fct < 51671 then FauxText(si,Fct,2,164,"South Pole: 203 frames saved.\nTotal : 2325 frames ahead."); end
end
--Hideout
si= si+1; if Fct > 51703 and Fct < 99999 then
Bss = mainmemory.read_u8(0x90F9)
si= si+1; if Fct > 51704 and Fct < 51945 then FauxText(si,Fct,2,164,"Hideout:\nHere Donald gets back the \"Viking Diary.\" "); end
si= si+1; if Fct > 51944 and Fct < 52225 then FauxText(si,Fct,2,164,"That's right, Donald won't get the \n\"Map\" back as Pete has promised..."); end
si= si+1; if Fct > 52224 and Fct < 52505 then FauxText(si,Fct,2,164,"...otherwise it would be possible to go \nback to \"Duckburg,\" for example."); end
si= si+1; if Fct > 52798 and Fct < 53079 then FauxText(si,Fct,2,164,"Like in South Pole, Donald releases the \nPlunger as high as he grabbed it.");end
si= si+1; if Fct > 52798 and Fct < 53181 then FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");
FauxText(si,Fct,Hxl-Scx,Hyb-Scy,"H:"..Dpy.." ");end
si= si+1; if Fct > 53280 and Fct < 53561 then FauxText(si,Fct,2,164,"It's possible to shoot upward and keep \nall your speed while doing so."); end
si= si+1; if Fct > 53560 and Fct < 53841 then FauxText(si,Fct,2,164,"This is a pretty basic trick, but I just \nfound it at this point in the run."); end
si= si+1; if Fct > 53866 and Fct < 53959 then FauxText(si,Fct,2,164,"How to Shoot Up:\nPress Right\+A\+B\+C then Up\+Down\+C "); end
si= si+1; if Fct > 53994 and Fct < 54275 then FauxText(si,Fct,2,164,"The physics of these mine carts and how \nit messes with Donald's speed is crazy."); end
si= si+1; if Fct > 53994 and Fct < 54581 then FauxText(si,Fct,Hxl-Scx,Hyb-Scy,"X:"..string.sub(Dsx,1,2).." ");
FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");end
si= si+1; if Fct > 54734 and Fct < 55015 then FauxText(si,Fct,2,164,"Thanks to faster movements, one phase of \nthese moving platforms is now skipped."); end
si= si+1; if Fct > 55014 and Fct < 55295 then FauxText(si,Fct,2,164,"Something I have tried for quite some time \nin the old run, but couldn't make happen."); end
si= si+1; if Fct > 56120 and Fct < 56401 then FauxText(si,Fct,2,164,"There are Big Bad Pete faces everywhere.\nI wonder what \"B.B.P\" stands for though... "); end
si= si+1; if Fct > 56932 and Fct < 57213 then FauxText(si,Fct,2,164,"The muscle bound thugs are invincible, \nso it's faster to just take damage."); end
si= si+1; if Fct > 99999 and Fct < 99999 then FauxText(si,Fct,2,164,""); end
si= si+1; if Fct > 99999 and Fct < 99999 then FauxText(si,Fct,2,164,""); end
si= si+1; if Fct > 57240 and Fct < 57339 then FauxText(si,Fct,2,164,"Boss:\nBig Bad Pete. "); end
si= si+1; if Fct > 57646 and Fct < 61031 then FauxRect(si,Fct,2,8,120,18,0xFF0080FF,0xFF0000CC);
FauxText(si,Fct,5,11,"Big Bad Pete: "..Bss.." ","white","black");end
si= si+1; if Fct > 57400 and Fct < 57647 then FauxRect(si,Fct,63,10,191,71,0xFF60000CC,0xFF0000CC);
FauxBox(si,Fct,65,12,252,79,0xFF0080FF)
FauxText(si,Fct,69,64," ","white","black");
FauxText(si,Fct,69,15,"\"IF YOU DEFEAT ME,\n I'LL GIVE YOU THE MAP \n AND THE VIKING DIARY.\n HA,HA,HA...\"\n","white","black");end
si= si+1; if Fct > 57646 and Fct < 57926 then FauxText(si,Fct,2,164,"Donald: You won't trick me, Pete! \nI know you don't have any map. "); end
si= si+1; if Fct > 61176 and Fct < 61429 then FauxText(si,Fct,2,164,"Hideout: 321 frames saved.\nTotal : 2646 frames ahead."); end
si= si+1; if Fct > 99999 and Fct < 99999 then FauxText(si,Fct,2,164,""); end
end
--The Island
si= si+1; if Fct > 61461 and Fct < 69716 then
Bss = mainmemory.read_u8(0x9079)
si= si+1; if Fct > 61462 and Fct < 61703 then FauxText(si,Fct,2,164,"The Island:\nHere Donald finally beats \"The Guardian.\" "); end
si= si+1; if Fct > 61702 and Fct < 61983 then FauxText(si,Fct,2,164,"When a video of a guy beating him in one \nphase was shown, little detail was given."); end
si= si+1; if Fct > 61982 and Fct < 62263 then FauxText(si,Fct,2,164,"It was all figured out and explained much \nlater, after the old run was published."); end
si= si+1; if Fct > 62262 and Fct < 62543 then FauxText(si,Fct,2,164,"Now, imagine how frustrating it is to know \nthat your TAS is not on par with an RTA...");end
si= si+1; if Fct > 62542 and Fct < 62823 then FauxText(si,Fct,2,164,"Please don't get me wrong, I'm not saying \n\"TASes must be better,\" no, it's not it."); end
si= si+1; if Fct > 62822 and Fct < 63103 then FauxText(si,Fct,2,164,"But since it uses all sorts of tools, \nit should at a very least be faster."); end
si= si+1; if Fct > 63580 and Fct < 63861 then FauxText(si,Fct,2,164,"Here comes the last zip-line of the game. \nIt's now or never for that buffer..."); end
si= si+1; if Fct > 63744 and Fct < 64027 then FauxBox(si,Fct,Hxl-Scx,Hyt-Scy,Hxr-Scx,Hyb-Scy,"blue");
FauxText(si,Fct,Hxl-Scx,Hyb-Scy,"X:"..string.sub(Dsx,1,2).." ");end
si= si+1; if Fct > 64026 and Fct < 64307 then FauxText(si,Fct,2,164,"It worked! Long Jumps do have a buffer \nif you can grab a zip-line afterwards."); end
si= si+1; if Fct > 64440 and Fct < 64721 then FauxText(si,Fct,2,164,"Earlier I said; \"to the left is faster,\"\nbut how much faster is it anyway?"); end
si= si+1; if Fct > 64720 and Fct < 65001 then FauxText(si,Fct,2,164,"It's so fast I can reach the last platform \nbefore it goes to the right this time."); end
si= si+1; if Fct > 65000 and Fct < 65325 then FauxText(si,Fct,2,164,"Here's an estimate of the maximum speeds: \nto the Right: 31, to the Left: 37!"); end
si= si+1; if Fct > 65460 and Fct < 65735 then FauxText(si,Fct,2,164,"What lies ahead is a good example of how \nTAS and RTA can benefit from each other."); end
si= si+1; if Fct > 65896 and Fct < 66177 then FauxText(si,Fct,2,164,"Guardian:\nYou're strangely dressed, for a knight. "); end
si= si+1; if Fct > 66176 and Fct < 66457 then FauxText(si,Fct,2,164,"Donald:\nA knight? What do you mean? "); end
si= si+1; if Fct > 65762 and Fct < 65863 then FauxText(si,Fct,2,164,"Boss:\nGuardian. "); end
si= si+1; if Fct > 65896 and Fct < 69221 then FauxRect(si,Fct,2,8,91,18,0xFFCC99FF,0xFF4C0099);
FauxText(si,Fct,5,11,"Guardian: ","white","black");
FauxText(si,Fct,70,11,Bss);end
si= si+1; if Fct > 69230 and Fct < 69471 then FauxRect(si,Fct,60,9,191,71,0xFF4C0099,0xFF4C0099);
FauxBox(si,Fct,62,12,249,78,0xFFCC99FF)
FauxText(si,Fct,66,63," ","white","black");
FauxText(si,Fct,66,15,"\"FINALLY, SOMEONE WHO \n IS WORTHY OF THE\n TREASURE.\"\n\n","white","black");end
si= si+1; if Fct > 69470 and Fct < 69715 then FauxRect(si,Fct,60,9,191,71,0xFF006600,0xFF006600);
FauxBox(si,Fct,62,12,249,78,0xFF66CC00)
FauxText(si,Fct,66,63," ","white","black");
FauxText(si,Fct,66,15,"\"OH MY GOSH! IT IS\n JUST A PLAIN STONE \n FIGURINE OF A DUCK\n PRINCESS!!\"\n","white","black");end
end
--Credits
si= si+1; if Fct > 72023 and Fct < 76980 then
si= si+1; if Fct > 72024 and Fct < 75899 then FauxText(si,Fct,2,144,"\n\n\n\n\n ","white","black"); end
si= si+1; if Fct > 72024 and Fct < 75899 then FauxText(si,Fct,92,156,"SPECIAL THANKS TO:"); end
si= si+1; if Fct > 72024 and Fct < 72447 then FauxText(si,Fct,15,170,"\t mklip2001 \nFor bringing this game to my attention."); end
si= si+1; if Fct > 72504 and Fct < 72927 then FauxText(si,Fct,14,170,"\t\t Mitjitsu \nFor pointing out the Final Boss Glitch \n and sugesting the use of sub pixels."); end
si= si+1; if Fct > 73014 and Fct < 73437 then FauxText(si,Fct,14,170,"\t\t sicanjal \nFor figuring out the Final Boss Glitch."); end
si= si+1; if Fct > 73494 and Fct < 73917 then FauxText(si,Fct,30,170,"\t\t PPLToast \nFor his Wall Trick in Transylvania.\n \n "); end
si= si+1; if Fct > 74006 and Fct < 74429 then FauxText(si,Fct,37,170,"\t FatRatKnight\nFor his tutorial about sub pixels.\n \n "); end
si= si+1; if Fct > 74486 and Fct < 74909 then FauxText(si,Fct,36,170,"\t\tmarzojr \nFor sharing his memory addresses."); end
si= si+1; if Fct > 74996 and Fct < 75419 then FauxText(si,Fct,21,170,"\t\t Reeve \n For support on the forum and\nsuggestions of possible improvements."); end
si= si+1; if Fct > 75476 and Fct < 75899 then FauxText(si,Fct,66,170,"\t Evil_3D \nFor support on the forum.\n "); end
si= si+1; if Fct > 75996 and Fct < 76277 then FauxText(si,Fct,51,156,"Tool Assisted Submission Text\n\t by Dooty"); end
si= si+1; if Fct > 76276 and Fct < 76979 then FauxText(si,Fct,73,156,"Thank you for watching,\nand see you next time!");end
end
Finalize(Fct)
if Fct > 80000 then CloseScript() end
emu.frameadvance();
end