Reviewer, Active player (277)
Joined: 12/14/2006
Posts: 717
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
This version ought to be easier for creating a full comparison clip:
global clip1 = Open("a.avi", "author clip1")
global clip2 = Open("b.avi", "author clip2")

global FrameDiff = 0
global FrameGain = 0
global final     = false

Section(   0,  362,    0,  360)
Section(1829, 2578, 1829, 2515)
# ...

final




function AddBlankClip(clip clip1, clip clip2)  {
        max = Max(clip1.FrameCount, clip2.FrameCount)
        return (clip1.FrameCount != max)  ?  (clip1 + BlankClip(clip1, length=max-clip1.FrameCount)).FreezeFrame(clip1.FrameCount, max - 1, clip1.FrameCount - 1)  :  clip1
}


function Format(clip old, clip new)  {
        left  = AddBlankClip(old, new)
        right = AddBlankClip(new, old)
        AudioDub(StackHorizontal(left, right), MixAudio(left, right, 1.0, 0.0))
        Subtitle("Frames gained: " + String(FrameGain, "%.0f") + " (" + String(FrameDiff, "%05.0f") + ")", align=2, size=10)
}


function FormatTime(int ms)  {
        s  = ms / 1000
        ms = ms % 1000
        m  = s  / 60
        s  = s  % 60
        h  = m  / 60
        m  = m  % 60
        String(m, "%02.0f") + ":" + String(s, "%02.0f") + "." + String(ms, "%03.0f")
}


function Open(string FileName, string Title)  {
        v = DSS2(FileName).ConvertToRGB32
        a = DirectShowSource(FileName, video=false)
        AudioDub(v, a)
        PointResize(Width * 2, Height * 2)
        AddBorders(0, 20, 0, 20)
        Subtitle(Title, align=2, text_color=$00FFFFFF)
        ScriptClip("""Subtitle("Frame: " + String(current_frame) + "\nTime: " + FormatTime(Round(Float(current_frame * 1000) * Float(FrameRateDenominator) / Float(FrameRateNumerator))), text_color=$00FFFFFF, lsp=1, size=10.0)""")
        ConvertToYV24(matrix="PC.601", chromaresample="point"   )
        ConvertToYV12(matrix="PC.601", chromaresample="lanczos4")
}


function Section(int clip1_a, int clip1_b, int clip2_a, int clip2_b)  {
        old              = clip1.Trim(clip1_a, clip1_b)
        new              = clip2.Trim(clip2_a, clip2_b)
        tmp              = Format(old, new)
        global final     = IsBool(final)  ?  tmp  :  final + tmp
        global FrameDiff = old.FrameCount - new.FrameCount
        global FrameGain = FrameGain + FrameDiff
}
Joined: 7/30/2011
Posts: 129
Location: Watching a TAS in the basement...
If this is going to be the huge project I think it is, I'll add a subpage to my homepage displaying which videos are on YouTube. BTW, if you need help with Famtasia, I'm actually pretty good with it. If you need help, just let me know. ;)
I am the future ruler of the world! My forum: http://elderyoshisisland.forumotion.com/
Site Admin, Skilled player (1237)
Joined: 4/17/2010
Posts: 11274
Location: RU
I can deliver a script for FCEUX that allows recording input to AVI (2.1.6 will have an inbuilt HUD recorder). You can move input display to any comfortable place. http://pastebin.com/u/feos Unfortunately, I don't know how to customuze FCEUX-InputDisplay.lua for old FCEU. Also, display works as in 2.1.5. In older versions it would be shifted (so just fix some lines).
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 7/30/2011
Posts: 129
Location: Watching a TAS in the basement...
It says there is no function called DSS2.
I am the future ruler of the world! My forum: http://elderyoshisisland.forumotion.com/
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
DSS2 is part of Haali's media splitter, which can be installed separately or with CCCP. Just copy avss.dll to your Avisynth plugins folder.
Reviewer, Active player (277)
Joined: 12/14/2006
Posts: 717
So this was my idea for how to handle games like Megaman where the levels can be chosen in any order, but they all have to be played. What do you think? Does it work? Is it too confusing?
Publisher
Joined: 4/23/2009
Posts: 1283
Nah, that sounds reasonable. After all, how do you compare if the levels are different?
Joined: 7/30/2011
Posts: 129
Location: Watching a TAS in the basement...
Lol, I like how at the end of every screen, one Mega Man just pauses to wait for the other. :D @creothecann: Thanks! I'll try that when School's over today.
I am the future ruler of the world! My forum: http://elderyoshisisland.forumotion.com/
Joined: 7/30/2011
Posts: 129
Location: Watching a TAS in the basement...
Agh! VDub hates me! It gives me the file path and then the number 80040154. There's nothing wrong with the path, so what does that mean?
I am the future ruler of the world! My forum: http://elderyoshisisland.forumotion.com/
Reviewer, Active player (277)
Joined: 12/14/2006
Posts: 717
http://www.youtube.com/watch?v=7ZLI4EL7lUs This posed a few problems for me with the simulation sections. I'm not sure I found the best solution for sync points, but it was the best I could think of. If anyone has a better suggestion for what to use, please let me know. Also, this is the only one so far where popping is noticeable. Not sure how I can fix that. EDIT: Nevermind, I decided to actually open up the audio file in audacity and manually go through the process of eliminating the pops. Let me know if you'd like new sync points. EDIT2: Updated video
Publisher
Joined: 4/23/2009
Posts: 1283
TASManiac wrote:
Agh! VDub hates me! It gives me the file path and then the number 80040154. There's nothing wrong with the path, so what does that mean?
Did you find a solution to this?
Joined: 7/30/2011
Posts: 129
Location: Watching a TAS in the basement...
No
I am the future ruler of the world! My forum: http://elderyoshisisland.forumotion.com/
Publisher
Joined: 4/23/2009
Posts: 1283
Well if you still need help, I would prefer you contact me via IRC.