TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #6469: Mars608 & aiqiyou's NES Contra in 08:38.35

Console: Nintendo Entertainment System
Game name: Contra
Game version: JPN
ROM filename: Contra (J)
Branch:
Emulator: FCEUX2.2.3
Movie length: 08:38.35
FrameCount: 31152
Re-record count: 42764
Author's real name: Mars608 & 赵超越
Author's nickname: Mars608 & aiqiyou
Submitter: Mars608
Submitted at: 2019-07-28 06:20:30
Text last edited at: 2019-08-18 20:23:37
Text last edited by: Maru
Download: Download (9867 bytes)
Status: judging underway
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
We finished the new movie now: http://tasvideos.org/userfiles/info/57343125441467155

It's a 115 frames' improvement over the old one. Mainly by let 2P die in stage 4 and keep game over in stage 5 so the two tanks can be hurt much earlier. But 2P dies 1 time fewer so 1P can't game over at the end of stage 7. So we let off some enemies to avoid 1up before stage 7.

We will change the youtube file but not change the text below.

Stage 4, in order to let 2P die here, 1P should kill both two bosses. So it's 13 frames slower than the old one.

Stage 5, because two tanks stop earlier, we saved 123 frames.

Stage 6, 1 fewer jump save 1 frame

Stage 7, 1 fewer pause(very hard because we must kill the second last wall as fast as possible) and change the way 1P dies so we can kill the boss earlier. 4 frames faster.

Stage 8, the same.

  We improved our previous TAS by 167 frames. Details are as follows.(下方有中文发布信息,有需要的观众可以拉至下方观看。)

(Link to video)

看不了youtube的国人可以观看bilibili投稿: https://www.bilibili.com/video/av64134389/

Stage Old New Improvement Improvement(in total)
1 3626 3624 2 2
2 6690 6668 20 22
3 9863 9823 18 40
4 13992 13944 8 48
5 20064 19970 46 94
6 23940 23839 7 101
7 28010 27897 12 113
8 31434 31267 54 167

Level by level comments:

stage 1

Run right all the way, avoid unnecessary jumps and get 2 frames of boost at BOSS.

stage 2

Because of the characteristics of S bullets, only hitting the enemy in the second and fourth stages can refresh the bullets in advance, so that we can shoot more layers of bullets. In the first tunnel, there was only one enemy for us to use before the core opened. We could only use this enemy to turn four bullets into five bullets, and then use 1P and 2P shared bullet memory value to turn five bullets into six bullets. So we were two frames slower than before in the first tunnel, but this tunnel has achieved the best of double S bullets. Tunnels 2, 3 and 5, after the core can be attacked, have achieved the second kill of continuous damage, and are also easy to verify the optimal solution. The hardest thing to deal with is Tunnel 4. We can use the bullets of two characters to make eight consecutive frames of damage seconds killing, but this will cause a lot of lag, so we decided that the tunnel should be solved by 1P alone. It will take 15 frames to kill the tunnel core. In spite of this, the tunnel is not easy to handle. We processed from the first five frames of lag to three frames of lag, and finally made the result without lag.

As for the second BOSS, it is difficult to verify whether the first four core are the optimal solution; the HP volume of BOSS is 16, and the maximum number of bullets with double S bullet is 16. After loading the BOSS HP volume memory, we achieved 16 frames of continuous bloodshed seconds killing, and eventually even the picture of BOSS could not be loaded out.

stage 3

The process of jumping is basically consistent with the pacifist. We let 2P die several times and control the number of lives for later preparation. At this stage, the resurrection after death may land on the platform ahead of the normal jump, so skillful use of death can save some time. However, the backward players can not jump out of the super jump, which will eventually drag the backward players to death, and we have to keep 1P's S bullet to the fourth level, so this skill can only be used once, that is, in front of the fire platform.

It is worth mentioning that there is an eight-frame rule in the third pass of BOSS, which affects the appearance time of BOSS in this pass. We can insert a blank frame before 9070 frames, that is, the last hop before BOSS is delayed by one frame, which will delay the appearance of BOSS by 8 frames. Therefore, if we want to improve the TAS before the third BOSS, the minimum amount of improvement is 8 frames. For us, these eight frames are hard to find.

The total HP volume of the third BOSS is 32. Double S bullets need two loops to kill. The first round of bullets only need to ensure 16 frames of continuous bleeding, the more difficult is the control of the second round of bullets. The second round of bullets needs to jump up and launch, so we need to do the following analysis (the jump in the table is the highest jump in normal state, which can let us stay at a higher position for a longer time): The refresh time of the first bullet in the second round is fixed. We only need to adjust the jump time to let the first bullet shot at the desired height, and the remaining 15 bullets staggered to ensure that the second round bullet can also bleed for 16 consecutive frames. According to the data in the table, if the first bullet hits the BOSS in 13 frames, the next 15 bullets can not achieve continuous bleeding, so we choose to let the first bullet hit the BOSS in 14 frames and the last 15 bullets bleed continuously, so as to verify the optimal solution of this BOSS.

Frame after jump Y position Frames before a bullet hit BOSS
1 196 30
2 192 29
3 188 28
4 184 27
5 181 26
6 177 25
7 174 24
8 171 23
9 168 22
10 165 21
11 162 20
12 160 20
13 157 19
14 155 18
15 153 18
16 151 17
17 149 16
18 147 16
19 146 16
20 144 15
21 143 15
22 142 14
23 141 14
24 140 14
25 139 14
26 138 13
27 138 13
28 138 13
29 137 13
30 137 13
31 137 13
32 137 13
33 138 13
34 138 13
35 139 14
36 139 14
37 140 14
38 141 14
39 142 15

stage 4

In the tunnel before the fourth BOSS, except tunnel 1 and tunnel 3, other core are continuously bloodshed and killed at the moment of opening. Because the shared bullet memory of double S bullets is always occupied by 1P first, the shared bullet can only be staggered by 1P and 2P. In this case, one of the two cores in tunnel 2, 3, 4, 5 must slow 1 frame killing, this is determined by the game mechanism, so we also call it continuous bloodshed killing. In Tunnel 1 and 3, the optimal solution of the tunnel can be calculated by using the verification method of Tunnel 1 of Stage2.

The first three cores before BOSS4, each core's HP volume is 10, a total of 30 HP volume. Our first loop of S has only 16 bullets, that is to say, the second round needs to solve 14 points of HP as soon as possible. Since the rightmost core opens one frame later than the other two, the number of bullets refreshed per frame in the second loop is 2,3,3,3,3,2. So make the chart as follows:

scheme1:

Frame 1P 2P
1 1 1
2
3 3 3
4
5 3 3

scheme2:

Frame 1P 2P
1 2
2 3
3 3
4 3
5 3
According to the rule that the maximum drop of HP per frame is 1, it can be seen that scheme 1 is one frame slower than scheme 2, and scheme 2 is the best solution. However, scheme 2 is very difficult because of the 16 bullet memory, 6 of which are 1P and 2P separately, the remaining 4 are shared memory, that means it's hard to distribute bullets perfectly. And lag is easy to occur here, so we finally choose scheme 1. Although we're one frame slow here, the first truck in stage5 has a two-frame frame rule, so even if we're one frame fast here, it's an invalid improvement (we've verified it with the help of cheats), because without a new BUG, I can prove that it's the optimal solution from the frame rule before the third BOSS to the fourth BOSS. In order to make this frame lift effective, we have to find another frame before the first truck, which is very difficult to achieve.

The HP volume of both BOSS in stage 4 is 10, and both BOSS appear at the same time. We only need to hit 8 bullets per BOSS in the first loop of 16 bullets, and in the second loop, the two bullets of each character just should shot as soon as possible at the highest jumping point.

stage 5

Compared with the previous TAS, at both trucks, we deliberately increased the jump height so that the truck could stop ahead of time. The first truck revived 2P ahead of time, because 2P could jump up and avoid being hit by truck, saving some time here. The fifth BOSS, by controlling luck, let BOSS appear on the left most side, 2P revived in the air hit the BOSS, achieved 32 frames of continuous bloodshed seconds kill. In the previous TAS introduction, we mentioned the frame rule of the fifth BOSS. Later, we found that this frame rule only affects the appearance time of BOSS picture, and has nothing to do with the loading time of BOSS HP volume memory, so the frame rule of the fifth BOSS actually does not exist.

stage 6

Stage6 is faster for one person than for two, which we have verified before. Good luck was encountered at this level, saving three pauses, and we saved one frame by controlling the jump height, finally improved seven frames at this stage. At this stage, the method of double-to-single conversion was proposed by mtvf1 . In several consecutive transverse flame positions, our longitudinal jump does not produce transverse displacement after hitting the wall. However, after the death of 2P, we can use this time to pull the horizontal coordinates of 1P back to 128. The final effect is the same as that of a single person.

stage 7

Stage 7 is dramatic. In our previous TAS, we used a single-person route, 10 frames faster than alex's TAS. However, in the process of our remake, we found that the two-person route should be faster than the single route, and here we improved 12 frames. Moreover, in the 2 players mode, 2P can get an R at this stage, which helps us to kill the last two BOSS in stage 8 more quickly. At the seventh BOSS, let 1P die to prevent bringing S bullet to the last stage leading to an increase in BOSS HP volume. At stage 3, we let 2P die several times, in order to prevent the resurrection of 1P here and extend the clearing time of this stage. In addition, if we use cheats to improve 1 frame at this BOSS, 1P will not die.

stage 8

With the initial bullet, the HP volume of the two BOSS in this stage is very low, and we have improved 54 frames at this level.

special thanks

mtvf1 and zyr2288. Mtvf1 puts forward the route of double-to-single in the sixth stage; zyr2288, as the previous record holder of this TAS, also a hack author of Contra, which has greatly helped our TAS.

This project took us about half a year. From the beginning, we started this project with the new route of Stage 3 and reasonable death planning. Up to now, we have made this TAS better within our capabilities, and inferred the optimal solution of some positions through some mathematical calculations. In the future, we may not do this TAS without new BUG discoveries. Unfortunately, the star of Contra belong to Super C, and we can only get a moon.

我们终于完成了改进后的录像。这个录像比我们之前的录像快了115帧,主要依靠的是在第四关结尾让2P送死并让2P保持game over到第五关结尾,于是第五关的两辆坦克可以更早地停下。但是由于这样做2P比原来少死了一次,于是1P在第七关结尾就没法game over了。但是整个游戏已经没有可以送死的地方了,所以我们决定控制分数的取得,放过部分敌人来避免加命。

youtube和bilibili站的投稿内容我们会修改,但是下方的发布信息我们会保持原样以方便比对。

第四关,由于2P需要送死,两个BOSS需要有1P一人解决,所以慢了13帧。

第五关,坦克更早停下于是省了123帧。

第六关,少一次跳跃,总共省下1帧

第七关,少一次暂停(非常难,倒数第二块钉板要尽快杀死很不容易),最后操纵出不一样的小兵来避免让它发子弹浪费的一帧,总共省了4帧。

第八关,和原来一样。

我们在原TAS的基础上提升了167帧,详情如下:

关卡 原纪录 现记录 本关差距 总差距
1 3626 3624 2 2
2 6690 6668 20 22
3 9863 9823 18 40
4 13992 13944 8 48
5 20064 19970 46 94
6 23940 23839 7 101
7 28010 27897 12 113
8 31434 31267 54 167
第一关
全程往右跑,避免不必要的跳跃,在BOSS处得到2帧的提升。
第二关
我们使用双S弹获得了20帧的提升。由于S子弹的特性,在第二关和第四关只有命中敌人才能提前刷新子弹,打出更多层的子弹。在第一个隧道中,机关开启之前只有1个敌人供我们利用,我们只能借助这个敌人将4层子弹变成5层,然后利用1P和2P共用子弹内存值将5层变成6层子弹,所以我们在第一个隧道相比之前慢了2帧,但是这个隧道已经做到了双S弹的最优解。第2、3、5隧道,在机关可以被攻击后,都做到了连续掉血的秒杀,也都是容易验证的最优解。最难处理的是隧道4,我们可以利用双人的子弹做出连续8帧掉血的秒杀,但是这样会造成大量的lag,所以我们决定这个隧道由1P单独解决,这样需要花费15帧击杀这个隧道的机关,尽管是这样,这个隧道也并不容易处理,我们从最开始的5帧lag,处理到3帧lag,最后终于做出了没有lag的结果。

至于第二关的BOSS,开始的4个机关很难验证是否为最优解;BOSS的血量为16,双S弹屏幕中存在的子弹数目上限也是16,在BOSS血量内存加载之后,我们就做到了16帧连续掉血的秒杀,最终连BOSS的贴图都没来得及加载出来。

第三关
跳跃的流程与和平模式基本一致。我们让2P多死几次,控制好生命数为后期做铺垫。在这一关,死亡之后的复活可能比正常跳跃提前在平台上着陆,所以巧妙的利用死亡可以节约一些时间。但是,落后的玩家是无法跳出超级跳的,那样会导致落后的玩家最终被拖死,而我们又必须把1P的S弹带到第四关,所以这个技巧只能用一次,那就是在有火的平台前。

值得一提的是,第三关BOSS有一个8帧规则,这个帧规则影响本关BOSS的出现时间。我们可以在9070帧之前插入一帧空白帧,也就是BOSS前的最后一跳延迟一帧,这样会导致BOSS延迟8帧出现。所以,如果想在第三关BOSS之前提升这个TAS,最少的提升量是8帧。就我们而言,这8帧是很难被找到的。

第三关的BOSS总血量为32,双S弹需要两轮即可击杀。第一轮子弹只需要保证16帧连续掉血即可,较难的是第二轮子弹的控制。第二轮子弹需要跳起来发射,所以我们有必要做以下分析(表格中的跳跃为正常状态下的最高跳跃,可以让我们在较高的位置停留更长的时间):第二轮中的第一颗子弹刷新时间固定,我们只需要调整跳跃时机,让第一颗子弹在我们想要的高度打出,剩下的15颗子弹交错打出,保证第二轮子弹也可以连续16帧掉血。第二轮子弹每一帧刷新一颗,根据表格中的数据,如果第一颗子弹13帧命中BOSS,后面的15颗子弹是无法做到连续掉血的,所以我们选择让第一颗子弹14帧命中BOSS,后面的15颗子弹连续掉血,以此可以验证本关BOSS的最优解。

起跳后帧数 纵向位置 子弹击中BOSS所需时间
1 196 30
2 192 29
3 188 28
4 184 27
5 181 26
6 177 25
7 174 24
8 171 23
9 168 22
10 165 21
11 162 20
12 160 20
13 157 19
14 155 18
15 153 18
16 151 17
17 149 16
18 147 16
19 146 16
20 144 15
21 143 15
22 142 14
23 141 14
24 140 14
25 139 14
26 138 13
27 138 13
28 138 13
29 137 13
30 137 13
31 137 13
32 137 13
33 138 13
34 138 13
35 139 14
36 139 14
37 140 14
38 141 14
39 142 15

第四关
第四关BOSS之前的隧道中,除了隧道1和隧道3,其他的机关都在开启瞬间连续掉血击杀,由于双S弹的共享子弹内存始终由1P优先占用,所以共享子弹只能由1P和2P交错打出,在这种情况下,隧道2、3、4、5的两个机关必然有一个慢1帧击杀,因为这是游戏机制决定的,所以我们也称之为连续掉血击杀。在隧道1和隧道3中,使用第二关隧道1的验证方法,可以计算出该隧道的最优解,这里不做赘述。

第四关BOSS的前三个机关,每个机关的血量为10,共计30点血。我们第一轮的S只有16发,也就是说,第二轮需要尽快解决14点血量。由于最右边的机关相比另外两个晚一帧打开,所以第二轮每帧子弹刷新的数量为:2,3,3,3,3,2.所以做图表如下:

方案1:

帧数 1P 2P
1 1 1
2
3 3 3
4
5 3 3

方案2:

帧数 1P 2P
1 2
2 3
3 3
4 3
5 3

根据机关每帧最多掉1滴血的规则,可以看出,方案1会比方案2慢1帧,方案2为最优解。但是,方案2的难度很高,因为在16个子弹内存中,分别有6个是1P和2P单独享用,剩下4个内存为共享内存,而且在这里很容易出现lag,所以我们最终选择了方案1。虽然我们在这里慢了1帧,但是第五关的第一个卡车有一个2帧的帧规则,所以即使我们在这里快1帧,也是无效的提升(我们已经借助金手指验证过),因为在不出现新BUG的前提下,我已经可以证明从第三关BOSS的帧规则之后到第四关BOSS之间的最优解,而想让这1帧提升有效,我们必须在第一个卡车前找到另一帧提升,这是很难做到的。

第四关的最终BOSS血量分别为10,两个BOSS同时出现。我们第一轮16颗子弹只需要做到每个BOSS打8颗,第二轮每个角色的两颗子弹在跳跃最高点尽快打出即可。

第五关
相比之前的TAS,在2个卡车处,我们都刻意提高了跳跃的高度,使得卡车能够提前停下。第一个卡车让2P提前复活,因为2P可以跳起来避免被卡车撞死,在这里节约了一些时间。第五关的BOSS,通过控制运气,让BOSS在最左侧出现,2P复活在空中打伤害,做到了32帧连续掉血的秒杀。在之前的TAS介绍中,我们提到了第五关BOSS的帧规则,后来我们发现,这个帧规则只影响BOSS贴图的出现时间,与BOSS血量内存的加载时间无关,所以第五关BOSS的帧规则实际上是不存在的。
第六关
第六关单人比双人更快,这一点我们之前就验证过。在这一关遇到了比较好的运气,节约3次暂停,并通过控制跳跃高度节约1帧,在这关提升7帧。在这一关,由mtvf1提出的双人转单人的方法。在几处连续横向火焰的位置,我们的纵向跳跃在撞墙之后就不会产生横向位移。但是,在2P死亡之后,我们可以借助这段时间把1P的横向坐标拉回128,最终的效果和单人是一样的。
第七关
第七关是较为戏剧性的一关。在我们之前的TAS中,我们使用单人的路线,比alex的TAS快了10帧。然而在我们重制的过程中,我们发现双人的路线其实应当比单人路线更快,在这里我们提升了12帧。并且,在双人模式下,2P可以在这一关得到一个R,帮助我们更快的击杀最后一关的两个BOSS。在第七关BOSS,让1P死亡,防止把S弹带到最后一关导致BOSS血量增加。在第三关我们让2P多死几次,就是为了防止这里1P死亡之后复活延长本关通关结算时间。另外,如果我们使用金手指让本关BOSS再提升1帧击杀,1P就无法死亡。
第八关
使用初始子弹,本关两个BOSS的血量都很低,在这一关我们提升了54帧。

特别感谢:

mtvf1和zyr2288。mtvf1提出了第六关双人转单人的路线;zyr2288作为原TAS纪录保持者,同时也做过魂斗罗的hack,给我们的TAS做出了很大的帮助。

这个项目,花费了我们大概半年的时间。从一开始我们凭借第三关的新路线和合理的死亡规划入手这个项目。到现在,我们已经在我们的能力范围内将这个TAS做到更好,并且通过一些数学计算推断出部分位置的最优解。在未来,如果没有新的BUG发现,我们可能不会再去做这个TAS。只可惜,魂斗罗的星星属于Super C,我们只能获得一个月亮。


Maru: Judging.

Maru: Setting to delayed pending new improvement.

Maru: Replaced file with a 115 frame improvement.


Similar submissions (by title and categories where applicable):