Game : Code Name Viper,
Emulator used : FCEUX 2.06.04 ,
Goal : This run aims for the fastest time.
I managed to optimize my favorite game. This is 120 frames improvement.
First of all I found a new technique which saves time: If you need to jump on the other platform/box then jumping on its very first possible frame makes your faster by 1 frame everytime you do it (but beware there is a catch (which is harder to explain in words so i am leaving it )
Que: Why did i not kill more and more enemies to make this run more entertaining/fastpaced ?
Ans : To save time i must manipulate enemies in such way that avoiding jumps is easily possible (because each jump slowdowns you by 4 frames ) and hence not killing enemies can prevent the loading of more enemies .
Tricks :-
1. Avoid jumps.
2. Whenever you need to jump multiple times try to jump contineously (here's an example to make you understand better :- 3 non-contineous jumps makes you slow by -4-4-4 = 12 frames , but if you jump contineously then it it makes you slow by -4-2-2 = 8 frames ), Hence jumping contineously is better.
3. You can follow the new technique which i which i mentioned above.
4. Reduce lag (yes even after not showing red frames this game has lag and it can be reduced ).
5. When you need to fire at an enemy behind you then don't fire in mid air because it slowdowns you by 2 frames so instead fire when you are about to land (it doesn't cost any frame).
6. Contineous jump after jumping over bullet firing enemy makes the enemy unable to detect your position (using this trick can be useful at some places as it converts two non-contineous jumps into contineous).
I used trial and error method at every single location to find new routes and improvements (this is where my run improves upon )
These are the locations where i saved time :-
Selection of easy difficulty is faster by 1 frame.
Area 1: reduced two jumps and used my new technique to save around 15+ frames in this level .
Area 2: this is the area/level where i got biggest time save......Used new route, reduced lag greatly , reduced one jump , used new technique to save around 35+ frames in this level.
Area 3: Used the default grenade commander's door (by chance ) it helped to do a contineous jump later in the game, used spring to get on upper platform because this new route was faster by 3 frames, reduced jumps to save a few frames .
Area 4 : reduced jumps to save time.
Area 5 : changed grenade commander door to reduce 3 jumps and also reduced lag.
Area 6 : Converted two non-contineous jumps into contineous jumps, reduced lag.
Area 7 : avoided unnecessary acceleration from the third conveyor belt and jumped on the first frame of next conveyor belt of ground level platform (got 5 frames) also reduced lag by 3 frames.
Area 8 : reduced jumps.
Used new technique in all areas at various locations to save frames.
feos: Claiming for judging.
feos: This run was really tricky to figure out. I had to do a 3-way comparison, with the current publication as well as the old movie by J.Y that was never submitted here.
The main obstacle is that this run uses the easiest difficulty, while both other runs use hard (J.Y also doing the second quest, whatever that is). Coupled with variable enemy spawns (affected by difficulty and when previous enemies despawned), it made it really hard to compare the 3 movies in optimality.
First I compared this run with J.Y's, which is a bit faster, but it's still very obscure, because the old link posted in the rejected submission thread was dead, and one had to use WayBackMachine while translating from Chinese to find it. I can't really consider it a well known record worth rejecting over.
Now actual comparison is kind of interesting. Half of the levels in Pankaj's runs are shorter, which was heavily affected by fewer spawns. And the levels J.Y done better (21 frames faster in level 2 and 35 in level 8) I tried to port the improvements to this submission and miserably failed, losing more time. To make this submission significantly shorter, one will have to test much more spawn manipulation and routing. The only part I managed to improve was saving 4 frames on the final boss, which I'm adding via submission replacement, but it's too tiny to consider co-authorship. J.Y jumped at a different frame and attacked the boss more optimally as a result.
XTREMAL93's run I also compared closely. I had to write a lua script that calculates gameplay lag, for both FCEUX and BizHawk:
if emu.registerafter ~= nil then
-- FCEUX
emu.registerafter(function()
emu.setlagflag(memory.readbyte(0xCC) ~= 0)
end)
else
-- BizHawk
event.onframeend(function()
local lag = memory.readbyte(0xCC) ~= 0
emu.setislagged(lag)
tastudio.setlag(emu.framecount(), lag)
lagcount = emu.lagcount()
if lag then
lagcount = lagcount+1
emu.setlagcount(lagcount)
end
end)
event.onloadstate(function()
lagcount = emu.lagcount()
end)
end
And what I saw using this script is that only in a few levels this run has less lag: level 1 (-5), level 6 (-14), and level 7 (-6). Other levels were either no difference or 1 lag frame less. Since spawns are in different order, and there's fewer spawns in this run, I was unable to determine how many of those lag frames were from better play, and how many were from easier difficulty.
Regarding level durations, this run was 3 frames slower in level 5, but faster in all the rest (-168 frames total). It's true that jumping onto corners was done better in this run, as well as chaining jumps. I haven't found any instances of worse play aside from a couple different jumps in level 5, all the rest was slightly better. So I can't seriously consider rejecting this run based on optimality, even if improvements are less clear just from movie comparison.
Currently we don't have rules that dictate which difficulty should be chosen, and I don't think we need such a rule anymore, even if it's just a guideline. But for future comparison, and to make the challenge more interesting, I'd recommend using the second quest Hard mode password (397211) and competing with J.Y directly. We most definitely don't ban passwords, instead we encourage them if they unlock a harder mode.
Accepting over [3936] NES Code Name: Viper by XTREMAL93 in 10:56.62.
despoa: Processing...