Posts for partyboy1a

1 2
15 16
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
300 frames is fine
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
maybe even that's important i used snes9x svn113. i'm sorry for that odd emulator settings, but you can prove yourself that this game has nondeterministic behaviour -start the movie, let it play for a while (i think 1000 frames are enough) -do a ramsearch reset -restart the movie and search for nonequal values. it will help me if you give me a savestate shortly before the desync. edit sorry, yesterday it synced, today it doesnt. i'll give you a new file as fast as possible. should i cancel this submission then and post a new one?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
i'm trying road runner (snes) on snes9x 1.51 at the moment, and it seems to be impossible to let the run sync with standard settings. when playing back at normal speed, the run desyncs at a late point. creating (not loading!) a savestate a few moments before the desync caused the run to sync again, i don't know why. using fast forward causes the run to desync at random points. however, if i disable "flexible sound sample mix", the run syncs with significantly worse sound quality, even fast forwarding works, although it was enabled during creation of the movie. increasing the mix interval to at least 50ms will produce good but delayed sound, and it does have no effect on sync stability. does a movie have serious chances to get published if it requires disabling "flexible sound sample mix"?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
some of the tricks i found so far: (i use the "lazymacro" syntax) the fastest way of running to the right is (<Y)[(>Y)]16|>, it's 2 pixels faster than just using (>Y). if you're running right without y for a certain amount of time and you want to change the direction, try +Y <<>|< or +Y <<>>|< or +Y <<<>>|< if you're running to the right with full speed, you can stop movement very fast with +Y <<><! in level 4, you can jump through the spikes which hang from the ceiling, i do abuse that in 4-3. hitting ramps at the top can have unexpected effects. it may be possible to influence the "behaviour" of ramps by changing roadrunners position by a few pixels. (at least in one case thats possible, in 5-3 there is one ramp where i had to do that) ------------- i tried using zsnes, but it didn't record anything after i stopped my movie for the first time. i got 1-1 done even 7 frames faster there ------------- some people wanted to see an "all flags run". i created a small lua script (which can for sure be improved by a lot) which helps if you want to create a map. best method would be to move road runner, but i couldnt figure out how to change his y-position. before using it, you must disable all graphic layers except BG1 and BG4 (and you must be in level 1-1). everything should work well. There are some minor distortions in the map, and it won't show the elevators. You might be able to improve it.
require "gd"

levelname="level1-1"
y = 544  --highest x/y value camx2 can reach in normal gameplay
x = 9344 --found by running completely to the lowest right corner of the map
         --must be adjusted manually

upperblacksize=13 --found by taking screenshots
lowerblacksize=16 --and a little trial-and-error


xsize=256
ysize=224
realysize = ysize - upperblacksize - lowerblacksize

gridx=200
gridy=150

camx1 = 0x7E0050
camx2 = 0x7E0054
posx1 = 0x7E031C
posx2 = 0x7E17A2
posy1 = 0x7E194C
posy2 = 0x7E0038
posy3 = 0x7E03AA

camy1 = 0x7E007A
camy2 = 0x7E0056
xspeed = 0x7E04C6
yspeed = 0x7E0554

image = gd.createFromPng(string.format("%s.png",levelname))

if(image == nil) then
	image = gd.createTrueColor(x + xsize, y + ysize - lowerblacksize - upperblacksize)
end

mycolor = image:colorAllocate(255,0,255)
takingpicture = false

function writeposition(x, y)
	memory.writeshort(posx1, x)
	memory.writeshort(posx2, x)
	memory.writeshort(posy1, y)
	memory.writeshort(posy2, y)
	memory.writeshort(posy3, y)
end

function setgroundflag()
	memory.writebyte(0x7E144D, 0)
	memory.writebyte(0x7E144D, 1)
end

function movetozerozero()
	currentposx=memory.readshort(posx1)
	currentposy=memory.readshort(posy1)
	while currentposx >= 8 do
		writeposition(currentposx - 8, currentposy)
		setgroundflag()
		currentposx = currentposx - 8
		snes9x.frameadvance()
	end
	while currentposy >= 8 do
		writeposition(currentposx, currentposy - 8)
		setgroundflag()
		currentposy = currentposy - 8
		snes9x.frameadvance()
	end
end

function takenextpicture()
	if not(takingpicture) then
		takingpicture = true
		lastimage = gui.gdscreenshot()
		if not(lastimage==nil) then 
			lastshot = gd.createFromGdStr(lastimage)
			currentcamx = memory.readshort(camx2)
			currentcamy = memory.readshort(camy2)
			--gd.copy(dstImage, srcImage, dstX,                dstY,                        srcX, srcY,           w,            h) 
			--insert the last picture into what we got so far
			
			if movingdirection==-1 then xcorrection=0 else xcorrection=-16 end
			gd.copy  (image,    lastshot, currentcamx + xcorrection, currentcamy - upperblacksize, 0, upperblacksize, xsize, ysize - upperblacksize - lowerblacksize) 
		end
		
		--gui.text(int x, int y, string msg)
		
		--draw current position onto the game screen so you know where something is still missing
		for i = 0, 1 do
			for j = 0, 1 do 
				stringtodraw = string.format("(%i/%i)",(i+math.floor(currentcamx / gridx))*gridx, (j+math.floor(currentcamy/gridy))*gridy)
				gui.text(-currentcamx % gridx + i*gridx, -currentcamy % gridy + j*gridy, stringtodraw)
			end
		end
		takingpicture=false
	end
end

function writepicture()
	image:png(string.format("%s.png",levelname))
	
	--gdImage:line(x1, y1, x2, y2, color)
	--i think there is a much better way for that as presented here, but at least it works
	image2 = gd.createFromPng(string.format("%s.png",levelname))
	for i = 0, math.ceil(x / gridx) do
		for j = 0, math.ceil(y / gridy) do
				image2:line(i*gridx, (j+1)*gridy, (i+1)*gridx, (j+1)*gridy, mycolor)
				image2:line((i+1)*gridx, j*gridy, (i+1)*gridx, (j+1)*gridy, mycolor)
				--gdImage:string(font, x, y, string, color)
				stringtodraw = string.format("(%i/%i)", i*gridx, j*gridy)
				image2:string(gd.FONT_LARGE, i*gridx, j*gridy, stringtodraw,mycolor)
		end	
	end
	image2:png(string.format("%s-sectioned.png",levelname))
end

--now move him all over the screen
movetozerozero()

emu.registerafter(takenextpicture)
emu.registerexit(writepicture)

movingdirection=1
currentposx=memory.readshort(posx1)
currentposy=memory.readshort(posy1)

--this massively increases consumed ram
--snes9x.speedmode("maximum")

repeat
	writeposition(currentposx + 8, currentposy)
	currentposx = currentposx + 8
	snes9x.frameadvance()
	currentcamx=memory.readshort(camx2)
until currentcamx>=x
j=1
currentcamx=memory.readshort(camx2)
currentcamy=memory.readshort(camy2)

while currentcamy < y do
	movingdirection = movingdirection * -1
	currentposy = currentposy + 96
	writeposition(currentposx, currentposy)
	snes9x.frameadvance()
	repeat
		if movingdirection==1 then
			writeposition(x + xsize, currentposy)
		else
			writeposition(40, currentposy)
		end
		snes9x.frameadvance()
		currentcamx=memory.readshort(camx2)
	until ((currentcamx>=x and movingdirection==1) or (currentcamx==0 and movingdirection==-1))
end

movingdirection = movingdirection * -1
writeposition(currentposx, currentposy)
snes9x.frameadvance()
repeat
	if movingdirection==1 then
		writeposition(x + xsize, currentposy)
	else
		writeposition(40, currentposy)
	end
	snes9x.frameadvance()
	currentcamx=memory.readshort(camx2)
until ((currentcamx>=x and movingdirection==1) or (currentcamx==0 and movingdirection==-1))

movingdirection=1

emu.registerafter(nil)
--snes9x.speedmode("normal")
Post subject: i'm working on it again after that long break...
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
http://dehacked.2y.net/microstorage.php/info/1158395610/roadrunner-done-till-5-3-snes9x151.smv http://dehacked.2y.net/microstorage.php/info/832128840/roadrunner-done-till-4-3-snes9x151.smv allow left+right ON volume envelope height reading ON fake mute desync workaround ON sync samples with sound cpu ON (!!) the levels up to 4-2 are around 5 seconds faster than compared to the 3 years old wip, while 4-3 alone is about 15 seconds faster due to a bug i found. it makes it possible to jump through solid floor. so... does it look nice to you? ------------- about a 100% run i won't do one because i think it's too difficult to say what is 100%. getting all flags is just one thing, but that wouldn't cover the secret way near the elevator in the very first level. picking up everything wouldn't make a nice goal either, for example there is no reason for picking up all the bird seed. and a rule like "pick up all extra lives" is even more strange. ------------- still waiting for feedback. i can provide savestates so you can watch level-by-level
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Thanks, I already found that one. However, it doesn't work for me the way I need it, because it desyncs in the same way. My last polished run desyncs before the first jump in 1-2 while using it. The jump is done as early as possible, and fast-forwarding causes Road Runner to run into the opposite direction. Do you think it would be OK to sacrifice some frames for fast-forwardablity? For example, this desync can be fixed by standing still for 1 or 2 more frames at the beginning (so I think at least) I have posted some newer WIPs (see my first post). Does anyone see any mistakes especially in my optimized run?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I restarted my run, because I found big improvements in the first levels... level 1-1: optimized by 2 frames. level 1-2: optimized by 46 frames. possible improvements: 1-1: 1 frame maybe. If i got it to leave the ramp just 2/256 pixels/frame slower, that would be the best possible jump, since I wouldn't need to stop moving forward for 1 frame when flying. Gained 2 frames over my previous attempt by changing the tactic for jumping from the lift. 1-2: 1 frame maybe. When I corrected an error in the beginning (i stopped dashing, which costs 1 frame), it caused exactly 1 frame delay later on. Since I cannot change this place, I couldn't remove this delay. Time savers compared to earlier version: -jumping onto the first ramp: 9 frames -jumping to the very top of the next ramp: 26 frames -hitting the lift earlier: 11 frames Here's the link for my optimized run: http://dehacked.2y.net/microstorage.php/info/561929671/roadrunner-by-partyboy.smv I think I have found a (risky) workaround for the fast-forward bug... I will disable the "WrongMovieStateProtection", so i can try the hex-editing without playing back the whole movie... warning: do not fast-forward, it will desync.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Yes, I use Volume Envelope Height Reading, but this is necessary in this game. Otherwise, the sound effects in this game will be wrong, especially the jumping sound will be quite annoying, so it is not a good option to turn it off. I already use the fake mute desync workaround.
Post subject: fast-forward bug
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
While making my Road Runner TAS, I discovered this very strange bug. Happens in Snes9x 1.51 and in Snes9x 1.43. I'm not sure if it's just a game-specific bug, though. How to reproduce: for 1.51: try to playback this: http://dehacked.2y.net/microstorage.php/get/1059437760/Road%20Runner%27s%20Death%20Valley%20Rally%20%28U%29%20%5B%21%5D.smv you can fast-forward until the first boss is defeated. it will desync on the next stage if you continue to fast-forward, but it works if you do not. (it will desync during 2nd boss fight, but that's another story.) for 1.43-9: try this one: http://dehacked.2y.net/microstorage.php/get/1990184366/Road%20Runner%27s%20Death%20Valley%20Rally%20%28U%29%20%5B%21%5D.smv Here you will be able to see the desync much sooner if you fast-forward. The movie works if you do not fast-forward. (It's much shorter) Does that also happen for you, or is it my computer's fault?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Truncated wrote:
>the first jump off the first rising platform didn't look optimal. You could have had more speed as you jumped off the platform. But maybe this doesn't matter since you are boosting directly afterwards?
I've tested it for now. I haven't seen any difference between these two variations. EDIT: I've retested it, and I managed to save 3 frames by using Randil's strategy. Movie will be updated soon (I think I'll post it saturday or monday, I don't have enough time left at the moment). That's the hex address list I currently use: ;================================ ; >> Road Runner's Death Valley Rally ;================================ [RR DEATH VALLEY RALLY0] 7E04C6,2f,X Speed 7E0554,2f,Y Speed 7E031C,2u,X Pos 7E17A2,2u,X Pos2 7E194C,2u,Y Pos 7E0038,2u,Y Pos2 7E1F1C,2f,Bird Seed 7E1F1D,1u,Bird Seed2 7E1F1E,1u,Health 7E14DC,1s,Random? Note: I modified Snes9x-watcher to display floating point numbers (but I programmed it very dirty since I don't know how to program with HSP). You either need to replace the ,2f, with ,2u, or you need my version. I'll post my modification upon request. My comments for the other levels: 1-2 I managed to get the last platform moving before I stand on it. The margin for the last few jumps at the end is very small (it was only 2 or 3 frames). 1-3 The first level where I take damage to save time. The fly ends a bit over the top of the highest reachable platform, but there's no way to fly about 5 pixels lower (The game seems to be designed that way.) The jumping at the end of the level looks quite crappy, but it can't be made faster since the jumping height (and so the time for landing on the platform) can't be influenced. 1-4 (Boss) I think this one can't be improved any further (because of the animations that need to be completed). 2-1 Currently the movie will desync here... About half the level is completed PS: maybe someone is interested in co-authoring the movie with me?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
For now, I will use Snes9x 1.51. It's too difficult to convert the file back to the old format, because it desyncs at every single frame-perfect action. And what about my video so far? Is there a chance it will be accepted in this format when it is finished (and being good enough, of course)?
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
As already said, I used (the official version of) Snes9x 1.51 to make this movie.
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
Yes, i've watched that one from speed demos archive. It would be great to know if someone sees bad path decisions in there. Edit I'd love to see more of your wips, they may give me good ideas... this time, i was already 33 frames faster. I didn't have the idea of doing your last jump that early. However, it was 2 frames slower than my later jump.
Post subject: Road Runner's Death Valley Rally
Experienced Forum User, Published Author, Player (136)
Joined: 9/18/2007
Posts: 389
I like the videos created here very much, so I decided to make my own one. There seems to be no one currently creating a video of this game, so I decided to start that 3 days ago. It's my first TASing attempt. Rules: -any% -aims for fastest time -takes damage to save time -abuses programming errors ("instant-stop without jumping" and "jumping through floors" at the moment, more if i find them...) I noticed there is already a thread about this game, but no one posted anything to it for more than one year. My current progress: Finished! (see my submission) Emulator used: Snes9x 1.51 ROM used: Road Runner's Death Valley Rally (U) [!] OLD LINKS: for my run until 4-3 (some stages can be improved, especially the third boss will look much better in my final version): http://dehacked.2y.net/microstorage.php/info/124627199/partyboy-road-runner-wip-until-4-3.smv for my optimized run (only done till 2-1): http://dehacked.2y.net/microstorage.php/info/575920820/partyboy-roadrunner-optimized-wip-until-2-1.smv NEWEST ONE: see my latest post I wish feedback. Does it look impressive so far? Does it sync for you? Do you see any shortcuts I have forgotten? PS: If someone still has the older wip (which was posted in the old thread), it would be great for me to see it. PS2: I'm not a native english speaker... Edit: corrected the download link. Edit: added rules for this run. My older WIPs: http://dehacked.2y.net/microstorage.php/info/626440002/Road%20Runner%27s%20Death%20Valley%20Rally%20%28U%29%20%5B%21%5D.smv I finished 2-3, it goes out of sync during the boss fight. http://dehacked.2y.net/microstorage.php/info/1059437760/Road%20Runner%27s%20Death%20Valley%20Rally%20%28U%29%20%5B%21%5D.smv (When fast-forwarding, it desyncs in 2-1, even if you turn off frame-skipping.) 1.43-9: http://dehacked.2y.net/microstorage.php/info/1990184366/Road%20Runner%27s%20Death%20Valley%20Rally%20%28U%29%20%5B%21%5D.smv (I finished 1-1 only since the bug already appears there.)
1 2
15 16