Hi, everybody. I'm tall--long-time lurker, first time poster. I'm a Super Meat Boy speed runner. I want to be on the ground floor to TAS it when it comes out on Wii (still speculation at this point), and when Dolphin gets to the point of being acceptable for publications.
So I'm going to start practicing. See you around.
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Hello. I'm tall as well! >_>
Jokes aside, welcome to TASVideos! You could TAS something else in the meantime. :P
AzumaK wrote: I swear my 1 year old daughter's favorite TASVideo is your R4MI run :3
xxNKxx wrote: ok thanks handsome feos :D
Help improving TASVideos!
You think that's tall? I bet strangers don't even ask you if you play basketball. You've got to be at least 6' 4" before I consider you tall. XD
Anyway, I started my first practice TAS tonight. I'm catching the fever. Counting frames and beating my own time is exciting. There's even an unpublished WIP of the game I'm doing ... and so far I'm kicking its butt.
I have one question about rerecording logistics. Let's say I run Level 1, move on and run Level 2. Then I realize a better way to do Level 1. How do I rerun Level 1 and tack on my existing Level 2 run?
In this case, I'm on SNES9x, 1.51 v6 svn 113. I was wondering this going in, and now I'm in the situation where I need to know!
You can't always tack on level 2 to a modified level 1 run. The problem is that your new level 1 might change internal state (especially things like the state of the random number generator) which would cause the input you created for level 2 to no longer mesh with what the level is doing. That causes desynchs. Sometimes you can fix that with a little patching though, e.g. if the only change was that an enemy that you used to jump over now needs to be killed en-route instead. And sometimes things synch perfectly with no modifications needed. Depends on the game.
Anyway, I think what you're looking for is called TAS Movie Editor. You can also accomplish this by using a hex editor to modify the movie file directly, if you really know what you're doing.
(Also, I'm 6'5")
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
People ask me to play basketball all the time. Just yesterday, I was in the grocery store, and someone asked me to join a pick up game in the frozen foods aisle! Of course, I had already made my way through that aisle and stocked up on frozen pizzas, so I had to decline.
Your question totally depends on the game. Some games allow you to hex edit your input from a previous level into the movie. However, if the game has things such as randomness, the occurrences that happen in level 2 may not be the same!
Since you are only in level 2, I'd start back, and improve your level 1. Who knows, you may find improvements to level 2 by redoing it!
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
Well Movie Editor didn't work for me. There's a note that it only works with snes9x 1.43, and mine is different. This time it wasn't so bad to redo both stages.
Now I've got my first complicated task. After each of these first 2 stages is a bonus stage. There are about 3 it chooses from. I need a specific one after the 2nd stage, or else I'll have to spend extra time on the 3rd stage. So I got to figure out how it determines what bonus stage comes up. I know the preferred order is possible. I seened it.
I'm sorry for being vague; I'd just rather not reveal what game yet. Still, how do TASers usually approach this type of challenge?
Most likely the choice of bonus stage is "random" -- that is, it depends on the state of the random number generator (RNG). This is a number that's stored in memory somewhere and gets updated when needed. Usually you'll get either one update per frame, or one update per random number request, or the two combined. Thus you may get different results simply by waiting (or by going faster). Or you may have to trigger a source of randomness to advance the RNG; how to do this depends on the game but could include things like letting an enemy move around, creating particle effects, causing a damage calculation to be perfomed, etc.
If you know where things are in memory for your game, you can look up the RNG state and monitor it so you know when it's updated. You can also try forcing it to different values using cheats, to see what values will get you the result you want. This can save on trial and error. For example, if you know that a rare item only drops if the RNG is less than 256, then instead of trying to kill an enemy on every RNG state you get, you can just wait for the correct one. This was necessary for the Aria of Sorrow all-souls run.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Oh, yeah. RAM search makes me feel like a boss. I didn't quite find a RNG, per se, but I found a frame counter, and learned that the game alternates bonus stages in the pattern "A-A-B-C" on a per frame basis. Thanks, derakon.
Things are looking up. I suspect it may keep you from playing the same bonus stage twice in a row, so I'll test that out. I also learned that resetting between levels will save at least 1152 frames (19.2 seconds) over the course of the run if I make it to the end.
As of now, I'm mostly done with the TAS. I'm going to go back and refine one of the levels where I slacked off some, and hex out a few missed shots, but that's basically it.
I'm encountering a new problem at the end. I am hexing out frames trying to get input to end as early as possible. But every time I truncate the file, edit the frame count, and play the movie, it adds on a bunch of empty frames to my file (but keeps the frame count the same). Any idea why it's doing that? Will the site measure length by my frame count?
Thinking out loud: ... maybe they're not empty frames, but rather just 0'd out bytes. Is it just an alignment issue?
make a savestate on the final frame.
Switch to read-write.
pause
Load that state.
Stop movie.
Movie corrected!
Sage advice from a friend of Jim: So put your tinfoil hat back in the closet, open your eyes to the truth, and realize that the government is in fact causing austismal cancer with it's 9/11 fluoride vaccinations of your water supply.
OK. That seems only to work if I replicate at least one frame of input in the emulator; otherwise it disregards the change.
Now I am totally done with my first TAS. That level where I slacked off had more room for improvement than I thought. Now it's much more optimized. I'll submit it this weekend.
Oddly enough within days of submitting my first TAS (#3022: tall's SNES Pilotwings in 20:08.97), it became official that Super Meat Boy is not coming to the Wii at all. They said for a month that they had an announcement about the Wii version yesterday, and I thought certainly that the announcement would not be "It doesn't exist." Yet there it is.
Regardless, I'm going to continue TASing. I got the other part of my wish, in that Dolphin development seems to be coming right along. I'll potentially need to upgrade my computer to run games at full speed, but that is still relevant to my interests.
So I'm open to suggestions for my next game. I want to stick with 2D for this one, probably SNES. As far as personal preference, I didn't play many SNES games (that don't already have untouchable runs).
Here's some from the List of ideas:
* Arkanoid - Doh It Again
* Cybernator
* Dragon's Lair
* Equinox (the sequel to Solstice)
* Motocross Challenge
* Uniracers
o 100% Complete
* Warlock
* Ys III - Wanderers from Ys
One from the DS list caught my eye. N+ is not unlike Super Meat Boy. I played it on Xbox, and it wasn't really my bag. But I could see how it would make a good TAS. It would also serve me well to get familiar with different emulators.
I am a big fan of Puzzle Quest. A run of that for the DS would be a huge undertaking, though. I'm not sure I'm ready for an RPG or Puzzle game, let alone a hybrid of both. Maybe some day.
One last newbie question. This forum seems to be relatively inactive compared to the number of submissions, and the amount of work that goes into each. Is the IRC the place to be?
A few other suggestions for SNES games you might try TASing:
* Cool Spot
* Joe & Mac
* Magic Sword (probably want the arcade version though)
* Super Turrican 2
* Aleste
Aleste is a scrolling shmup, but if you get the Japanese version there's a code to unlock a much harder mode where the enemies fire bullets on death; it could be frantic enough to be interesting. Personally I'd find it more interesting than Arkanoid. Recca (for the NES) could be good for similar reasons. It's a serious challenge to kill everything in that game even with rerecords.
Puzzle Quest would involve a lot of luck manipulation. I wouldn't undertake that unless you're willing to learn the ins and outs of lua and memory watching.
Good luck with your next TAS!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Joined: 11/18/2006
Posts: 2426
Location: Back where I belong
Not a good idea. My very first experience and submission was this game, and it's just way too slow and bland to do too much, even with controlling two players.
Lua Scripting. What is the deal? Everything in the gui is a frame behind.
I try to see how far I travel per frame.
Say on frame 0, X = 100.
On frame 1, X = 112. I can see that, but my GUI says "Distance: 0." Wrong!
On frame 2, X = 136. gui says "Distance: 12." ... Good, but i wanted that last frame.
What's up with this? I've tried registerbefore an registerafter.
registerbefore and registerafter shouldn't even be necessary. Also, what does your code look like, for what emulator and for what game? People need specifics to help you.
local x, xprev = 0
function distance()
xprev = x
x = memory.readword(0x7E0522)
gui.text(200, 150, "Distance: " .. x - xprev)
end
emu.registerafter(distance)