Posts for SatoshiLyish

Experienced Forum User
Joined: 3/14/2005
Posts: 43
Aktan wrote:
The param there won't hurt it like Johannes found out. x264 just ignores it. Flygon should know very well by now that it isn't really lossless since I've been drilling that into him. XD
Well, I wasn't sure whether it ignored the command or not. You can never be too sure with programmer's implementation..But in terms of script efficiency, B frames shouldn't even be mentioned if its a lossless encode.
moozooh wrote:
Well, it's not that they're limited, it's just the established convention. We often increase the encode's resolution on games that can be rendered at higher resolution with no fidelity loss (most N64 games, for example). Still, even without doublescaling it's not at all pointless to convert to YV12 lossless as an intermediary step for several reasons: 1) it makes editing and processing easier (no need to pipe the emulator output several times in a row, especially in case with N64 games rendered at high resolution); 2) it allows for higher-quality streaming encodes on YT and other sites.
Oh, well if published runs have doubled the resolution on some occasion, I guess I shouldn't be too concerned about that guideline. As for master encoding before the final process, I now use FFV1 (Final Fantasy VI anyone? ^^) in RGB32 mode, thanks to the suggestion from sgrunt. That way I know everything is bit perfect before final encode. (although I can't imagine uploading one of those to Youtube, unless it was a 1 minute clip or something ^^;)
Experienced Forum User
Joined: 3/14/2005
Posts: 43
moozooh wrote:
We can't really escape YV12 conversion, can we? Unless we publish lossless videos as they are, that is.
Yeah, which is one reason why it'd be pointless to convert losslessly anyway. But, I have been browsing around doom9's forums trying to find information on a supposed yv24 standard for h264. I'm hoping I can find an encoder for it..I am a bit frustrated that I'd have to doublescale any videos in order to preserve quality..but at the same time I realize video submissions are limited to original resolution only. >.<
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Johannes is right about the whole B frames in lossless mode thing, Flygon. When I loaded the two videos that you mentioned were encoded with the script (Super Mario Land and NES Tetris), in AVIDemux, if you go under Tools, Bitrate Histogram, it'll tell you the # of each of I,P, and B. For Super Mario Land, its 76 I frames and 43296 P frames, with 0 B, and in Tetris, 8 I frames, 3485 P frames, 0 B. Granted, I don't think the graph was perfectly accurate, as I had to rebuild the keyframes to get a more accurate number (possibly due to the lossless compression, which doesn't display right in the player at all), but when I skimmed through the Tetris video, I didn't see any B frames pop up at all. So, for lossless encodes I'm sure you can omit any B frames..it might or might not speed up the encode process. I'll be experimenting with your script sometime soon...just as soon as I can get my VB AVISynth script hassle free with no memory issues. :/ Edit: I should mention that x264 lossless isn't really lossless, due to the YV12 colorspace. Something else to consider :P
Post subject: Virtual Boy AVISynth Script
Experienced Forum User
Joined: 3/14/2005
Posts: 43
I figured I should make a direct topic on the subject instead of posting it as responses to VB videos. For the past two weeks I've been working on AVISynth scripts that would alternate/interpolate between the left/right eye views in order to simulate depth. Version 1 of the script accomplished this. Sample clip (taken from Adelikat's v2 Wario Land any%, Level 1) http://www.mediafire.com/?anv2mjmzdox And the script (for encoding purposes. the on the fly decoding version can be found here. http://tasvideos.org/forum/viewtopic.php?t=9429&postdays=0&postorder=asc&start=69). Make sure only RGB32 input is checked for the script below. source=ffdshow_source() x=float(10) #number of frames before view switch ScriptClip(""" s=current_frame a=float(Floor(s/x)) b=float(a/2) sp= (b==int(b)) ? Greyscale(ShowRed(source)) : Greyscale(ShowBlue(source)) return(FlipVertical(sp)) """) The problem, as some people mentioned, was that it was too jittery to look at for too long of a time. Also, the depth perception wasn't really pronounced unless the scenery was stationary..and in a TAS, that doesn't happen too often. So, I started work on v2 of the script. Using MVTools I figured out how to interpolate the frames in between the left/right views to give it a panning quality. I think its a substantial improvement over the first script, but I'll let you be the judge of it. http://www.mediafire.com/?omztmoi2mdo Also, script. (again, RGB32 checked only. Its the best way to preserve the quality of the video) source=ffdshow_source() red=ConvertToYUY2(ShowRed(source)) blue=ConvertToYUY2(ShowBlue(source)) x=float(10) #number of frames before direction change ScriptClip(""" ss=current_frame s=float(current_frame) dv=s/x a=float(Floor(dv)) c=100*(dv-a) d=100-c b=float(a/2) t= (b==int(b)) ? float(c): float(d) source= (dv==a) ? source: red.Trim(ss,-1) ++ blue.Trim(ss,-1) forward = (dv==a) ? 0 : source.MVAnalyse(blksize=16, overlap=14, isb = false, chroma=false, pel=1, search=0, searchparam=6) source = (dv==a) ? source : ConvertToRGB32(FlipVertical(red.MVFlow(forward, time=t))) source = (dv==a && b==int(b)) ? Greyscale(ShowBlue(source)) : source source = (dv==a && b!=int(b)) ? Greyscale(ShowRed(source)) : source return(source) """) Its recommended to increase the resolution to 2X before any processing, so the panning filter has more horizontal pixels to work with for the motion. I do have a 1X version of the video (resized from 2X to help preserve sweeping motion), but the depth perception is less pronounced...I might as well upload that too for comparison's sake. http://www.mediafire.com/?di1mm2wdy4g Another downside is because of the ScriptClip function in AVISynth. You'll run out of memory after 300 frames or so, so its best to split the video into segments and encode each separately, then append them back together (as long as the frame count segments are evenly dividable by x*2 value in the script, to prevent any weird effects appending back together). Its a lot of work doing that, and I'm currently trying to figure out what needs to be changed in the script so that's no longer an issue. Any AVISynth experts that could look over the script and tell what needs to improved would be greatly appreciated! Anyway, questions. Do you think videos with v2 of the script would be publishable worthy for VB runs? Also, how do you feel about the perception of depth from the videos watched? And, AVISynth users, any suggestions on optimizing the scripts, namely the ScriptClip function? (I only need ScriptClip for passing the current frame to a variable, so if there's a way around that you'd be a huge help!)
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Voted Yes due to nice improvements. Also, I finished my 2nd script! What it does is create a sweeping motion between the Left/Right views, so it isn't as jittery as the last script. Here's a sample clip for download. http://www.mediafire.com/?omztmoi2mdo Also here's the script itself for people that are interested. source=ffdshow_source() red=ConvertToYUY2(ShowRed(source)) blue=ConvertToYUY2(ShowBlue(source)) x=float(10) #number of frames before direction change ScriptClip(""" s=current_frame source=red.Trim(s,-1) ++ blue.Trim(s,-1) forward = source.MVAnalyse(blksize=16, overlap=14, isb = false, chroma=false, pel=1, search=0, searchparam=6) s=float(s) dv=s/x a=float(Floor(dv)) c=100*(dv-a) d=100-c b=float(a/2) t= (b==int(b)) ? float(c): float(d) source=ConvertToRGB32(FlipVertical(red.MVFlow(forward, time=t))) return(source) """) There are severe limitations with this script currently. Due to some bug/oversight/whatever, values that are declared within ScriptClip are assigned to Global, and since MVAnalyze is fairly resource intensive, you'll run out of memory within a couple hundred frames or so. So, you'll need to split the video into evenly dividable segments based on the framerate, set for x*2 (if x=8, then every 16 frames), as long as its under around 300 frames or so max. Granted, I only need ScriptClip for assigning the current frame #, so if anyone knows how I could assign that locally please let me know! Anyway, comments are appreciated!
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Voted meh. Although I understand that this was just an exploitable part of the game, the repetitiveness ruined it for me. Too bad this game didn't have more potential strategy wise..this was one of my favorites for Virtual Boy!
Experienced Forum User
Joined: 3/14/2005
Posts: 43
sgrunt wrote:
The best solution would be to alternate every frame, but to use both sets of frames for 120fps video. Too bad the average monitor isn't going to be able to display video that quickly.
Well, before I made that sample clip I was testing all the different frame rates..alternating at every frame looked the worst..I also tried doubling the frame rate to 100hz (my CRT can go up to 120hz if I bump down the resolution) and applying the filter..I'm not sure how to describe it. Its not very 3D like, but the jitter isn't too bad either (aside from the background of course). I could upload the clip if you like, but because of the high frame rates its a rather large file for just one level. (speaking of which, I was going to ask you what you use for mp4 containers and x264 compression..surely that'll help with my file sizes)
Spinal wrote:
@SatoshiLyish: I like your effort, but I don't feel it's working. For a still scene with 2 frames it works fine, but in a movie it just looks as if everything is "jiggling" and it doesn't give me a 3D-effect at all.
Yeah, I have noticed the effect looks best when Wario stops to pick up a key or go through a door..a lower alternating frame rate helps with this, but it isn't a huge improvement. If everything works out with the new plugin I'm working on, it should fix that.
Post subject: AviSyntth 3D script for VB Runs
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Okay, I just finished this interesting script for watching Virtual Boy runs. When I first watched this run, I thought the whole 3D Glasses effect was pretty neat. I realize though that not everyone has access to 3D glasses (myself included, aside from the pair that ironically came from my VB Nintendo Power magazine, but I couldn't bother to fish it out), but I remembered about these stereo gifs that I've seen online before. So I thought "Hey, why don't I make an AVISynth script that alternates the view like in the gifs?". ..It took me the past three days ripping my hair out to get to work, but its finally finished! Here's a proof of concept video of the first level of this run using the filter. http://www.mediafire.com/?qjyc35mrjmc And here's the script for people that are interested. source=ConvertToRGB(ffdshow_source()) ScriptClip(""" s=current_frame x=7 #number of frames before view switch a=float(Ceil(s/x)) b=float(a/2) b==int(b) ? ConvertToYV12(ShowRed(source)) : ConvertToYV12(ShowBlue(source)) """) I'm sure that it isn't optimal..I know some programming, but converting my knowledge of C into AVIScript proved to be exceedingly frustrating. Anyway, let me know what you guys think! I'm going to start working on an improvement to this script, which will intermediate the frames to give the "jerking" transition a smoother look. Wish me luck.. PS. I had a semi-humorous story posted before I revised everything..let's just say out of my tiredness and confusion I thought the published "monochrome video" had this filter already in place. :P
Experienced Forum User
Joined: 3/14/2005
Posts: 43
:O So this is what happens when you tamper with the fabric of space-time... (DEFINITE YES)
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Yay. I never get tired of watching Super Metroid runs, and this is a very nice improvement over Terimakasih's run. Favorite moments: Draygon and the ninja jumping over the pirates in Ridley's Lair :) Least favorite: Mother Brain, unfortunately. Maybe you could've done more than sitting in the corner most of the time? Anyway, I think 14% run should keep its own category since its a legitimate competitive restriction in the Super Metroid community..but that's me. Enjoyed the run, great work with it. :)
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Ferret Warlord wrote:
A winner is you, CAD! In truth, the way to end the game is to finish off all 47 metroids and recharge your missiles. Any missile recharge will do, it's just that ordinarily you're limited to the ship at the end when you do so. You see, when you touch a recharge station, it first checks to see if D089, the memory location for the number of metroids left, is zero; if so, end the game, if not, fill missiles. So I just glitched back to the beginning of the game because it was so much closer! ;P The original plan was to work over to the station outside the final ruins, but tileset issues set in and wouldn't let me.
wow, that's quite interesting. I guess I was too disoriented viewing numbertroids and other glitchy palettes to notice a switched mothership ^^;
Experienced Forum User
Joined: 3/14/2005
Posts: 43
wow-o, that just completely blew me away. For a game that has a lot of empty moments, this run kept me thoroughly enjoyed. I bow down to you. May I answer the brownie question? Usually when you enter the ship, the activation device is in the center, but you proceed to walk right in order to activate it. :)
Post subject: Nitsuja SNES9x v7 download problem
Experienced Forum User
Joined: 3/14/2005
Posts: 43
Has anyone noticed that the links to download Nitsuja's version of SNES9x are down? Just thought I'd bring that to attention..and ask if I can get a hold of another copy somehow. I've been stuck using v2 for a while..and ever since I upgraded my video card it keeps crashing every time I maximize ^^; I think an update should fix that.
Experienced Forum User
Joined: 3/14/2005
Posts: 43
wow, AMAZING run! Definate yes. Loved the pseudo-nothing trick (sorry, just borrowing terminology here ^^;) I noticed that on the first level Luigi's introduced, he stops in midair. Was there any purpose to that? (my understanding of it so far is that Luigi jumped so high off the screen he hit the bottom of the pillar, preventing him from moving. If I'm wrong please correct me)
Experienced Forum User
Joined: 3/14/2005
Posts: 43
oh, okay, so that was the problem. Thanks for the help, and I'll be sure to do that next time.
Experienced Forum User
Joined: 3/14/2005
Posts: 43
hmm..I seemed to have run into a problem watching the movie. I used fast foward since I didn't know how to work the save states in the movie (or rather, I tried one, but this same error came up..will explain) and once I got to Land's End, Mario jumps and it says movie end. This also was the save state I loaded before, and the movie ended at that point also. Maybe the save state interfered somehow..I restarted snes9x and I'm fast fowarding again, to see if the error comes up again. I'll keep you posted on what happens. edit: okay, I guess it was a problem with the save state..n/m ^^; I'll let you know what I think of the improved movie after I finish watching.
Experienced Forum User
Joined: 3/14/2005
Posts: 43
I have to agree with Joseph Collins on this one. The movie plays out kind of slowly, but the game was designed that way, and you've made the best attempt with speeding through it as fast as possible. Not to mention I remember this game being very tough when I was little..I could only get so far in it, and that was on easy ^^; Anyway, nice job, you get a yes vote from me.
Experienced Forum User
Joined: 3/14/2005
Posts: 43
I voted yes. There were some parts of the movie I was dissatisfied with though, such as the battles with Culex and Smithy. Those parts were just ruined due to the fact that the same items were used over and over. Also, I think better results would've been achieved if the Troopa Pin was used instead of the feather or Jinx Belt. Not only does Troopa pin increase speed by 20 like the feather, but also gives a permanent attack boost by 1.5X (much like the quartz charm, but that also boosts defense as well) Aside from that, it is a worthwhile movie. This game is one of my top favorites, and I'm glad someone made a movie for it. ^_^