by 18 frames. I saved 21 frames on level 1, but lost 3 frames on level 3. More information on this can be found under the respective level's comments.
Circus Charlie is a very simple game with 5 levels to beat. You beat a level by moving forward, avoiding obstacles and objects in your way, and in the end jump up on the pedestal. You also get points by jumping through fire rings, jumping over circus balls, etc. To put it simple: just watch this run and you'll understand the game.
Level 1
- Saved 21 frames.
- Stage time: 3430. (20 bonus points gained)
Those who have TASed this game know how much of a pain this level is...
The trick used to save time is quite trivial, but is very hard to achieve. By moving left,right on the right frame, you push the fire rings a few subpixels to the right. I'm not gonna go into details here, but after doing an extensive analysis of how fire rings move, I found that moving left,right at the right time is the only way to push rings back. So after doing this trick a certain number of times, the fire rings are enough to the right to allow me to jump through the last fire ring and land on the left edge of the pedestal, as opposed to the middle of the pedestal, like in the published run.
One thing that should be pointed out is that the fire rings do not appear randomly. They do have a fixed pattern in when and where they appear. The way they are manipulated in this run, and in all previous runs, is in fact that all fire rings on the whole level are pushed slightly to the left or to the right!
Level 2
- No time saved.
- Stage time: 3560.
This level is extremely straightforward, and there's not much to do here. I copied this level from the published run, because I liked the stylistic choises in this level.
Level 3
- Lost 3 frames.
- Stage time: 3750
This is the other level in this game that is a pain to TAS. The reason for this is that each time you land on a circus ball, you stop for one frame. That means that you want to minimize the number of jumps, since that's the only thing that slows you down on this level.
The randomness on this level is caused by an in-game counter, RAM address $0052. This counter goes from 0 to 5, and increases by 1 per frame, so its pattern is 0,1,2,3,4,5,0,1,... This counter controlls when the circus balls move and when they appear on the screen. Depending on its value when you enter level 3, some jumps are possible and some of them are not. For example, the jump from the first to the third circus ball done in the published run is possible if and only if $0052=2 when you enter the level. Otherwise, this jumps cannot be done.
Because of the time saved on level 1, this time I enter level 3 with $0052=4. This forces me to make 16 jumps on this level instead of 13, as in the published run. Now you will probably ask if it wouldn't save time to enter this level some frames later, so that $0052 is something else than 4. But it turns out that $0052=2 is the best result (It should also be noted that in Phil and Genisto's run, this $0052=2 when they enter this level.)- all other results will force me to do 16 jumps instead of 13. Waiting for $0052 to turn 2 would waste 4 frames, and it would save 3 frames on level 3, so in total it would cost 1 frame, so it's not worth it.
Level 4
- No time saved.
- Stage time: 3880 (10 bonus points lost)
Just like level 2, this level was copied from the published run. I see no potential improvements in this level. I lost 10 bonus points because of the in-game counter that determines when bonus points go down, by beating level 1 faster, it has a different value when I start this level, and that's why I lose 10 bonus points.
Level 5
- No time saved.
- Stage time: 4280 (10 bonus points gained)
Just like level 2 and 4, this level was copied from the published run. I see no potential improvements in this level. I gain 10 bonus points, for the reasons pointed out under the level 4 comments.
Stage times: 3430, 3560, 3750, 3880, 4280.