(Link to video)

Intro

Karnov was one of the most successful arcade releases of 1987. An NES port launched in North America early in 1988. The game and character of Karnov are widely associated with Data East (now Paon DP), but Sakata SAS was also involved with the NES port’s infamous programming. The plot is that Jinborov Karnovski—a fire-breathing Russian—seeks the Treasure of Babylon, which has been taken by the evil dragon Ryu. The game has 9 stages, and there is a boss battle at the end of each stage.
Karnov is a run-and-gun platformer that stands out in a few ways. Karnov can collect Options that give him different abilities, such as reaching higher places, stronger attacks, or flying. Options usually can be stashed in the inventory across multiple stages until the right time to use them. The game also has some routing choices, rather than being a pure left-to-right walk.
But the game mostly stands out for its notorious camera, which can scroll in only one direction at a time and only one pixel per frame. The camera does not keep Karnov in the center of the screen. Whenever there’s vertical scrolling, Karnov’s X-position on-screen gets pushed forward. When he reaches the right edge of the screen (X-position 240) and the screen needs to scroll vertically, Karnov can’t move forward any further until the vertical panning is completed. Please do not confuse the technical quality of the programming with the technical quality of the movie. Speedrunning tactics take the camera issue into account. Also note that all jumps are the same height, but Karnov can change direction mid-jump.

Timing

This movie is 1176 frames / 00:19.57 seconds faster than the former movie. Improvements come from better resource planning, routing changes, and optimization. I worked on it for about 2 months. I didn’t convert the movie from FCEUX 2.2.3 to BizHawk 2.5.2 because the NESHawk core doesn’t seem to emulate Karnov correctly.
RTA timing goes from when Karnov starts walking in stage 1 to when the screen starts to fade to black after beating the final boss. This timing cuts 257 frames from power-on but adds 546 frames to the ending. Therefore, RTA timing is 4.81 seconds longer than TAS timing. The published TAS had fallen well behind the RTA record, and this movie barely beats it (3.5 seconds faster). You might wonder why. The first reason is that the game has almost no RNG, and so it is possible to memorize the movements. The second reason is that the broken camera and pre-determined bomb timers create a sort of frame rule, neutralizing some gains. The third reason is that hirexen and DragonDarch are very skilled speedrunners; the next closest RTA time is 10 seconds behind them.
PlayerTypeDateRTA timingTAS timing
Arc (v1)TAS26 May 20059:09.069:04.25
adelikatTAS2 Nov 20089:03.318:58.50
hirexenRTA21 Jan 20208:47.228:42.41
Arc (v2)TAS17 Nov 20208:43.728:38.91
󠛡

Stage Notes

StageThemeFrames (Stage)Frames (Total)Notes
1Village-18-18This stage is actually 1 frame faster. But I needed 19 extra frames to pick up a wing near the end of the stage. Getting the wing now will save more time on stage 8. This stage is fairly straightforward aside from the decision to get the wing.
2Ruins3214I had theorized that the top route might be faster than the bottom, because the top is more of a straight walk and it doesn't have the mini-boss. The top route also has a wing. But a lot of time is lost during the big fall near the end of the stage. There are also no bombs on the top route. The top route is for sure slower. And so I took the bottom route, and I was surprised that I saved 27 frames in the tunnel. The other 5 frames are on the walk to the boss (Lion Keeper) because there is no need to duck.
3Forest212226Normally it's not possible to do a single jump onto the tree and then cross the big gap, but firing a shot at the right time extends the jump distance slightly. I get a ladder to use on stage 4. In the middle of the stage, the important thing is to try to minimize the camera's shifting up or down. The camera is quite difficult to deal with on this stage.
4Ice13239Near the start there's a bomb spawn trigger that would waste about 10 frames, but it's avoidable. I saved 13 frames overall on the stage even though I picked up 2 boomerangs using ladders. The stage-end trigger waits until Karnov is on solid ground, and so it is 16 frames faster to force the camera to scroll down closer to the floor rather than fight the boss (Snake Woman) up near the ceiling. Note that Karnov cannot stock ladders, meaning that you have to use one before you can pick up another one. The 2 boomerangs will be major timesavers on later bosses (stages 5 and 7).
5Ocean60299The ocean took the most effort to solve. A wide variety of combinations using the bottom route somehow all ended up exactly 6 frames slower than the previous movie. It's a camera issue. The top route is faster even without a boomerang. But since I got a boomerang on stage 4 to fight this boss (T-Rex refight), the end result is a huge improvement. Also, even if there were an easy way to get a scuba mask, it wouldn’t help, because the game camera will still limit how quickly the screen scrolls horizontally.
6Town58357The town is a straight walk with no camera issues. The bomb detonates on a pre-determined frame, and unfortunately this bomb timer serves as a sort of universal frame rule, because it neutralizes some frames saved on previous stages (see the Bomb Cycles section). The main difficulty is the boss (Snake Woman refight), because again the stage-end trigger doesn't start until Karnov's feet are on solid ground. The boomerang will not insta-kill her. I use the boots (which double jumping height) for an innovative improvement. It's definitely the most interesting boss fight in the movie.
7Pyramid259616This stage is improved by more than 4 seconds because of 3 major timesavers. The low route is approximately 100 frames faster than the high route. The mini-boss has 21 HP, but a perfectly placed bomb makes it easy to deal with. And the boomerang that I got on stage 4 kills the dragon boss instantly (actually the boomerang hits it 3 times in a row). This stage isn't the prettiest, but I don't see a way to do it any faster. I avoided a lag frame in the rock-chucker part.
8Sky193809The long-term planning finally pays off here. I used 19 frames on stage 1 to have another wing to use on this stage, and I ended up with a 10x return on investment. The time saved comes from minimizing vertical camera movement. The boots, which I get to use on stage 9, are actually optional because of the bomb cycles, but it takes no time to get them.
9Lair3671176The previous movie used a sub-optimal route. With either a ladder or boots, it's possible to jump across a gap near the start of the stage. After using the bomb on the wall, I have used every item in my inventory, demonstrating full-game pre-planning. Again, the bomb goes off on a pre-determined frame and again it takes a bit longer than necessary. I had thought that using boots after the last bomb might save frames because they would let Karnov get up the final ladder faster, but the camera's X-position neutralizes the improvement. The game won't let you use a boomerang on the final boss (Ryu); the game resets you to only the single fireball shot. Ryu is strange because it allows a maximum of only 10 hits each time it pops out of a hole, and so only the third cycle really matters. I improved the third cycle by 2 frames over the previous movie.
󠛡

Bomb Cycles (Very Important!)

After initially completing the movie, I had to go back and do a second playthrough to examine the bomb cycles to see if I could gain any more cycles. Fortunately, the lack of RNG makes it easy to go back and edit previous stages. The three bottleneck points of the movie are the bomb timers on stages 2, 6, and 9. For example, on stage 6, the bomb detonates on frame 18343, 18407, 18471, etc. In other words, there is a bomb cycle that serves as a frame rule every 64 frames. But the bomb has to be placed a minimum of 67 frames (3+64) before the bomb-cycle frame. And so ideally Karnov would reach the position he needs to be in to place the bomb exactly 67 frames before it detonates, but a bad bomb cycle could last as long as 130 frames (66+64) if Karnov arrives just 1 frame too late.
My bomb cycles were 95 frames on stage 2 (neutral), 71 frames on stage 6 (magnificent), and 119 frames on stage 9 (horrible). For the first cycle, there would need to be 39 frames saved before the end of stage 2 to improve the movie’s overall time. Getting the wing on stage 1 took 19 extra frames, but because of this bomb cycle, it actually lost no time overall. The bomb timer in the previous movie detonates on the exact same frame (6611) as my movie, but I am temporarily 14 frames ahead after stage 2 because the previous movie needed to shoot a few more fireballs after the bomb detonation to kill the boss. Ideally, the bomb detonation would be the final hit on the boss. I need to be at least 64 frames faster than the previous movie before the next bomb cycle (mid-stage 6) to actually improve the movie.
I made some major improvements on stages 3-5 though, and so when I got to the bomb cycle on stage 6, I was 320 frames (5 cycles times 64) ahead of the previous movie. From here, there would need to be at least a 60-frame total improvement between the bomb at the end of stage 2 and the bomb at mid-stage 6 to further improve the overall movie time. Such an improvement would trigger a 6th cycle saved, or 384 frames instead of 320. But I don’t know how I could save even a frame or two, and so 60 frames seems unlikely.
The last bomb cycle is near the end of the game, but I cannot directly compare it to the previous movie because that movie used a different, sub-optimal route. I was 809 frames ahead at the end of the stage 8, and so using the same input on stage 9 would actually be only 768 frames ahead overall (12 cycles times 64). But the previous movie’s sub-optimal route made it 367 frames slower on this stage. This bomb cycle is disappointing because if I saved a total of only 12 more frames between the mid-stage 6 and mid-stage 9 bombs, it would result in an additional 64-frame (1 cycle) improvement to the movie. Getting the boots on stage 8 did not cost any frames.
Bomb CycleFrames of SegmentSegment LengthSavings Needed
Stage 21-6611661139
Stage 66612-182791166860
Stage 918279-296871140912
󠛡

Conclusion

After the last bomb cycle very late in the game, it’s back to being a normal movie where every frame matters. My goal is to end the input as early as possible. I tried a lot of crazy things at the end but I don’t see a way to optimize any more. I improved the final boss by 2 frames. Although I focused on explaining bomb cycles, I want to repeat that the game’s odd camera is a strong inhibitor of any potential savings via optimization throughout the whole movie. Thus, it’s possible that this movie has reached the absolute limit of this game. I believe that a potential improvement would require a major glitch or radical new idea.
Overall, Karnov is another game that is almost good. The premise is fairly similar to Contra. The resource planning is an excellent mental challenge because it is not only a question of whether to pick up an item or not; it is also essential to choose the right time to use the item.

Screenshot

Credits

  • hirexen and DragonDarch - real-time speedrunners
  • rainwarrior - lua script
  • fusoya - maps
  • ThunderAxe31 - inspired improvement to stage 3

ThunderAxe31: Judging.
ThunderAxe31: File replaced with a 128 frames improvement. Also replaced ROM checksum for a confirmed dump.
ThunderAxe31: While this movie appears close to the RTA WR, it's mostly because of the game's physics and frame rules, whose leave little room for improvements via movement optimization. In fact, most of the time saved from the previous TAS is thanks to better routing.
The movie is still quite lacking in entertainment, like its predecessors. There isn't much to do about it, as the game is slow and repetitive by nature. It's also worth noting that most of the fame of this game comes from the arcade version, from which it was poorly ported to the NES.
Accepting for Vault as an improvement over the old movie.
feos: Pub.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14875
Location: 127.0.0.1
This topic is for the purpose of discussing #6922: Arc's NES Karnov in 08:38.91
nymx
He/Him
Editor, Judge, Skilled player (1638)
Joined: 11/14/2014
Posts: 810
Location: South Pole, True Land Down Under
Another fine piece of work by Arc! Yes vote
I recently discovered that if you haven't reached a level of frustration with TASing any game, then you haven't done your due diligence. ---- SOYZA: Are you playing a game? NYMX: I'm not playing a game, I'm TASing. SOYZA: Oh...so its not a game...Its for real? ---- Anybody got a Quantum computer I can borrow for 20 minutes? Nevermind...eien's 64 core machine will do. :) ---- BOTing will be the end of all games. --NYMX
Judge, Skilled player (1288)
Joined: 9/12/2016
Posts: 1645
Location: Italy
Hi there, I have a question. I'm watching side-by-side the RTA WR by hirexen and this submission movie, and I've noticed that the RTA run is faster in the second half of stage 3... Is there a known reason for this?
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"
Arc
Editor, Experienced player (768)
Joined: 3/8/2004
Posts: 534
Location: Arizona
ThunderAxe31 wrote:
Hi there, I have a question. I'm watching side-by-side the RTA WR by hirexen and this submission movie, and I've noticed that the RTA run is faster in the second half of stage 3... Is there a known reason for this?
I see the problem. Thank you for bringing it up. I didn't notice that the screen is still trying to scroll vertically downward in the second half of stage 3. The constant jumping on that stage is to prevent the downward scroll. Letting it scroll down escalates into other problems. I needed to keep jumping until the end. As I put in the notes, the camera is really difficult to deal with on this stage. Fortunately the game is edit friendly. After fixing that problem, there's just enough time cut out to save two bomb cycles! Here's the improvement file: http://tasvideos.org/userfiles/info/67504968180428929 Stage 3 still does not look perfect because the game is not letting me start jumping (right after I get the ladder) at a spot that syncs up with the second step, even with frame-perfect jumps. It is unknown to me why the game is being more ruthless toward me there than it was to the real-time runners. However, the problem is now small enough that it would not change the final time because of the bomb cycle limitation. Improvements in this game are measured in bomb cycles (64 frames) rather than individual frames. And so, at this point I can again say that I don't know how I could make the movie any shorter. Watching side-by-side with the RTA run, stage 4 is also slower because I pick up an extra boomerang on that stage. But I make up that lost time on stage 5 since the RTA run gets the boomerang there instead. I'll correct the numbers in the submission soon.
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11268
Location: RU
Can you elaborate on
the NESHawk core doesn’t seem to emulate Karnov correctly.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14875
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [4340] NES Karnov by Arc in 08:38.91
Arc
Editor, Experienced player (768)
Joined: 3/8/2004
Posts: 534
Location: Arizona
feos wrote:
Can you elaborate on
the NESHawk core doesn’t seem to emulate Karnov correctly.
The game plays properly in QuickNES. But when I use the NESHawk core, the stage 1 inputs sync but it is graphically corrupted, like so: Then stage 2 freezes very quickly:
EZGames69
He/They
Publisher, Reviewer, Expert player (3967)
Joined: 5/29/2017
Posts: 2707
Location: Michigan
Probably worth it to report on the github https://github.com/TASVideos/BizHawk/issues
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
tormented
He/Him
Editor, Player (222)
Joined: 9/25/2015
Posts: 37
Arc wrote:
The game plays properly in QuickNES. But when I use the NESHawk core, the stage 1 inputs sync but it is graphically corrupted, like so: Then stage 2 freezes very quickly:
You're using a bad ROM dump (as evidenced by the lack of green checkmark in the lower left). I tried "Karnov (U) [!].nes" from my collection with this movie just now, and encountered none of these issues.
Judge, Skilled player (1288)
Joined: 9/12/2016
Posts: 1645
Location: Italy
tormented wrote:
You're using a bad ROM dump (as evidenced by the lack of green checkmark in the lower left). I tried "Karnov (U) [!].nes" from my collection with this movie just now, and encountered none of these issues.
That's weird, because I used the good dump for playing back the movie, and it synced fine. That's strange to think that a movie made with a bad ROM that doesn't work on an emulator can produce a movie file that also syncs with the a ROM that works on both emulator.
my personal page - my YouTube channel - my GitHub - my Discord: thunderaxe31 <Masterjun> if you look at the "NES" in a weird angle, it actually clearly says "GBA"