Submission #2544: True's NES Somari in 24:14.09

System Nintendo Entertainment System Emulator FCEUX 2.1.2
Game Version any Frame Count 87389
ROM Filename Somari (Unl).nes Frame Rate 60.0988138974405
Branch Rerecord Count 3994
Unknown Authors True
Game Somari
Submitted by True on 1/15/2010 6:49:49 AM

Submission Comments
  • Emulator: FCEUX 2.1.2, New PPU
  • Aims to complete each act as fast as possible
  • Abuses programming errors in the game
  • Disregards floors and ceilings
  • Shows that Mario can actually stomp enemies underwater

About This Run

Somari is a Hong Kong pirate (unlicensed, not a hack) game that takes Mario and puts him in Sonic's world on the NES. It is an extremely difficult, glitchy, hard to control and colorful game. The levels and badniks are modeled after Sonic 1, with the addition of the spindash from Sonic 2. This game is not only difficult, it takes a special person to get through this game unassisted and not have ones ears and eyes bleeding. Try it yourself if you think you have what it takes.
The main goal of the run is to get through levels as fast as possible. I disregard the score tally screens, which unlike most Sonic runs, count rings separately from the time bonus. Some total frames can be saved by sacrificing level time to decrease score tally screen time.

Some technical info and quirks about this game

Speed in this game is basic integer speed. There are two speed values for Somari, which are an internal speed value and the screen speed value. Max normal speed is 5px/frame, although zipping is possible at 7px/frame. After passing certain internal speed threshholds, Somari's screen speed instantly increases or decreases to the next value, which is why at times Somari tends to have a large visible jump in speed. These threshhold points are abused heavily in the run.
All jumps are of a fixed height (unless a ceiling is hit). Speed can't normally be gained in jumps. However, in some cases, touching ceilings, corners or collecting rings can cause the speed value to change (such as increase if you are holding a direction). This is abused heavily throughout the run.
Spindashing and rolling sucks in Somari, because it can't be interrupted. You can't jump or cancel out of it - you have to wait until you slow down to 0 speed (either naturally or hitting a wall) before you stop rolling. However, when coming out of a spindash or a roll, you can start walking and accelerating, even in air. Because of this, spindashes and rolls aren't used much in this run, but it is sometimes used when speed is very low and an enemy needs to be killed, and where taking damage takes more time than the acceleration gained by being able to walk in air.
Somari is limited to 1px/frame max speed in the water. However, acceleration and the internal speed works the same in the water as well as out of it. As soon as Somari leaves the water, he will transition to above water speeds depending on the internal speed (so, if internal speed is 246 and Somari is going 1px/frame underwater, if he jumps out he will go 5px/frame, since a speed of 246 is within the 5px/frame thresshold).
When running off a ledge, Somari will continue to accelerate.
Many things in the game are based on a 60 frame timer (and likely some other timers I haven't found), such as spikes, Orbinauts, and the delays in the arrival and leaving of the score tally and title cards. Enemies are usually based on Somari's position, but can also be affected by if they spawn on an even or odd frame, or position within this timer. Because of this, I delay about 120 frames at the end of Spring Yard Zone 3 to set up spikes and other objects to be optimal and end up with a net 230 savings in Labyrinth Zone 1.
The score tally screen gives points for rings and a time bonus. However, the time bonus isn't actually implemented so it always gives 5000 points. The ring bonus takes 4 frames per ring to count. Again, the goal of this run is fastest level time, not fastest overall movie input time, so I list a SCORE TALLY after each act and possibility of saving frames specifically on this screen.

Flygon started this run but I found a lot of optimizations (it wasn't unusual for me to shave off 15%+ of the frames from some of his levels) so I basically took it over. He ran a lot of the levels first and then I'd come through and basically clean up. I don't think he really cared since the game got done and we both were able to see and find some neat glitches.
Act by act follows.


Typical fast level. I beat Randil's run from power on by about 16 frames.
SCORE TALLY: Lots of frames can be saved at the score tally if smarter ring collection is used and if Somari is hit near the end.


Speed doesn't really pick up until the second half of the level.
SCORE TALLY: Lots of frames can be saved at the score tally if smarter ring collection is used and if Somari is hit near the end.


Typical level. Going the top route is quicker mostly due to badnik placement and the ability to gain speed. My delays around the moving platform don't waste time since I have to wait for it anyway - if I don't wait then I have to make two jumps which is slower than waiting. It might be able to be jumped on a couple frames earlier, but I couldn't get everything to match time-wise.
SCORE TALLY: The rings could probably be lost at the boss without losing much, if any, time. This would save, at most, 244 frames.


I skip about a third of this level by jumping through the ground and zipping.
SCORE TALLY: Some frames can be saved at the score tally if I get hit near the end (maybe the spikes?).


I realize after the run is done that dropping down at the beginning isn't optimal, but due to later spikes it's doubtful I could get more than a couple frames from fixing this. Somari can't accelerate in lava but he maintains his speed, so when I get damaged I get up to 3px/frame speed before running in the lava.
SCORE TALLY: If frames can be saved here, it wouldn't be many.


Pass through the floor at the beginning. Getting the third hit on the boss is very difficult - there is a one frame window to get the third hit in.
SCORE TALLY: 104 frames can be saved at the score tally if rings are lost at the boss.


There's really no way through the underground part without taking damage, so I optimize it.
SCORE TALLY: Some frames can be saved at the score tally if I get hit near the end.


I go backwards to gain speed to set the timings for the buzzbomber and crabmeats. I take damage at the crabmeat near the end because I can't really find a way past it with the timings that I was given on this level. The only way around it is possibly to delay some frames at the beginning or go significantly faster on previous levels.
SCORE TALLY: If frames can be saved here, it wouldn't be many.


I delay about 120 frames here to optimize timings on LZ1, which ends up saving 235 frames.
SCORE TALLY: Maybe hitting the boss is possible? If so, 88 frames can be saved.


Most annoying level... second longest time-wise. Somari headstomps a Grounder :) There is a ~13 frame wait near the end of the level to wait for the Orbinauts to change their spikeball timings so I can get the most speed out of some areas that act as if you are not underwater.
SCORE TALLY: Some frames can be saved at the score tally if I get hit near the end, or if better ring management is done.


Yay glitches! I guess they forgot to program crushing... If Somari doesn't move, nothing can hurt him :)
SCORE TALLY: It is doubtful many frames could be saved here.


I have to get the air bubble... I can almost make it to the top without it, but I need to save another 60 plus frames and don't really have a way to do it. If I can save these frames in the last underwater area, then I can save over 600 frames total. Oh, yeah - I skip Robotnik :)
SCORE TALLY: Lots of frames can be saved at the score tally if I get hit near the end.


SCORE TALLY: Some frames can be saved at the score tally if I get hit near the end.


I slow down on the downhill parts because traction is lost otherwise and you run in air, where you can't jump. I use this traction to jump over the loops.
SCORE TALLY: 8 frames can be saved at the score tally if the rings are jumped over at the end, although some frames might be lost due to the avoidance of the rings.


Maybe the Bomb + Buzzbomber spring can be done better? Depending on timings, the Orbinaut near the end can be run underneath.
SCORE TALLY: No improvement possible =]

Final Zone

Robotnik can be hit twice per round in this version. Internally the variable is set to six hits but he only really requires five.

The End.


Nach: I am rejecting this movie, since the author of it did not really try to optimize it, instead opting to make excuses and lie that it was only stylistic choices to look sloppy, while not actually being sloppy, and blaming the game for any perceived problems.
This run ignored basic TAS principles such as: avoid items you do not need, try to get rid of items you picked up that affect the end of level counter, and take damage to save time.
Here is a movie file that is based on the submitted movie and completes Marble Zone Act 3 on frame 26410 whereas the submitted movie does so on frame 26514 which is 104 frames slower, than the movie I made. My run was made without the slightest of effort, which shows clearly the submitted run is the same.
Note to TASers who do want to give this game a shot: This is probably a bad game choice.

Last Edited by adelikat on 11/29/2022 3:30 AM
Page History Latest diff