Posts for partyboy1a


1 2
15 16
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Great improvements. Everything looks a lot more smooth. This movie is a good example to mention in the Common Tricks page for "abusing Game Over".
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Wow, lots of unexpected improvements. Did you investigate if double-damaging the final boss as shown here is possible? Edit: you were a bit quicker than me apparently.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Tried getting the movie to run on my Arch Linux machine. First problem LÖVE has reached version 11.1-2 so binaries don't match anymore. So to have a chance to try the movie, I edited in the new md5sum (extract the archive, edit, make a tar.gz from it, rename to ltm). Second problem libswresample.so.2 is required IF the game is invoked within linTAS but not if it is invoked through LÖVE directly, and it is not included in Arch Linux (any more??). I had to obtain libswresample2_3.4.3-1_amd64.deb from Debian. I extracted only the necessary two files from "data" into the same folder as libTAS Third problem That package depends on libavutil55, which is also not included in Arch Linux (any more??). I obtained libavutil55_3.4.3-1_amd64.deb from Debian. === > IT WORKS! (without any sound, maybe because I had about 50% of full speed?). It finishes the game.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The tools evolve. This was once a program of about 2000 lines of code. Now, thanks to new tools from "Answer Set Programming", the essential part of the solver can be written with just 38 lines of code ( + a few lines of input for the actual puzzle). The following code, written for Clingo, will solve an example puzzle. It is also not that hard to read: if the line doesn't contain :- then it's a fact. if the line starts with :- then it says that the part on the right must not be true. a comma is a conjunction, so "a, not b" says "a must be true and b must not be true". { ... } is a set. if a fact only consists of a set, then the solver may freely choose which of the variables in the set are true (so that all other conditions are satisfied). m { ... } n says this set must consist of at least m and at most n members. so {a,b,c}2 says that at most 2 of a,b, and c must be true if a line has a structure "something_on_the_left" :- "something_on_the_right" then it means that if "something_on_the_right" is true, then the program will make sure that "something_on_the_left" is also true. The biggest difference: instead of a huge "visited" structure, 6 lines of code about which tiles were "reached" is enough, so the amount of variables is greatly reduced. also: the formalization of the rules is completely independant of the actual size of the puzzle (exactly one line of code needs to be changed for a different number of rows, in the most obvious way). Just leaving it here, should someone decide that it is worth the effort to adjust the new formalization in such a way that it can be used for the other mode of the game. I also have a version three times as long, just for comments.
tile(0..rows+1,0..cols+1).
puzzle(1..rows,1..cols).
{ use_black(1..rows) }.
{ use_tile(0..rows+1, (0;cols+1)) }.
{ use_tile((0;rows+1), 0..cols+1) }.
{ black(X,Y); white(X,Y) } = 1 :- puzzle(X,Y).
{ start(1..rows,1..cols) } = 1.
{ end(1..rows,1..cols) } = 1.
{ start(X,Y); end(X,Y) } < 2 :- puzzle(X,Y).
use_tile(X,Y) :- use_black(X), black(X,Y).
use_tile(X,Y) :- not use_black(X), white(X,Y).
{ h(X,Y) : tile(X,Y), tile(X,Y+1) }.
{ v(X,Y) : tile(X,Y), tile(X+1,Y) }.
:- tile(X,Y), use_tile(X,Y),
    { start(X,Y); end(X,Y); v(X-1,Y); v(X,Y); h(X,Y-1); h(X,Y) } != 2.
:- tile(X,Y), not use_tile(X,Y),
    { start(X,Y); end(X,Y); v(X-1,Y); v(X,Y); h(X,Y-1); h(X,Y) } != 0.
reached(X,Y) :- start(X,Y).
reached(X,Y+1) :- reached(X,Y), h(X,Y).
reached(X,Y-1) :- reached(X,Y), h(X,Y-1).
reached(X-1,Y) :- reached(X,Y), v(X-1,Y).
reached(X+1,Y) :- reached(X,Y), v(X,Y).
:- use_tile(X,Y), not reached(X,Y).
#show end/2.
#show touch/2.
#show h/2.
#show v/2.
#show start/2.
{ touch(X,Y) : tile(X,Y) }.
:- touch(X,Y), not use_tile(X,Y).
{ u(X,Y) : touch(X,Y) }.
{ l(X,Y) : touch(X,Y) }.
:- 1 { h(X,Y-1); h(X,Y) } 1, not touch(X,Y), tile(X,Y).
:- 1 { v(X-1,Y); v(X,Y) } 1, not touch(X,Y), tile(X,Y).
:- tile(X,Y), h(X,Y), not touch(X,Y), not touch(X,Y+1),
    {h(X,Y-1); h(X,Y+1); touch(X,Y-1); touch(X,Y+2); not l(X,Y-1); l(X,Y+2)} < 6.
:- tile(X,Y), v(X,Y), not touch(X,Y), not touch(X+1,Y),
    {v(X-1,Y); v(X+1,Y); touch(X-1,Y); touch(X+2,Y); not u(X-1,Y); u(X+2,Y)} < 6.
#const rows=5.
#const cols=9.
black(1..rows,1).
black((1;5),2).
white(2..4,2).
black((1;3;5),3).
white((2;4),3).
black((1;5),4).
white(2..4,4).
black(1..rows,5).
black((1;5),6).
white(2..4,6).
black((1;3;5),7).
white((2;4),7).
black((1;5),8).
white(2..4,8).
black(1..rows,9).
#minimize { 1,X,Y : touch(X,Y) }.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The run itself isn't really that exciting. Haven't decided what to vote yet. But: For all the consoles around here, hacks are allowed, but cracked, patched or fan-translations are strictly forbidden. AFAIK there is exactly one game where a patched ROM was used, because the game was unwinnable otherwise. I strongly dislike the reasoning for using the cracked version. It would be a much much cleaner approach if the emulator is sufficiently accurate to be able to handle an uncracked original copy of the game. This would require a very sophisticated file format for the disk images to handle all the special cases (varying bitrates, "fat tracks", "half-tracks", non-conformant formatting of the disks, purposely corrupted sectors, track alignment...) and a device which can reliably read out the exact physical layout of the original disks. I guess no one owns such a device, or it is extremely expensive. Much work to do. So for the meantime, the "cracked" approach is a pragmatic decision, but it may set a bad precedent. With that reasoning, it would be totally ok to publish runs for cracked Windows games for example.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
nice improvements!
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The script was good enough so that I made a function for avisynth-compatible output here which produces pushover-notransitions.avs which should be easy to integrate into the workflow for encoders.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
It might be a good idea to create an encode without the level transitions, as it was already done here for another game. They are quite annoying when just watching the game instead of actually playing it.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
This looked quite optimized. It is significantly longer than the GBA version of this game, but there are many important differences between those versions, including damage physics and much better sound. Not sure how much can be done about the lag. Somewhat sad that the all these sports have to be done multiple times. I'll give it a yes. I would like to see a 2 players 100% (+ maybe maximum kills) TAS of this game, which also clears all the bonus rooms. This would also force the two players to use very different paths most of the time.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The out-of-sync sound is a bug in Snes9x, recording in 32000Hz is broken. Just using 48000 Hz should fix that. 470 rerecords? Seems very low, but it doesn't fit into the picture with that detailed submission text.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The movie includes some (in my opinion) unacceptable payload It only makes sense for members of this site at the date of the submission and it seems to be made especially to raise a discussion about the expansion port in general. So even if we come to the conclusion that the expansion port should be treated just like another controller port, I could not accept this video. But the current set of rules will allow us to reject this movie without too much discussion 1) This movie is not an optimal speedrun, as it is easy to write a movie of equal frame amount which reaches the credits faster, so ACE is used "inefficiently". 2) For a playaround, the payload has almost "nothing to do with the game". I agree that using the expansion port in that way should be banned, as this is like using custom hardware.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Wow, the idea with all the static cameras in a 3D game is really awful. Including all the cutscenes, I counted 25 camera switches in just one minute, and for big parts of it, the camera hops about once every second. Nothing a TAS could do about that, but unbearable for me.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The double damage trick is quite nice. From watching it, I think it is somewhat easy After having destroyed the fleas, instantly hit the queen, as the invincibility will then run out when she goes upwards again. It may turn out quite tricky, because the time window from hitting the last flea to hitting the queen is quite small. This should be included in a new TAS for sure. About the game over skips, well... They are really nice timesavers in a real-time run, but these may severely reduce the entertainment value of the run. And as this game is certainly good enough for the moon tier, I personally would ban the game over skips. Feel free to make up your own decision on that. Besides that, it may pay off to use not only two, but three game over skips. The third one would be quite expensive, as it would requiire you to collect four additional "continue" items, and most of them are quite far away from the usual path, so the difference is likely just a few seconds. I think I'm not up to the task of redoing the run. The TAS itself took about a year to create. And since there is a ten year old bossfight included in the current run, it wouldn't be a good idea to just update the last fight. But you will have a hard time improving my slides, because short term improvements often turn out to become substantially slower in the long run. However, the game is quite hex-edit friendly (even across emulators, this requires adjustments because of loading times), so you may copy those parts where you fail to improve.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
That was a cool idea with the star canceling. Just two ideas for alternative paths - Could you have collected one more star inside the pyramid? - Does the glitch allow you to collect two stars at the same time (by spitting one star very close to another one)?
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The TAS seems to be reasonably optimized for one like me who does not know the game. I disliked the music and the sound effects. It's also getting a little bit repetetive after a while. So that's only a meh, and even an extremely highly optimized TAS for that game is unlikely to be more entertaining (unless some crazy bugs are found)
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The new version is much more complete. It's short and full of action, that's good. I can create an encode of it if that helps. Right now that movie would not go straight to "fastest time", but instead: - aims for fastest time to beat all bosses once. - AFTERWARDS, aims for fastest time to reach the credits. That might be quite esoteric. If it just aims for fastest time to credits while defeating each boss once, then the strategy seems suboptimal: It could be faster to commit suicide on each boss. I like the movie. syncs fine for me, even multiple times.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Yay, it runs on my Windows 8.1 machine without problems. Final score: 127568 I liked the action, a lot is going on. But I disliked the end. I would like to see the credits as fast as possible after the three bosses are defeated. I would find it better if the initials are entered at the high score screen, instead of letting the run end there.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
For those who don't want to register at nicovideo: just exchange nicovideo.jp with nicozon.net and it will work. So in this case it would be: http://www.nicozon.net/watch/sm29962607. In my opinion, it should always be nicozon. The run seems to be well done.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Well executed but boring to watch. It's just eleven seconds of action, ten times the same move.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
To give you some ideas: For every console, there is a wishlist. Many of the games there don't have a TAS ready at the moment. (Some shameless self-advertizing following...) I once made a test run on a game called Marchen Maze for PC Engine, I posted a test run there (input+video). The game is japanese, but the text does not matter at all. I somehow lost motivation to optimize it. You might give it a try, you should be able to beat my run by about a minute or two, maybe even more. I think it's a good game to learn TASing, as it is quite obvious how to move fast, but it is hard to actually do it in an optimal fashion.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Perhaps it's tied to the screen transitions
Yes. And even more so, as Snes9x 1.43 emlulates even less lag than Snes9x 1.51.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The timing in the table above for 1-boss is just before the fight starts. So the boss fight is maybe about 120 more frames in your video. The -15 is maybe just the imperfection of using a video instead of an input file. The difference from 2-cutscene to 3-start where everything could be done frame-perfect at full speed suggests that about 60 frames are added for each tower for language and emulator difference. The following script (which I derived from another script you linked to, so it's mostly not my own work) allows you to test different RNG values in advance. I guess you can create a boss fight with a certain RNG value that way and test if the randomness is good, and if yes, go back and copy-paste the exact same fight after having done the necessary adjustments to the route.
--hit F11+frameadvance(!) to test next seed
local SeedsToTest = 50
local currentRNG = mainmemory.readbyterange(0x0408, 16)

savestate.save("damageteststartsave")
for i = 0,SeedsToTest do
	for j=0,15 do mainmemory.writebyte(0x408+j,currentRNG[j]) end
	while(true) do
		local diff=mainmemory.readbyte(0x417)-currentRNG[15]
		if diff<0 then diff=diff+256 end
		gui.text(0,0,i.." additional advances of RNG. "..diff.." advances during play")
		emu.frameadvance()
		t=input.get()
		if t["F11"] then break end
	end
	
	savestate.load("damageteststartsave")
	local carry = 0
	local temp
	for j=15,1,-1 do
		temp  = currentRNG[j-1]+currentRNG[j]+carry
		currentRNG[j-1] = bit.band(temp,0xff)
		carry = (temp-bit.band(temp,0xff))/256
	end
	j=15
	repeat
		currentRNG[j]=bit.band(currentRNG[j]+1,0xff)
		j=j-1
	until j<0 or currentRNG[j+1]~=0
end
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
The game is just too bad. So terrible sound I didn't want to watch it all. Voted no.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
Yay, I tried to make a small comparison. If we assume that the games are identical except for the frame duration, we get this:
             Saturn             TheAngryPanda
segment	min	sec	frames		frames	delta    delta(last)
1-start	 9	 36	 28800		 17450	 11350	 11350
1-3    	10	  9	 30450		 19090	 11360	 10
1-boss 	10	 55	 32750		 21405	 11345	 -15
2-start	13	 30	 40500		 29330	 11170	 -175
2-cutsc	14	 48	 44400		 33280	 11120	 -50
3-start	17	 13	 51650		 40590	 11060	 -60
Assuming bad luck at tower one boss, it wouldn't pay off to kill extra enemies, as you lost at most two seconds. But who knows, getting hurt one or two times and hitting enemies without killing them might get you better luck. What about the magic rocks, do you have a plan where you collect them? Three could be collected in tower one with only minor detours.
Experienced Forum User, Player, Published Author (136)
Joined: 9/18/2007
Posts: 389
On a side note: When one of you got enough time for it, you may want to update this page
1 2
15 16