That really was a fantastic and very entertaining run. Even the writeup was fascinating and showed great insight -- it's really nice to see people doing that.
150mb certainly isn't much on modern machines. However, a reasonably smart implementation would only keep the last, say, 100-200 states in RAM and dump older ones to disk since rewinding that far would happen much less often than rewinding a few frames.
However, to store a complete history of states since power on for a one hour run would still take up over 50gb of storage which is clearly too much and suggests some optimisations are necessary...
...Like this. We can't store state deltas going backwards, but we can record them going forward and make, for example, every 50th frame a "key" state and write it completely. Then, to roll back to frame k, we load frame j = (k - (k mod 50)) and apply the saved differences from frame j+1 up to k. The last hundred or so states could still be cached in memory if this process was slow (it would probably only be noticeably slow when using a brute force script which rewinds).
I guess the question is whether it's possible to do a fast diff of each state against the last, especially on larger states like on the N64. Maybe some hooks could be added to the emulation code that add to a delta record for the current frame during memory/register writes?
So, if I take an encyclopedia and insert a few chapters and references to the Great Ironing Board God Helepetemeth, is it worth believing in this deity and any commandments inserted by me? The encyclopedia's validity as a historical document is strongly supported by archeologic and geologic evidence.
Or is it only worth believing the bits that are directly supported by evidence, and not, say, 100% of the statements made in the book?
I've had some encodes cause major problems on VLC and mplayer, although most are okay. When neither of them work properly (e.g. the MGS WIP encodes), Realplayer (bizarrely enough) seems to work well.
Ok, the bit at 1:10:40 onwards in the lava room was really nice. The guard's reactions reminded me of an episode of Family Guy where Peter baits James Woods into a trap by laying a trail of sweets on the floor... "Huh? Ooh, a piece of candy! Ooh, a piece of candy! Ooh, a piece of candy!"
The almost-suicide with the Nikita in Raven's room was great too. :)
Would love to see a bit more skating (R1 tapping) and other movement tricks, especially when you're waiting for something (e.g. boss invulnerability periods, guard movement, PAL key temperature change etc).
"Good enough" would be "at least 1 frame faster than the best existing TAS", for games that have already been TASed.
Asking for the 'perfect' run straight away is expecting too much.
Even then, genetic algorithms would fail if each child was supposed to be a complete solution to the game. It'd be black hole time, just like a simple brute-force search.
Instead, you could use genetic algorithms as an assist to a normal, human-guided TAS. You'd set short goals like getting as close as possible to a certain waypoint.
e.g. for SMB, in the first level from a given savestate, do 10000 rounds (with tournament selection) with a population of 200 input sequences, where the fitness function is "how close were you to the end of a level/key/pipe/etc", with the restriction that each input sequence can't be longer than your best effort (or the best effort from the best existing TAS). The population can be seeded with your best manual input (this helps avoid an extremely long initial period where every solution is awful).
That way you're adding some human intuition and guidance to a fairly dumb but fast process, and providing a method by which good and bad solutions can be properly compared and ranked. When an acceptable solution is found, you pick a new waypoint starting from where the best solution ended up and repeat the process.
I've been thinking about doing this for a while, but I don't know Lua and my TASing abilities are err... poor. I have written a couple of simplistic genetic programming systems in Java though, so it's not that hard... would love to see someone try it here.
I've been enjoying this thread/run so far, nice to see a more complicated game get TASed, especially on the PSX.
WRT the +/-20% of average level thing, that would certainly be worth investigating - if a sacrifice of a few frames could get a fight with two soldiers that are killable in one hit each (and similarly later in the game), that'd be a massive timesaver.
I enjoyed the "they disappeared, except he didn't, except actually he did" bit too... also, the mixup of actors is entertaining, as well as the empty chair testifying during the trial :D
I don't think there's a build for the Mac; most of the programs I've tried kind of suck except for Azureus (which incidentally fails to download .torrent files from tasvideos some of the time... almost all of the time until I upgraded to the latest release a few days ago). Good to know about the 1-key shortcuts in Firefox though!
[super-edit]
Ack, just tested it again and Firefox doesn't seem affected at all now (nor does Safari); so it is indeed just Opera-specific. My bad!
Don't remove it just because Opera is struggling with the JS or something; it's a nice little feature IMO.
Certainly Opera's advantage over Firefox has been hugely eroded with recent releases of Firefox; I'm impressed how little memory v3 uses and how quickly it responds, especially its JS engine.
But the main reasons I still use Opera are:
* Single key shortcuts for back (z)/forward (x)/move left in tabs (1)/move right in tabs (2)
* User-managed search engines in the address bar (e.g. I added "http://www.dict.cn/%s" for 'd', and can look up the Chinese word for "mushroom" in the dictionary by entering "d mushroom" in the address bar)
* Built-in bittorrent downloading (maybe Firefox does this as well now, not sure)
* Built-in content blocker which works nice for annoying Flash-ad-using sites.
That said, on the old box (half a gig of RAM and a Pentium III, for god's sake) I was using at work, I was developing in Eclipse which is one of the worst memory hogs ever to have existed; Opera used up to twice as much RAM as Firefox did and caused the machine to enter swap-death sometimes, so I took to using Firefox on it (until I bought a new Windows Vista box with 2 gigs and other niceties).
Heya,
Opera has a built-in content blocker, if this is what you mean... it just works on a url pattern match. 'spose I could manually block the path to the guilty .js... or try some user-javascript to work around it.
Thanks :)
Hi guys,
I've been downloading and watching TAS videos for a couple of years here and very much enjoying it (and tried out a couple of short Super Mario Allstars runs, but I'm too lazy to get more than a few minutes entirely suboptimally and without the clever, scientific measurements you guys do). I had left a tab in Opera open on the front page for the last year or so which I'd refresh to check for updates... in the last few days I noticed that Opera's CPU usage was up at 50-90% most of the time, which is bad.
After a lot of trial and error, closing some of my many tabs, I opened the tasvideos new videos page in Firefox and saw its CPU usage shoot up as soon as the animated mini-Mario appeared.
Is there any way to turn this off, since it means I have to close the tab and remember (!!!) to open a new one and check every now and then, since the convenience isn't worth my laptop melting.