Joined: 8/27/2006
Posts: 883
Dah, I didn't see that, though I would like to see a run of this game :) Remember a lot of memories. :p
Joined: 4/29/2005
Posts: 1212
I noticed there has been a year of absence from this topic. Just wondering if anything has been done.
Joined: 8/1/2004
Posts: 91
Has it been a year? Not quite... Has there been any progress? Nope... at least not from me. I'm guessing Blublu hasn't done any work on it either. *resumes toying with The 7th Saga instead*
Player (68)
Joined: 3/11/2004
Posts: 1058
Location: Reykjaví­k, Ísland
I have gone back to it a couple times, but not for long. I've done something like 3 levels of world 3.
Joined: 4/29/2005
Posts: 1212
Well. Guess that answers my question. :3
Post subject: A deeper look (confused newbie warning)
Joined: 8/1/2004
Posts: 91
The most recent NES Wishlist thread has me thinking about this game again. Perhaps it is time to further examine the game physics (and I use that term loosely). I've made it clear that I don't intend to try to TAS this game further until I understand the "why and how" of my first level being 3 frames faster than Blublu's, so perhaps I should take a closer look at the differences of our movies and how we play the first level. ... so I did... and I'm more confused now than I was before, but before I get too far ahead of myself, I'm referring to these two movies: Blublu's: (you may need to right-click and select Save Link As in order to download depending on your browser) http://fast.filespace.org/blublu/KickleCubicle_U_world1.fcm Mine: http://dehacked.2y.net/microstorage.php/info/806/HBv3.fcm In short, I previously thought there were 2 differences in our first level: a difference of either 2 caused by methodology and a difference of one frame in my favor due to left/right differences. I was only partially right. I recorded the inputs from the first level in each of our movies in a spreadsheet program to analyze them and compared the frames on which we changed input (to change directions, freeze an enemy, push an ice cube, or create/pull a pillar). The only differences were (1) left/right and up/down differences being generally interchangable in the important 1 frame perpendicular direction hold as part of the whiplas walking; (2) How we approach and push the first ice block, which is the 2 frame improvement I knew of before; and (3) left/right differences inherent in the fact that our paths were exactly mirrored. The above differences were as expected, but the number of points wherein I either lose or gain frames on Blublu (which, of course, is easy to determine thanks to our identical yet mirrored paths) is surprising. Compared to Blublu, my results were: I gain 1 frame when moving up after placing the first pillar. I lose 2 frames when moving back down right behind the first enemy. I lose 1 frame when moving horizontally under the block diagonally below the first ice block. I gain 2 frames when pushing the first ice block. (This is the 2 frame improvement mentioned above) I lose 1 frame just before removing the first pillar. I lose 1 frame just before pushing the second ice block I gain 2 frames due to what appears to be lag. (See more below) I gain 1 frame when moving downward after pushing the second ice block the first time. I gain 2 frames (1 at a time) while moving 2 spaces to the right toward the second ice block. So, I have a four gains of 1 frame, three losses of 1 frame, and a loss of 2 frames (for a total loss of one frame) that I cannot account for. I conjecture that these gains and losses are inherent in how whiplash walking is performed, but I don't fully understand the game mechanics of the whiplash walking, mostly the number of frames before a perpendicular direction hold will cause the desired "half space warp". Help needed in this regard. Finally, I have a gain of 2 frames, specifically at frames 1378 and 1379. In Blublu's movie, he has the input of Left+B at frame 1377, but the animation for pushing the ice block doesn't appear until frame 1380. My understanding of terminology is a bit shaky, but I'll classify that as lag, and I do not understand why this lag occurs. At first, I suspected it simply to be a result of a new enemy spawning, but there is no such lag at that point in my movie. Help needed in this regard. In short, I have 1 difference I can explain, 1 difference I can describe but not reproduce at will, and 8 differences I can't explain at all. What I do know is: (1) path planning is going to be much more difficult with left/right mirroring being unequal at many points, (2) lag can be a potential problem as well (3) there's a lot I don't know. If you've managed to read this entire post, thank you. Please consider downloading the movies I've mentioned and seeing for yourself the differences. Watching them both at the same time is quite entertaining, actually!
Joined: 8/27/2006
Posts: 883
Have you tried looking at memory address for walking speed and such things, that might explain why you loose frame on mirror path (like going left taking more time that going right for an unknown reason).
Joined: 8/1/2004
Posts: 91
Hmm... I'm really not familiar with memory watching... *11 minutes pass* After a bit of forum searching, I still am quite unfamiliar with this concept. Walking speed would be a good thing to know, as would Kickle's location on potentially a more exact level than by the pixel. I seem to remember something like that being mentioned in the Rockman 2 thread dealing with the Wily 4 boss, so I'll look there for some enlightenment, but could anyone help me find some information on how to get started in this "looking at memory addresses" venture?
Player (121)
Joined: 2/11/2007
Posts: 1522
First step is to be sure you have FCEU 16 (0.98.16, technically). (You may have it already, but your movie said FCEU 13) You can get it here: http://tasvideos.org/EmulatorHomepages.html I believe it is the only version with memory watch. (It also has a bunch of other neat toys, once you can decipher them...) This game is cool. I'd never really played it but have heard of it and so far the movies look good. I enjoy finding memory addresses so I started looking and have found some interesting information, I think. Let me do a bit more testing and I'll post stuff...
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Joined: 8/1/2004
Posts: 91
Thanks for the point in the right direction, alden! I'm headed to bed for the night... but after a brief bit of playing with that Memory Viewer tool, I'm thinking that Kickle's position on the playing field (or at least his vertical position) may be found around 140x... what that means, however, is a bit lost on me, and my observation could be anything from coincidence to a copmlete failure to understand the memory viewer's function to a beaming ray of hope! Maybe someone will feel inspired to take a look and see if they can understand what it is I'm looking at any more clearly. In the meantime, I'm taking a step back from the learning curve and getting some sleep.
Skilled player (1827)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Ok. I looked into this matter some: Address 0402 is your X-position, measured in pixels from the left of the screen. Each square is 16*16 pixels, so this means that this value rises with 16 every time you walk to a new frame. For example, when you start level 1, this value is 112. If you walk one square to the right, it will rise to 128. If you instead would walk to the left, it will sink by 16, to 96. I think you get my point. :) Address 0404 is your Y-position, measured in pixels from the top of the screen. This works in the same way as the X-position. It seems that optimizing walking isn't very easy. You usually have to walk at least 8 pixels to not get knocked back when you turn. Sometimes it looks like it can be done in 7 pixels though. I guess you'll just have to play around with these values. Good luck. :) EDIT: Oh, and to watch these values as decimal values, do like this: 1. Open FCEU. 2. Go to "Tools" and open "Memory Watch". 3. In the first address field, type in 0402. In the second colum, write 0404. 4. Now you can watch these values in a much easier way, without having the memory viewer open! You can also give the values names if you want.
Player (121)
Joined: 2/11/2007
Posts: 1522
Done testing and think I found a good way to perform the whiplash move optimally all the time without needing to test every frame. As Randil says, the x and y pixel locations are stored at 402 and 404 respectively. In addition, there is a pair of memory addresses that measure position in a different way, which I will call "tile location". x is A4 and y is A5. As I'm sure you know, when you let go of the D-pad the character keeps moving until he hits the center of the tile. What these addresses tell you is where the character's pixel location will end up once he reaches the center of the tile. For example, if the x pixel location is 114, the tile location will be 112, so if you let go of the d-pad he will continue walking until the x pixel location is 112. These values increment by 16 for each tile, and since it only takes 12 frames of movement between tiles that is why he sometimes moves 1 pixel and sometimes moves 2. So here's where the whiplash comes in. If you steer in a perpendicular direction the x position changes immediately to the tile position instead of slowly at walking speed. So if you turn as soon as the tile position updates, the character ends up moving 8 or 9 pixels in one frame as opposed to 1 or 2. All you have to do is watch address A4 or A5 depending on the direction you're moving, and on the first frame that it changes, turn. This should always be the optimal frame to do so, since if you do it any earlier you revert back to the tile you are walking away from. Hope this makes sense!
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Joined: 8/1/2004
Posts: 91
Randil wrote:
optimizing walking isn't very easy
Thanks for verifying the only thing I already knew. Joking aside, thanks much for the information. I'm not going to be able to play around more with this tonight, but hopefully this will be invaluable tomorrow! Finding optimal paths still is going to be difficult. Perhaps a way to maximize "7 frame whiplashes" can be found with this information, but that will have to wait until tomorrow for me. *crosses fingers in hope*
Skilled player (1827)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
*Bump* I'm not commiting to TASing this game, but I've done some more research on it and found some interesting things, if someone wants to give this game another chance. Those who have TASed this game have surely noticed that, when using the whiplash movement pattern, it sometimes takes 7 frames to move between two tiles, and sometimes it takes 6. I've looked in to why this difference occurs, and the reason is subpixels. Here's the breakdown: Your X subpixel is stored at RAM address 0401 and your Y subpixel at 0403. *Moving one step left always takes 7 frames and adds 236 to your X subpixel position. *Moving one step up always takes 7 frames and adds 236 to your Y subpixel position. *Moving one step down takes 6 frames if your Y subpixel pos is 56 or higher (in this case, it adds 200 to your Y subpixel pos), otherwise it will take 7 frames and adds 20 to your Y subpixel pos. *Moving one step right takes 6 frames if your X subpixel pos is 56 or higher (in this case, it adds 200 to your X subpixel pos), otherwise it will take 7 frames and adds 20 to your X subpixel pos. Bumping in to a wall does not change your subpixel position. So basically, this game just got way harder to TAS: you have to carefully plan every single movement in advance, to make sure that whenever you move down or right, that your subpixel values are high enough. When using the whiplash trick, i.e. pressing a direction perpendicular to the one you're moving in once you've reached a new tile, changes your subpixel position too, so you have to be careful if you, for example, tap left or right when moving upwards. So your movements at the beginning of a level have an impact on the rest of the level, due to how your subpixel positions change.
Experienced player (520)
Joined: 11/2/2010
Posts: 359
I decided to take a swing at this game and as of the end of the first world managed to shave 82 frames off of Blublu's attempt. A 1.3 second improvement on a 10 minute video doesn't seem like much but when 80% of each level's time is spent on the cutscene between levels it is a bit more impressive. I still need to work on the rest of the 83 levels but I thought it was a good start. Frame precision is required for the zig-zag quick movement so to improve times new paths would most likely have to be found. Here are the current times for each level from the first frame where the screen is no longer black, to that same frame on the next level.
Level New Time (f)
Intro885
11510
22060
31612
42123
51387
61968
71636
82000
91660
101473
111863
121453
132125
141544
151884
162572
175726
Boss 1 2338
Player (210)
Joined: 7/7/2006
Posts: 798
Location: US
Finish the run!~ =) Do you think you're quite optimized, or were you not really worrying too much about the subpixels?
Skilled player (1410)
Joined: 5/31/2004
Posts: 1821
Kirkq wrote:
Finish the run!~ =)
Yes please. The game is quite entertaining (if you use the turbo button in between levels :)
Joined: 8/1/2004
Posts: 91
Wow... four and a half years later, I'm still keeping on eye on this thread and thinking "nah, too daunting a task". I wish you the best of luck with this run, and I hope you find the will to complete it!
Skilled player (1827)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Out of interest, are you abusing the subpixel physics I mentioned here? If not, abusing this could potentially save a handful of frames on each level, but in all fairness the game would then suddenly become a lot more tedious to TAS.
Experienced player (520)
Joined: 11/2/2010
Posts: 359
I have one level left on the third world which leaves me one full world left and then 30 bonus levels. I will probably finish the third world this week but senior year of mechanical engineering is sort of kicking my ass. Luckily I get a week for Thanksgiving and then a month of Christmas break is coming so I would say I would have a finished movie by January. I am trying to use your rules but as you said it makes things pretty terrible. For the most part I am currently concentrating on finding the best route's on each level because that can save seconds per level where as the left and right turn management would only save around 1 or 2 seconds for the whole run. If I do the bonus levels (and I don't see why I wouldn't) it is looking like it should end up being right around 50 minutes long.
Experienced player (520)
Joined: 11/2/2010
Posts: 359
Update on my progress. I finished the game (including the bonus levels) and it ended up taking a little bit longer than I had believed. It ended up being 216834 frames or 1 hour 13.9 seconds. I have a few simple things (like trying to hit select on the last frame before collecting the bag on each level) which could shave that down a by probably a second so I am going to wait to post the WIP after I go through those easy obvious ones. At that point I will post my file wait a week to make sure that I, or anyone else who wants to try, can't find a better strategy on any level at which point I will submit.
Joined: 8/22/2006
Posts: 24
Location: Georgia
I'm pretty sure at least Healblade and I will be looking over it in detail. I'm pretty bad at taking on a serious project, but taking a fine-toothed comb to it is right down my alley.
I'm not really here. Pressing Up+Down too many times glitched your graphics. And audio. Yeah.
Experienced player (520)
Joined: 11/2/2010
Posts: 359
Alright here it is. I had forgotten that I had a separate video I was working with so when I hex-edited those levels in the final length was 215653 frames or 59 minutes 54.22 seconds. Here is an Excel document with the level by level breakdown since there is 101 levels and there is no reasonable way to present this data other than an Excel. I didn't go back and do the subpixel trick Randil suggested because as he said it is quite daunting of a task to go through 101 levels calculating the ideal left right balance to save a second or 2. I may if people really feel it can change the quality of the submission though. If there are any suggestions, critiques or comments I would love to hear them as I will probably give myself a day or two to test a few other level strategies and then submit.
Skilled player (1827)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
I think you can skip the subpixel trick - as you said, those few seconds it saves won't make a big difference on the final product. And not having to worry about it will make this a lot easier on you, I think. Good luck with this, I'll try and take a look at what you've got sometime this week.