Post subject: Somari Star Light Zone Act 1 Speed Run
Joined: 5/1/2007
Posts: 294
Location: MD
Check this Out! http://www.youtube.com/watch?v=ptl1JkO18JE The Unique Master is the Master of Star Light Zone Act 1 in Somari, a Sonic Game on the NES where you play as Mario. Sonic Jam 6 is a Mario Game on the Genesis, where you play as Sonic! They're the Complete Opposite! Super Mario 2 1998 is also the Complete Opposite of Sonic 3D Blast 5 and 6 (Both on NES). Description: This is a response to both LTC's and mchaosg speedruns, this one is tool asisted so don't acuse me of cheater :P. Here I avoid completely taking damage and improved totally the speedrun
I like Doraemon
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Yes, I am serious about this game, and yes I think a run of it would be entertaining. Basically, everyone knows how hard this game is and I think it is fairly fast paced when done right, plus there is plenty of glitches to abuse as well. Do you guys think there should be a run?
Post subject: Re: Somari
Joined: 11/11/2007
Posts: 242
Location: the 1950s
Flygon wrote:
Yes, I am serious about this game, and yes I think a run of it would be entertaining. Basically, everyone knows how hard this game is and I think it is fairly fast paced when done right, plus there is plenty of glitches to abuse as well. Do you guys think there should be a run?
Well theres been TASes of some of the levels on youtube. However I can't find them.
Currently working on: -Possibly the Wily Tower (Mega Man the Wily Wars)
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Thats because they were removed for some reason.
Joined: 11/11/2007
Posts: 242
Location: the 1950s
Flygon wrote:
Thats because they were removed for some reason.
Oh, ok
Currently working on: -Possibly the Wily Tower (Mega Man the Wily Wars)
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
I've beaten the game unassisted, years ago. It took some serious work to pull off. I think it'd be fun to watch a TAS of...
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Now, there is a slight problem, should we use the "good" dump of Somari, the one WITHOUT the special stages or level selects, or the "bad" dump with the stuff?
Post subject: Yes, I know Randil made a post, but this edit is mostly IRC~
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
So my interest has been somehow revived. The main area of interest is Green Hill Zone 2, I knew this game had some collision issues, but I never expected some to be literally the same as Super Mario Bros. Anyway, treat it as an example of what could be done, specifically because it is not optimized in any way... in fact, the whole thing was recorded between 6% and 12% speed. Anyway, this game is very hex edit friendly, in fact, you can literally paste other peoples levels in without ANY luck manipulation whatsoever, and assuming the situation is correct, you can actually copy and paste segments of levels assuming the speed and coordinates are the same. Here is the 100% not copyrighted ROM you can use to playback the movie. Non-new post worthy edit: Completed the test run up to the end of Green Hill Zone It turns out that Robotnik is a major pain in the ass, with both his lengthy invincibility times and nearly impossible to hit every time he gets out of invincibility (Thanks, mostly, due to Somari's VERY momentum based jumping).
Skilled player (1828)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
It looks promising, I think an optimized run could be fun to watch! EDIT: I played around a little with this game myself today, and did a test run of the first level (just for fun). Here's the .fcm. I beat the first level with 32 seconds on the timer, but I think more frames can be saved. Here's a useful lua script I made:
while true do

local function displayer()

xpix = memory.readbyte(0x00B)
xbig = memory.readbyte(0x00A)

xpos = 256*xbig + xpix

xspeed=memory.readbyte(0x014)

if xspeed==0 then xpixspeed=0
elseif xspeed<=12 then xpixspeed=1
elseif xspeed<=76 then xpixspeed=2
elseif xspeed<=204 then xpixspeed=3
elseif xspeed<=236 then xpixspeed=4
elseif xspeed>=238 then xpixspeed=5 end

time1=memory.readbyte(0x33A)
time2=memory.readbyte(0x33B)
time3=memory.readbyte(0x334)

igtime=600*time1+60*time2+time3

ytext=40

gui.text(10,ytext,"X pos: " .. xpos)
gui.text(10,ytext+8,"X speed: " .. xspeed)
gui.text(10,ytext+16,"X pixel speed: " .. xpixspeed)
gui.text(150,ytext,"Ingame Time: " .. igtime)

end

gui.register(displayer)
   FCEU.frameadvance()
end
Good luck with this game! :)
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
I think I love you. I've been trying to remember that loop de loop glitch forever now (I found it two years ago, and uh... wrote over the movie file). Otherwise, your new route reflects (Except for the end 'hills' segment, which amazed me by the way) what an older test did. I may indeed TAS this game one day (Though, I'd probably get my ass kicked by someone such as yours easily =p), though, I really should be finishing Gourmet Paradise first. When a man can't figure out his priorities. xD Edit: I kept finding that the script would keep crashing with a 'D:\NES\somari.lua:16: attempt to compare number with boolean' after reaching a fast enough speed unless I replaced
elseif xspeed<236>=238 then xpixspeed=5 end
with
elseif xspeed<=238 then xpixspeed=5 end
Will 'fixing' it this render the script inaccurate in any way? I see no reason why it shouldn't but I'd like be be able to consult the script maker just in case I'm making a massive mistake. Of course, the error causes the whole script to crash. Using the fix seems to make the script work spiffingly however, but I am worried it could be giving bogus results. IMPORTANT EDIT: THIS GAME CAN CRASH FCEUX! Why? It has already crashed on me twice, and I doubt it is just coincidence. If anyone has any ideas how to fix this, it'd be brilliant. This time, it happened due to me trying to load a state. THIS IS IMPORTANT AS IT MEANS I AM UNABLE TO RECOVER WORK I HAVE LOST! TO CLARIFY THE MATTER. The first crash did NOT happen when loading a save state, it happened while recording the video normally... which also let me recover my progress, unlike the most recent crash.
Skilled player (1828)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Oops, seems like I posted the script with HTML enabled, which ruined the code. I have edited that post now with HTML disabled, so try it again and let me know if you run into something else. I think the only part of the code that got broken was that line you pointed out - and your guess was pretty close, though it should be xspeed>=238. To be on the safe side, you might want to copy the entire code again, you never know if something else got broken too. If you have questions about the script, just throw me a PM and I'll try to help out. :) I realize that it's often confusing to try and interpret other people's code. EDIT: If you're having too many troubles with FCEUX crashing on you, you might want to convert to FCEU with this game, I've had no troubles with this game on FCEU 0.98.28.
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Thanks for the updated script, it turns out my modification was giving false '5 pixel' speeds. I'll try running the game with the new PPU and if that crashes, I'll indeed try FCEU 0.98.28. Thanks for the massive helpings mate. New post edit below: I was bored and made a route plan to Spring Yard 1 I don't think this is improvable by more than 90 frames or so (Which is depressing, because this was recorded at 1% to 6% speed), honestly. Spring Yard 1 has an incredibly linear level layout, and horrible object placement. On the upside it is a great place to take damage and save time on. The level select code is ← ↓ BA → ↑ AB ↑ ↓ ↑ ↓. Edit: DMed because I have nothing better to do. IMPORTANT EDIT BELOW FCEUX is incapable of emulating Somari correctly, as this fm2 will prove. This is the only way to access the end of the zone (In terms of paths) and I'll be damned if I can complete the game without level select. I demand explanation.
Skilled player (1828)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Any new progress on this? Have you decided how to deal with the FCEUX problems with this game? (i.e. will you switch to FCEU or wait until FCEUX can emulate this game?)
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Well, I've been able to establish that I am using a bad ROM (Hence the Labyrinth Zone issues), I still need to find the proper ROM... which is almost impossible, and I have no idea where my USB hard drive containing the good dump is. There is the possibility that accessing the zone via level select breaks the game, but I have to figure that out first. FCEUX still crashes from time to time, but that is easily worked around provided regular save states are made. The games simple enough to memorize where you pressed buttons. HOWEVER, in good news, I have found a zipping glitch in Labyrinth Zone that, on multiple occasions, I've crashed the game with. It turns out that the game has a similar ejection system to the Mega Drive based games. I need to figure out how many pixels per frame it goes at, but I am hopeful it is faster then 5 (I found this out on my DS). Basically, the platforms in Labyrinth Zone don't crush you if you hit a wall... you keep flying through. In fact, spikes won't hurt you, lazy programmers. But rest assured, I have not given up on this game, my only concerns at the moment are Labyrinth Zone 3 and figuring out the routes for Marble Zone. By the way, Labyrinth Zone does have underwater segments (Which you have probably noticed if you watched the Labyrinth Zone 3 test), so I should modify the script for that. Anyway, Labyrinth Zone should be the only zone the glitch works on, sheerly because it is the only one with platforms that allow you to do this. Incidentally, Star Light Zone ROCKS! Perfect TASing material when you can bypass running into bombs. The boss is terrible though. I'll make a video of the zipping glitch soon. To anyone curious as to why the game looks terrible on DailyMotion by the way, it is because it is impossible to encode properly in the H.264 colourspace, even with lossless. Important edit below: FM2 of the Labyrinth Zone 2 glitch This was mostly recorded at 25% speed... with the last parts at nearly 100%, but it demonstrates how powerful the glitch could be in saving time. I need to fully understand it myself, specifically, when to launch Somari, but it could be much much faster then taking the underwater route. Another importaint edit: God bless true! He figured out why the boss failed to load! It turns out Somari's engine is fail. Looks like a complete run is possible!
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
There was a problem with the person playing the game, not the game itself. :) (There was some programming oversight... if you don't take the obvious path, the boss won't trigger. It isn't an engine problem as Flygon hints towards, although the engine is shit.) Flygon didn't want to write this, but I made the observation that while you do not accelerate left/right while jumping, there are actual ways to do so - such as hitting rings and badniks. X speed won't increase to values over normal run speed so it's only really useful when still accelerating, having a badnik in the way and needing to get over it, and rings nearby. Labyrinth zone can use this a lot. The pixel speeds are wrong in Randil's script above. When I get done (or give up) with the hitboxes, I'll post my script which has accurate (though one frame behind) speed. It also has accurate speed in the water... max X speed in water is 2px/frame.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Skilled player (1828)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
You can use the gui.register() command in the script to avoid the "1 frame behind" issue - if you post the script herel, I can give you a hand with it (if you're having troubles making it work yourself). Perhaps you mean that it's not about the script displaying it 1 frame behind, but the value is actually your speed 1 frame earlier, and in that case I guess there's no helping it. And yeah, I didn't do very much testing before coming up with those speeds, so I'm not terribly surprised if they're a bit off. :)
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
The "1 frame behind" issue is because of needing info from two frames ago and not putting an already done check in, causing lots of overwrites and changes. I can fix this later - for now I just know to hit a button a frame earlier than shown. Part laziness, part inexperience (not a Lua fan). Edit: just fixed it. Also the elapsed time display is broken; I'll figure out why later. Also, my lz1 wip is almost done... got it done then found a 1 second time saver at the very beginning of the level as well as fixing all the one or two-frame things that I couldn't see as easily without data.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Got the lz1 wip done, don't know how improvable it is yet...I can't find any more. Found a nice hole where I got into the wall in MZ1 and was able to zip and skip about a fourth of the level (framewise). See here: http://dehacked.2y.net/microstorage.php/info/1891198735/somari-mz1-wip3-true.fm2 (avi http://www.trueserve.org/~true/tas/somari-mz1-wip3-true.avi) Edit 20100102: Updates: mz1, syz2, syz3 also done and looking pretty good. Most, if not all, syz walls can't be zipped through (you can get into them but you won't go anywhere). syz3 boss won't spawn on the left side and I don't know why - waiting for Flygon's WIP of the level to see if he only does it the second time around (I think that is the pattern). Edit 20100103: Add lz3 to the list. There doesn't seem to be a way of going without air - the fastest I can go up without triggering Robotnik still needs another second or so of time. But I did find a nice glitch due to the forced autoscrolling that lets me skip the Robotnik destruction animation (this still technically happens) and him flying away (this does not happen) and lets me position myself right on top of the capsule. WIP AVIs and inputfiles can be found here: http://www.trueserve.org/~true/tas/
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
True wanted me to post this video. It shows just how broken Labyrinth Zone 2 is. Incidentally, sorry about the low quality of the video, this game will be, put simply, an encoders nightmare unless we can get a video codec that uses the entire colour space. Why? Because the original 'lossless' H.264 AVI dump looked like it was encoded with a rather lossy codec. Also note that this isn't the fastest possible way to do this, we have actually found a much faster (But slightly less interesting) route that still zips.
Skilled player (1828)
Joined: 4/20/2005
Posts: 2161
Location: Norrköping, Sweden
Haha, nice find! This game is a lot more broken than I thought. Keep on finding those glitches!
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
I can only hope that Star Light Zone will be as fruitful as Marble and Labyrinth Zone have been, but I'm not too enthusiastic, the zone is incredibly stable and has an incredibly slow boss (You can only get one hit in every time he attacks you). We've also ran into syncing issues with stitching zones together, there seems to be a counter that messes up projectile based badniks, so this slows down progress much worse then we hoped... so... we're going to have to work on optimizing Green Hill Zone as a whole soon, that whole zone is a pain in the ass to plan a route for.
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Re: Star Light Zone, I can probably get 2 or 3 hits in per round, but I haven't TASed it yet. I am thinking of a method that'll probably work, especially since I have the timer variables to make it really easy :) EDIT: I can get 2 hits/round. http://www.trueserve.org/~true/tas/somari-slz3-wip1-true.fm2 http://www.trueserve.org/~true/tas/somari-slz3-wip1-true.avi Bosses in this game take either 9 or 11 hits... even Labyrinth zone sets 11 hits even though Robotnik explodes himself without being hit (although not in my TAS, I just skip right past him). Re: glitches, there's quite a few. Look at the mz1 TAS for an example, and the end of the lz1 TAS, or even the lz3 TAS where I skip Robotnik completely :) Re: stitching, not a huge deal - most can just have the affected segments rerun and the rest stitched together. Enemies have 3 positioning / shooting types in this game - based on Somari's location only, based on the global frame counter, and based on some unknown counter that doesn't match this counter. Level starts and ends are all based on this global 60 frame counter, but some enemies aren't. Not as huge of a deal as Flygon states but it means I can't just concatenate most already run levels. EDIT: The unknown one seems to be based on the main 60 frame timer that a lot of stuff is based on. I think it is an alternating flag that toggles each time 60 frames is read. So far, stitching levels together seems to have a 50/50 chance of working...
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Well, we finally got GHZ1 done... I am about 15 frames faster than Randil's run. So, I started putting levels together. http://www.trueserve.org/~true/tas/somari-wip1-z-tomz1-true.fm2 There's only a couple of glitches up to MZ1, and most of the rest are in Labyrinth Zone... any thoughts on this so far? EDIT because nobody seems to care enough for a bump: done with the main inputfile up to syz2 so far. My syz2 didn't sync at all, and my syz3 also loses sync at an area although I might be able to get it back for most of the run. Labyrinth zone almost certainly won't sync and that's the most annoying zone due to how slow it is and orbinaut / spike timings. HOPEFULLY, this run will be submitted in a week or two. I'll edit again when I get done with syz3 with a WIP if anyone posts showing interest. EDIT 2: Done with syz3, now only Labyrinth and Star Light. My LZ1 run does not sync at all with the current run so I have to rerun the act... as this level takes the most play effort in the game and is also one of the longest, it'll be a while :(
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Editor, Player (69)
Joined: 1/18/2008
Posts: 663
Run is done. Once a couple of people look at it, I'll likely submit it.
true on twitch - lsnes windows builds 20230425 - the date this site is buried
Joined: 9/13/2008
Posts: 30
Why is the bassline of the Green Hill Zone song a beat or two off from the melody? I mean, is it possible it's some kind of programming error, or was the composer competent enough to duplicate the melody, just not with the correct timing? It's kind of a rhetorical question, because I really don't think there's a way to even know, but it drives me insane when I hear it!