Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
feos wrote:
Woah, where you got that (nick)name? Sounds shamelessly Russian :D
It is from the main character of 'The Brothers Karamazov' a famous work of Russian Literature. I use the name for most of my online accounts, current political climate not withstanding : )
TheAxeMan wrote:
Awesome, Mission Impossible! Your run looks good up until the last stage. Your planning and overall route look fine but I am sure you could have saved time in the last mission by using your gas grenades more and maybe taking more damage. You hardly use any of them and there are a lot of red briefcases. Maybe on some other stages too. The highlight is of course using the green shield guys, very neat trick.
Ahhh yes you are right, I went back was able to save 100 frames by managing smoke a bit better in level 6. Thanks for the advice. I will include the changes in the final submission.
Active player (335)
Joined: 1/19/2010
Posts: 383
Location: Texas
I loved this game as a kid. Too bad that the last level is pretty much hell with it's size and so many areas that are pointless to go thru. Anyways, I watched the run and verified it myself. I watched the lag counter and noticed it shot up in several places in the last level. Notable areas to improve things: 1. Level 3 - when fighting that ninja boss, I believe you can kill him by making the floor collapse under him. If you can manipulate that right, you should be able to finish that fight several seconds faster. And holy crud the lag on that boss is horrendous. Like 300 lag frames. 2. Last level - when going thru the room with the falling floor, both times if you would have killed the guys throwing the flame sticks, you can reduce a dozen or so lag frames by killing them instead of letting them live. Also kill the guys that try to push you around. Both times going thru that room the lag counter went up a good 30 units. 3. Last level - The room with the magnets lags a lot too. I'm not sure if you can do much about that other than kill enemies or make them not shoot at you. 4. Last level - One of the last rooms that has a breakable floor, the lag counter went up like 90 units. Is there a way to reduce that lag by killing enemies, or do breakable floors just cause a lot of lag? I guess that's all I have for now. The run total had I think 700 lag frames. I'm not sure how much you could save from lag reduction, as several areas of the game are just prone to it. Overall entertaining, great strategy for the snow level boss, and good use of those enemies that push you around.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
SoulCal wrote:
I loved this game as a kid. Too bad that the last level is pretty much hell with it's size and so many areas that are pointless to go thru. Anyways, I watched the run and verified it myself. I watched the lag counter and noticed it shot up in several places in the last level. Notable areas to improve things: 1. Level 3 - when fighting that ninja boss, I believe you can kill him by making the floor collapse under him. If you can manipulate that right, you should be able to finish that fight several seconds faster. And holy crud the lag on that boss is horrendous. Like 300 lag frames. 2. Last level - when going thru the room with the falling floor, both times if you would have killed the guys throwing the flame sticks, you can reduce a dozen or so lag frames by killing them instead of letting them live. Also kill the guys that try to push you around. Both times going thru that room the lag counter went up a good 30 units. 3. Last level - The room with the magnets lags a lot too. I'm not sure if you can do much about that other than kill enemies or make them not shoot at you. 4. Last level - One of the last rooms that has a breakable floor, the lag counter went up like 90 units. Is there a way to reduce that lag by killing enemies, or do breakable floors just cause a lot of lag? I guess that's all I have for now. The run total had I think 700 lag frames. I'm not sure how much you could save from lag reduction, as several areas of the game are just prone to it. Overall entertaining, great strategy for the snow level boss, and good use of those enemies that push you around.
Thanks for the suggestions. Let's see here... 1. I will try that, need to figure out a bit more detailed how to manipulate him (I know roughly its based on directional inputs) 2. I redid this whole area with the soldier and it does eliminate those lag frames. Its actually better to keep the the second shield guy alive, as he pushes you closer to the left wall then the autoscroller would otherwise allow, saving a couple seconds. 3. wasn't really anything I could do here, enemies just aren't on the route 4. The lag here is every 5th frame, ouch. Unfortunately it is caused by the shield guy, which I can't kill quickly until I reach him but by then its already too late. Ahhh I found a big route change though. Turns out you don't need to hit the 1st switch in the last level at all! Saves ~ 30 seconds. I think everything is looking pretty good except for that ninja fight. I'll post another WIP when I get it.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Finally figured out the ninja boss. Well kind of. His position is obtained by a looping routine that constantly performs INC $002A CLC LDA $002A ADC $0023 STA $002A $0023 is incremented every frame. $002A is where the final value of his (X) position is obtained, by: $002A AND $017A (I assume $017A is used for X and some other address used for Y) this address seems to be affected by player input. multiply by 16 and add 40 for offset and store $04A5. Unfortunately this makes the fight almost completely random, or rather, too computationally intensive to bother. But with enough trial and error I got him in the right spot. In another day or 2 should be complete. The time should be around 24 minutes flat, I hope.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Ok new and improved complete game WIP here. Improvements: Ninja Boss done quicker with some (lucky) luck manipulation New route in Level 6 skips a switch Lag reduction http://tasvideos.org/userfiles/info/19339569269457274
Active player (335)
Joined: 1/19/2010
Posts: 383
Location: Texas
Good job on the ninja boss getting him to fall in a hole you created. That's quite a bit of time saved from just that. I also find it amusing that they have a notice at the beginning of the game saying that this game is prohibited from public display...I guess they didn't expect something like youtube or twitch to exist back in 1990. :p
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
SoulCal wrote:
Good job on the ninja boss getting him to fall in a hole you created. That's quite a bit of time saved from just that. I also find it amusing that they have a notice at the beginning of the game saying that this game is prohibited from public display...I guess they didn't expect something like youtube or twitch to exist back in 1990. :p
Thanks for giving me the idea, I honestly didn't consider it. I think I'll give the run one more complete look before submitting it. I think that message was added by whoever made the rom, as I've seen the live run didn't have it.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2241)
Joined: 11/13/2006
Posts: 2823
Location: Northern California
Alyosha wrote:
I think that message was added by whoever made the rom, as I've seen the live run didn't have it.
What's the filename of the ROM you're using? Is it a perfect dump ([!] at the end of the filename)? If the ROM was altered, it might be rejected just because of that.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
Samsara wrote:
Alyosha wrote:
I think that message was added by whoever made the rom, as I've seen the live run didn't have it.
What's the filename of the ROM you're using? Is it a perfect dump ([!] at the end of the filename)? If the ROM was altered, it might be rejected just because of that.
Hmmm... I looked around and didn't see one with a [!] But I did double check and the live run didn't have the first screen (only the start screen) so maybe i was just mistaken. Also I saved 100+ frames so far optimizing, glad I looked over it again.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2241)
Joined: 11/13/2006
Posts: 2823
Location: Northern California
I looked into it a bit: You've got the right ROM since the movie's checksum matches the perfect dump I have, and the "intended for private use" message shows up in every ROM I've checked, so everything should be good.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Active player (335)
Joined: 1/19/2010
Posts: 383
Location: Texas
Samsara, that message is actually part of the ROM itself. It's like a disclaimer that appears before movies. I just found it humorous is all, since we will be sharing this "publicly" yet the game specifically says we cannot do that.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2241)
Joined: 11/13/2006
Posts: 2823
Location: Northern California
That's what I was saying, basically.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3828)
Joined: 11/30/2014
Posts: 2834
Location: US
I looked over my whole run again and came up with another 5 seconds worth of savings (mostly due to going the right direction in level 6.) Also doing the ending correctly. Hmmm if I had one more decent trick I could get under 24 minutes.
Joined: 1/6/2014
Posts: 3
Location: Neo Arcadia
I didn't know a TAS was out, great job! I know it's been a year but if you plan on improving it in any way, I still have a .tas file I made since early 2014, there may be a lot of mistakes but if there is anything that interests you just take the file: https://mega.nz/#!FQUgEIAZ!CG4X4FsnXKS0gtukwZzN0786MFqaD8oF0TOGaBJ6X-8 The file ends against the ninja though, I had to prepare for my studies at the time so I kinda gave up Emulator: FCEUX 2.1.4a I'll upload the boat level later on YouTube so everyone can see that part, I had some fun doing it by jumping everywhere I could Edit: Link to video
Zakem66
He/Him
Player (176)
Joined: 4/25/2014
Posts: 25
Location: Finland
Here is a new Mission: Impossible TAS submission by me. #5165: Zakem66's NES Mission: Impossible in 23:27.52
Active player (252)
Joined: 8/10/2008
Posts: 116
I'm interested in understanding the mechanics behind the pass locations for RTA purposes. The pass location is stored in $7B8 and is set at the beginning of each level. If it's 0, it's in one location and if it's 1, it's in the other location. The same address is used for levels 1, 3 and 4. From what I can tell, the relevant piece of code determining if it's 0 or 1:
LDA #$01
AND $2A
STA $7B8
$2A is an RNG counter that changes every frame and takes player input (and probably other factors) into account. By observng $2A, I can't see any pattern in the parity of it. The values seem to be completely random. So based on this, I would expect the pass locations to be evenly distributed between the two locations. However... Console attempts point towards a quite heavily skewed distribution and it's unfortunately for the wrong locations... This is where I was hoping for some support. So, if you're familiar with game code and intrigued by this problem, any help would be appreciated.
Jigwally
He/Him
Active player (428)
Joined: 3/11/2012
Posts: 119
Took a quick look at it, Found the section mentioned previously by Alyosha: FE85 INC $002A FE87 CLC FE88 LDA $002A FE8A ADC $0023 FE8C STA $002A FE8E JMP $FE85 It looks like all of the rest of the game's code is run during the frame interrupt and when the RTI opcode gets called the game returns to its prior position in this loop where it continues to do nothing but continually advance RNG value by 1 plus the global frame counter at $23 until the next interrupt. You are right though, I looked at consecutive RNG values while letting it run on the title screen and odd ones are favored more heavily (~2/3). I don't have an exact explanation why, it just seems like a quirk of how it gets added. But since the RNG value for consecutive frames is dependent on how long it spent in this loop, that would suggest to me that you could alter RNG by causing the game to run different code & go through a different # of CPU cycles during the frame interrupt. This could be why player input has an effect on it; you are causing different segments of code to run. This also appears to be the only function that directly changes $2A. I set a breakpoint for writes to $2A + a forbid for the segment $FE85-$FE8E, and it didn't trigger once during the entire TAS playback.
Active player (252)
Joined: 8/10/2008
Posts: 116
Thanks for the feedback, Jigwally. Unless I'm missing something obvious, there is nothing in that algorithm that favors one parity of $2A over the other. Going into the loop: $23 even -> $2A will change parity in every iteration $23 odd -> $2A will stay with the same parity indefinitely The loop is visited twice every frame, with the only difference being that $23 has been incremented in-between. (apologies if you already wrote this with different words in your reply) I don't know if there is a good way to count the number of times a loop like this is run. But even if you were able to somehow control the number of iterations, the starting values still determine what you'll end up with and I don't see how you would be able to control that. To me, it just goes back to that the pass locations should be evenly distributed. You say that you observed more odd than even values of $2A. I've checked and written down the value of $2A frame-by-frame at various points, with and without user input. In the end, I always end up with a more or less even distribution. If you do other checks and find a different result, I'd be interested to have a look as well. Since this is not a popular game to speedrun, it's of course possible that the number of console attempts are too few to conclude on a distribution other than 50/50 and that it's currently just a streak of (particularly bad) luck that has resulted in one location being more common. I guess time will tell... I have found one interesting thing though. The transition time between level 2 and 3 is impacted by player input. You should keep holding up, left or right (or a combination thereof) when you get near the end to finish level 2 asap. Obviously trivial on console and an easy time save (up to 1.5 secs compared to just standing still), if you're aware of it. The current TAS by zakem66 could also save 7 frames that way. I haven't looked at any other level transition. The ending of level 2 is slightly different from the others though, so not sure if something similar can be applied elsewhere.