Posts for creaothceann


creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
dotchan wrote:
How "pacifist" can a TAS be in Super Metroid?
That would be glitching into the room behind Mother Brain.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
The source is available, so someone could add splitting...
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Because sprites are loaded during (or at the end of) the previous line, there would be no sprites on the very first line. The SNES "fixes" that by not rendering the first line of backgrounds either. Games either ignore that completely, or compensate by setting the vertical scrolling registers so that the first line becomes visible again. Maybe you could do something with LUA by intercepting and modifying writes to these registers, but that's just a guess.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Well, at least here's the layer function:
emu.setrenderplanes
    void emu.setrenderplanes(bool plane1, bool plane2, [bool plane3], [bool plane4]) 
    Toggles the drawing of sprites and background planes. Set to false or nil to disable a pane, anything else will draw them.
The SNES would need more than 4 booleans though.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
A game with gameplay-altering cheats is simply a different game, i.e. treat it the same as hacks imo.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Yeah... writing scripts means you don't have to wait for new BizHawk binaries, and can quickly try ideas.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Painful... Link to video
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
OK, I'll upload an encode (video=CRF20; audio=245kbps MP3) but it'll take at least 2 hours. The parts will appear here: http://www.mediafire.com/?jb2ug99f8nlky EDIT: Done.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Maybe making this via LUA scripts would be more comfortable for everybody?
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
A 1000 kbit/s file would be ~900MB...
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
...watch it in parts then?
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Some ideas: 1. A checkbox in the "Choose A/V writer" dialog to write only every 2nd frame, and set the frame rate to half the current rate. This would save some time and space for encoding Youtube videos that don't require Deblink/TASBlend (although the uploader would still have to set the frame rate to 30 and adjust the audio). 2. As above, but also set the frame rate to exactly 30 and the audio rate to round(default_audiorate * 60 / default_fps). 3. Also, SNES audio is currently recorded at 44.1kHz. Wouldn't 32, 48 or 96kHz be better?
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
The left one has lots of action, though the right one shows what makes this TAS so special...
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Aktan wrote:
There is a need for certain systems that do support higher resolutions like N64.
I meant that 480p can be upscaled to 960p and then expanded to 1080p with black bars.
nanogyth wrote:
creaothceann wrote:
Then I guess I'd still use the smaller size:
Those numbers were for only 1000 frames. My upload speed with tvcman caps out ~250kbps.
I see...
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Then I guess I'd still use the smaller size:
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
That's indeed counter-intuitive... By the way, was the encoding time similarly related?
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
What would you do if the game uses color math (i.e. transparencies)? The SNES calculates 512 color values per line, 256 for "main screen" and 256 for "sub screen". When color math is disabled it shows only mainscreen pixels, otherwise it adds/subtracts a color constant or the subscreen pixel. (Optionally the result can then be halved.) Both screens can be configured to show only specific layers (BGs or sprites), and this can be changed line-by-line. (in hi-res modes it shows all 512 pixels per line)
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
As someone who has written vSNES... no chance. Use SRAM files to exchange progress from one emulator (version) to another emulator (version).
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
JohnnyG wrote:
It looks like Youtube HD encodes can get really big in file size, which might be a problem because the Youtube file size limit is 20gig.
You can always split the video into several YT parts. To be honest I don't see the need for higher resolutions than 720p (native resolution = 240p) or 1080p (native resolution = 480p; use PointResize 2x first). The most important thing is to avoid YT's 480p mode which degrades quality too much.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
SmashManiac wrote:
if you need an exception to the rule, why have the rule in the first place?
Every rule has exceptions.
Post subject: Re: Muxing from TAS Encoder Package
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Just saw this:
joel96 wrote:
After a video is run through the Hybrid Encoder, a .ogg file is created in the "temp" folder that contains the audio from the video dump. The rate is 49716. I recorded test audio with Audacity and saved it at the same rate as an .ogg. I downloaded the most recent version of AVISynth and MeGUI. When I try to run a script merging the two files from within the MeGUI environment (or from within VirtualDubMod), it says it cannot open the sample .ogg file. AVISynth's wiki says that it requires a third party library and plugin set to mix .ogg audio files. I downloaded BASS, but can't figure out where to place the libraries for use by AVISynth.
Just convert it to WAV.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
Assuming you have a PSXjin dump saved under the name "test", you get these files:
000_test.avi
001_test-640x480.avi
002_test-368x216.avi
003_test-320x224.avi
...
000_test.wav
This will load all of them... (unfortunately it can get very slow when the resolutions become very large):
Open_PSXjin("test")
# BilinearResize(1024, 768)    # final resolution
# FlipVertical                 # may be necessary with some codecs
last




function Open_PSXjin(string Name)  {
        Base  = "000_" + Name
        Video = DSS2(Base + ".avi")
        Video = PSXjin_FindSegmentFile(Video, 1, "_" + Name + "-")
        Audio = WAVSource(Base + ".wav")
        AudioDub(Video, Audio)
}


function PSXjin_FindSegmentFile(clip Video, int Index, string Name)  {
        s = String(Index, "%03.0f") + Name
        f = PSXjin_FindSegmentFileX(s, 256)
        return (f != "")  ?  Video.PSXjin_AddSegment(f).PSXjin_FindSegmentFile(Index + 1, Name)  :  Video
}


function PSXjin_FindSegmentFileX(string Base, int x)  {
        s = Base + String(x, "%03.0f") + "x"
        f = PSXjin_FindSegmentFileY(s, 216)
        return (f != "")  ?  f
        \:     (x < 640)  ?  PSXjin_FindSegmentFileX(Base, x + 16)
        \:     ""
}


function PSXjin_FindSegmentFileY(string Base, int y)  {
        s = Base + String(y, "%03.0f") + ".avi"
        return Exist(s)   ?  s
        \:     (y < 480)  ?  PSXjin_FindSegmentFileY(Base, y + 8)
        \:     ""
}


function PSXjin_AddSegment(clip Video, string FileName)  {
        v1 = Video
        v2 = DSS2(FileName)
        x  = LCM(v1.Width , v2.Width )
        y  = LCM(v1.Height, v2.Height)
        return v1.PointResize(x, y)
        \+     v2.PointResize(x, y)
}


################################ tools ################################


function LCM(int a, int b)  {
        # Least Common Multiple
        # en.wikipedia.org/wiki/Least_common_multiple#Computing_the_least_common_multiple
        Assert(a > 0, "LCM: a must be greater than zero")
        Assert(b > 0, "LCM: b must be greater than zero")
        return (a * b) / GCD(a, b)
}


function GCD(int u, int v)  {
        # Greatest Common Divisor
        # en.wikipedia.org/wiki/Binary_GCD_algorithm#Recursive_version_in_C
        Assert(u > 0, "GCD: u must be greater than zero")
        Assert(v > 0, "GCD: v must be greater than zero")
        return (u == v)           ?  u
        \:     (u == 0)           ?  v
        \:     (v == 0)           ?  u
        \:     even(u) && odd(v)  ?  GCD((u    ) / 2, v    )
        \:     even(u)            ?  GCD((u    ) / 2, v / 2) * 2
        \:     even(v)            ?  GCD((u    )    , v / 2)
        \:     (u > v)            ?  GCD((u - v) / 2, v    )
        \:                           GCD((v - u) / 2, u)
}


function even(int i)  {return ((i % 2) == 0)}
function odd (int i)  {return ((i % 2) == 1)}
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
nanogyth wrote:
The number of files is limited to ~50 by "video for windows".
Even with DSS2?
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
For lots of files this will be better to copy&paste:
Language: avisynth

x = 360 y = 240 ( \ AVISource("00_01.avi").LancozResize(x, y) + \ AVISource("00_02.avi").LancozResize(x, y) + \ AVISource("00_03.avi").LancozResize(x, y) + \ AVISource("00_04.avi").LancozResize(x, y) \).AudioDub(WAVSource("audio.wav"))
("00_x" = parts of encode 0, "01" = encode 1, etc.) Alternatively it would be possible to find the least common multiple of each dimension, use PointResize to upscale to that resolution, then downscale with Biliniear/Lancoz.
creaothceann
He/Him
Editor, Experienced Forum User
Joined: 4/7/2005
Posts: 1874
Location: Germany
AngerFist wrote:
What good does it do if you convert an smw file to bkm other than making it compatible for Bizhawk? I find it hard to believe Bizhawk magically inserts proper console emulated frames and whatnot after converting.
Yeah... There is the possibility that the TAS completes the game even though the emulation is different. There is no way of knowing if the TAS could've been shortened unless it's redone on newer emulation.
Derakon wrote:
Presumably as long as SNES9x or whatever emulates the game as accurately as BizHawk does, you should be able to freely convert movie formats without getting desyncs.
But there's no way to be sure. The point of using BizHawk is to remove all uncertainty; even the timing of the different cores won't have an effect on games any more by now.
AngerFist wrote:
I remember Herooftheday said Snes9x v 1.52 emulates Super Metroid slightly better than Bizhawk.
It sounds very questionable. BTW. here's a lossy encode (~100MB): http://www.mediafire.com/?mdzf94ndlrciuzw