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

Submission #6144: aiqiyou & Mzscla's NES Moai Kun in 12:57.29

Console: Nintendo Entertainment System
Game name: Moai Kun
Game version: JPN
ROM filename: Moai Kun (J).nes
Emulator: FCEUX 2.2.2
Movie length: 12:57.29
FrameCount: 46714
Re-record count: 127761
Author's real name: 赵超越 & 程嘉军
Author's nickname: aiqiyou & Mzscla
Submitter: aiqiyou
Submitted at: 2018-11-08 15:26:23
Text last edited at: 2018-11-09 12:00:25
Text last edited by: aiqiyou
Download: Download (9386 bytes)
Status: new
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:

(Link to video)
I and Mzscla improved Randil's TAS by 7287 frames. Mainly by means of new strategies, new skills, new glitch and efforts to save lags. The game has a total of 56 stages, and we have improved in 53 stages.

New glitch:

If we get pink friends or butt roundstones before their falling, a new pink friend or roundstone will appear. When we rescue a pink friend in the game, memory values will be subtractive, when the memory value is changed to 0, we can get in the door and pass this stage. By this glitch we can avoid traveling too many routes to rescue pink friends in many stages. And in some stages it could provide faster routes pass the stage with extra roundstones (such as stage 7,27and51). This is the key to saving a lot of time in our TAS.

The original plan for the glitch was to install a bomb underneath a pink friend or a roundstone, and rescue the pink friend or butt the roundstone as soon as the bomb exploded. Also this is the only way to get an extra roundstone. But in the actual TASing process, we found the other way to get extra pink friends, that is through the fall of other objects to delay the falling speed of the pink friends. Bricks, roundstones, bombs, and other pink friends' fall can all delay the next pink friend's fall, and then we just need to jump and hit the bricks at the foot of the pink friend, rescue it before its fall. For example, in Stage 9 we used the fall of other pink friends, in Stage 10 we used the bomb's fall, in Stage 28 we used the brick's fall, in Stage 44 we used the roundstone's fall. Here's one more point: We can only rely on the free fall of roundstones. If we butt the roundstone, it roll to the end of the platform and fall down, this will not delay the falling speed of the pink friends. In addition, at Stage 33, we used another way to made this glitch: pushing the roundstone under the pink friend and jump up before the little man fall down. In Stage 46 when two pink friends are aligned up and down, we rescue the below one first, and then jump up before the fall of the above one. We can get more bombs in all of these ways, but we don't really need too many bombs, only once at Stage 48.

New tricks:

1. Fall and tumble:

When you fall from the height, you will tumble. Whether or not you tumble is determined by the time you fall in the air. So if you can accelerate your descent, you can fall from a higher place without tumble. When you fall against a wall or brick, you jump up facing the wall first and then back to the wall at the appropriate frame. This technique is similar to inhaling the wall, but you need to move away from the wall when you are about to be inhaled. This technique allows you to drop up to 12 pixels in a frame (up to 4 pixels in a normal frame). Of course, you can also stand on the wall to let the falling memory value zero and then fall again, such as 1236 frames, which applies only to a single brick or to the top of multiple bricks connected up and down, otherwise it will be sucked inhaled in the wall.

When you are inhaled into the wall, the game determines that you are in a state of falling. That is to say, if you stay in bricks for too long, you will tumble when you come out. Of course, the memory value for recording your fall time becomes zero when it is greater than 255, so if you have to stay longer in the brick, you won't tumble by coming out at the right time.

2. L+R:

L+R is a very good skill. When you stand on the ground and press L+R, you will face left. When you press L+R in the air, you will face the right side. When we cross the wall to the left, walljumping with the left wall, and jump to the stone near us on the left, Randil's way is to jump up and press right. But we used L+R in our TAS, which saves 1 frames in many places.

In addition, when we press left + right in the air, our abscissa will remain unchanged. When we jump up with left or right,the distance between the take-off pixels and the landing pixels is always odd, no matter how many directions you press in the air. Through left + right, this value can be changed into even numbers, which also makes the accuracy of our TAS more precise. For example, the L+R at 4473 frame.

3. Head butt pixel push:

This has been used many times in the TAS of Randil, but we have extended its scope of application. When we need to cross the wall, we can jump up at a greater distance, butt the brick and then turn around, In general, you can save 2 frames per time, such as 14105 frames. When we leave the ceiling, we jump forward and turn around and butt the brick to create more displacement, which saves 2 frames at a time, such as 6357F.

4. Jump:

Each jump will save 1 frame. At the moment you take off, you move forward 2 pixels. When we are approaching the ceiling, we can press the jump. At this time, we can hear the jump, but the character will not take off, which can save one frame, such as 7284F. When you press the jump before leaving the ceiling, the character will jump one pixel higher and land a few frames later. With this technique, you can span two bricks at a time, and you need to avoid this in many places, because it will increase your time in the air, such as 3690 frame. The height of walljumping is usually one frame higher, it is same as the takeoff height before you leave the ceiling.

5. Headache:

In Randil's TAS, he mentioned this. If the we butt six bricks (including roundstones) in a maximum 192 frame period, Moai will have a headache, this makes you unable to attack within 480 frames. The timing of these 192 frames is recorded by D8 memory value. The memory value is increased by 1 points per 16 frames, and 0-11 is a cycle. When you press A or B on a particular frame, D8 memory value increases by an extra point, so the period is often less than 192 frames. In addition, pause before the D8 memory value increases will prolongs the period.

In Randil's TAS, he effectively avoided headaches. Usually when we attack in situ, we can move after 15 frames. But if we happen to have a headache when we top this brick, we can move immediately. Usually, using this technique can save us 15 frames at most. But if we encounter a lot of falling bricks or boulders, we can use headaches to jump up before their falling. This also provides us with faster routes at some stages, such as the 4th, 44th, 48th and 52nd checkpoints.

6. Attack on the ice

When we attack in situ on the ice, push down will keep the character move forward. Randil's TAS used this point, but it was not mentioned in his description.

7. Periodicity of the game:

We called 1b memory value ‘RND’. Bombs explode only when RND is a multiple of 4. Some monsters only spit bats when RND is a multiple of 8 (e.g. Stage 14). Butted roundstone only land when RND is a multiple of 4. D8 memory value only increases by 1 when RND is a multiple of 16. Of course, in addition to the D8 memory value, other situations may change by pause. We can also pause to make the game still, but it does not affect the bomb explosion and the falling of roundstones. Through this, many lags can be solved. For example, at Stage 8, I used once pause before the bomb exploded. This pause did not affect the clearance time, but it could save 1 lag in this stage.

Similar to the 21-frame rule of SMB, we can save lags by slowing down the previous stages few frames when we can't save another bomb or roundstone cycle at the stage. For example, we saved 2 lags by waiting for one frame at Stage 37, and also ensured that we could have a headache when we butt the last brick. If we did not wait for this frame, the bomb at Stage 38 would explode one frame slower. In the balance between the periodicity of the game and how to deal with lag, we spend a lot of time to minimize the lag without affecting the clearance time.

8. Push value:

When you push a roundstone, dc memory value will increase, and when this value is greater than 30, it will push the roundstone forward. In general, this value can be saved, which was also used in Randil's TAS. Preserved push values will disappear in special situations, generally when the character is still, such as walljumpings, when you stick to the wall, the push values will return to zero. When you jump up to a roundstone that is falling freely, the push value may be zero. If you press L+R+A while you jump, you can save it.

9. Attacks by enemies:

the first attack of monsters, whether swords or bats, is uncontrollable, while the remaining attacks can be avoided by operation, avoiding superfluous attacks by monsters will save lags.

Special thanks: zyr2288 and klmz.

Zyr2288 helped us to find the relationship between D7 memory and D8 memory, so that we can control headache. klmz helped us improved the 4th and 44th stages, respectively, 5F and 108F.


The screenshot suggest is in frame 43760.

Stage aiqiyou&Mzscla Randil Frame Saved Total
1 445 448 3 3
2 955 960 2 5
3 1702 1763 56 61
4 2580 2688 47 108
5 3196 3304 0 108
6 4014 4127 5 113
7 4824 4999 62 175
8 5465 5657 17 192
9 6583 6872 97 289
10 7073 7481 119 408
11 8255 8730 67 475
12 9661 10164 28 503
13 10278 10781 0 503
14 11326 11831 2 505
15 11920 12425 0 505
16 12771 13281 5 510
17 13734 14259 15 525
18 14482 15048 41 566
19 15443 16160 151 717
20 16848 17580 15 732
21 17857 18619 30 762
22 18521 19301 18 780
23 19093 19959 86 866
24 19894 20885 125 991
25 20426 21516 99 1090
26 21043 22138 5 1095
27 21972 23247 180 1275
28 22711 24178 192 1467
29 23560 25073 46 1513
30 24410 26190 267 1780
31 25270 27054 4 1784
32 26109 27945 52 1836
33 26787 28693 70 1906
34 27962 30163 295 2201
35 29207 31417 9 2210
36 30647 33397 540 2750
37 31285 34086 51 2801
38 31914 34823 108 2909
39 32807 35835 119 3028
40 33493 36596 75 3103
41 34398 37546 45 3148
42 35660 39077 269 3417
43 36341 39891 133 3550
44 37206 41053 297 3847
45 37941 41791 3 3850
46 38633 43216 733 4583
47 39556 44147 8 4591
48 40702 45639 346 4937
49 41373 46330 20 4957
50 42128 47184 99 5056
51 43088 48271 127 5183
52 43827 49262 252 5435
53 44438 50020 147 5582
54 45279 50980 119 5701
55 45986 52101 414 6115
56 46714 54001 1172 7287




卡出该BUG最初始的方案是在小人或者圆石下方安装炸弹,当炸弹爆炸的瞬间吃到小人或者顶走圆石。对于卡出双圆石来说,这是唯一的途径。但是在实际制作过程中,我们发现了其他卡双小人的办法,那就是通过其他物体的下落来延迟小人的下落速度。石块、圆石、炸弹以及其他小人的下落都会延迟下一个小人的下落,这样我们可以在起跳的同时顶碎小人脚下的石块,在其即将下落之前卡出BUG。例如:第9关我们借助其他小人的下落来卡出双小人,第10关我们利用炸弹的下落卡出双小人,第28关我们借助石块的下落卡出双小人,第44关我们利用到了圆石的下落卡出双小人。这里补充一点:圆石只有在自由下落时才可以卡出双小人,也就是我们需要炸掉或者顶碎圆石下面的砖块让圆石自由下落,如果是将圆石水平方向顶走,圆石移动到平台尽头下落,是无法卡出双小人的。另外,33关我们用到了另一种卡双小人方式:推动小人脚下的圆石,在小人下落前起跳。46关当两个小人上下排列时,我们先吃到下面的小人,在上面小人下落前起跳也可以卡出该BUG。 我们可以利用所有卡双小人的方法来获得更多的炸弹,但是实际上我们并不需要这么多炸弹,只有在48关我们使用过一次。






左右冲突键是非常好用的一个技巧。当你站在地面上按左+右时,你会面向左。当你在空中按左+右时,你会面向右。当我们向左穿墙、向左二段跳、跳上左边离我们很近的石块时,Randil的方式是起跳后按右。而我们的TAS是按左+右,这样在很多地方会节约1帧。 另外,当我们在空中按左+右时,我们的横坐标会保持不变。当我们正常起跳时,起跳像素点到落地像素点的距离总是奇数,无论你在空中按了多少方向。而通过左+右,可以让这个数值变为偶数,这也更加精确了我们TAS的精度。如4473帧的左加右。


当你顶碎一块砖,顶走一个圆石,或者顶一个不能顶碎的砖块时,你的X轴坐标会被瞬间移动到一个固定的值。这一点在Randil的TAS中多次用到,但是我们延伸了它的适用范围。当我们需要穿墙时,我们可以在更远处起跳,在空中顶一下砖块再转身,这样可以在瞬间增加最多3个像素点的位移,一般来说每次都可以节约2帧,如14105帧。 当我们离开天花板时,我们向前起跳,转身顶砖块来造成更多的位移,这样每次也可节约2帧,如6357帧。


每次跳跃都会节约1帧。当我们将要走近天花板时,我们可以按跳,这时我们会听到起跳的声音,但是角色并不会跳起来,这样也可以节约1帧,如7284F。 当你在离开天花板之前按跳跃,角色会跳的更高1个像素点,也会更晚几帧落地。通过这个技巧可以一次跨越2块砖,同时在很多地方需要避免这种情况的出现,因为这会增加你在空中的时间,如3690帧。 当你二段跳时,第二次跳跃的高度通常是要更高一帧的,与离开天花板之前起跳高度相同。















Similar submissions (by title and categories where applicable):