Posts for FractalFusion

Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
HappyLee wrote:
FractalFusion wrote:
Since this TAS was made with BizHawk 2.8 and the previous TAS with PSXjin, I made a semi-comparison encode to show that the run is around 995 frames (16.5 seconds) faster:
I didn't check your comparison video stage by stage, but here's a part of things you're missing:
Oops. Oh well, I kind of tried. (But not hard enough, apparently.)
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Not my encode, but AmaizumiUni posted this on nico (edit: the posted encode is apparently a previous version of the TAS in 38:19.78, not 38:08.53 like this submission) Link to video
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Since this TAS was made with BizHawk 2.8 and the previous TAS with PSXjin, I made a semi-comparison encode to show that the run is around 995 frames (16.5 seconds) faster: Link to video The metric I used was: 1) Area that ends in fadeout (first area of most stages) * Timing begins on first frame of control after READY (except Jet Stingray stage where timing begins on fade-in). * Timing ends on fade-out. 2) Area that leads to a boss fight (second area of most stages) * Timing begins on first frame of control after READY (except Jet Stingray stage where timing begins on fade-in). * Timing ends on last frame of control before WARNING (or last frame when touching final boss door before WARNING). 3) A boss fight. * Timing begins when boss meter fills to full. * Timing ends on first movement frame (not a delay frame) after boss meter reaches zero. My metric is not necessarily more accurate than HappyLee's measurement of 1245 frames; I simply made this video in order to show that this is an improvement over the previous TAS. Note that BizHawk has far more lag frames on loading screens, boss explosions, and voiced lines by bosses, compared to PSXjin.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
By the way, I noticed in the input that the TAS starts with the code Right-A-Down-B-Left-A-Up-B was used at the beginning of the TAS to speed up the ball by 50%. I guess in-game codes are allowed now? (Also, what does "warpless" even mean?) Interesting that this game has "Left" and "Right" choices for the levels. Also the powerups break the game, as you can see in this TAS. Similarly to before, I made a 1080p60 encode with paddle controller input display: Link to video
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Finally there is a TAS of Pokemon Black/White submitted to this site. (If you recall, Kaphotics made a TAS of Pokemon White in about 3h19m, almost 13 years ago, but refused to submit the TAS to this site.) Thanks for the submission info. I like the tricks in this run. Also, the RNG having such a complicated seeding algorithm is weird, but we're talking Game Freak here. I resent the fact that the game just has to throw evil team grunts at you over and over, and that's even with 6 of their "mandatory" battles skipped using dust clouds.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
By the way, if you're wondering how I made the input display part of the encode (the left sidebar with the line-art paddle controller graphic), I generated the input display with a Lua script in BizHawk:
local joystick_posy=550
local fire_posy=300

local controller={}

gui.clearGraphics("emucore")
gui.clearGraphics("client")
gui.use_surface("client")

function circlebyradius(cx, cy, radius, col1, col2)
	gui.drawEllipse(cx-radius, cy-radius, 2*radius, 2*radius, col1, col2)
end

gui.drawBox(0,0,256,224,0xFF000000,0xFF000000,"emucore")

while true do
	console.clear()
	gui.drawBox(0,0,256,700, nil, 0xFF000040)
	gui.drawBox(20,220,256-20,700-20)
	gui.drawLine(123,220,123,0)
	gui.drawLine(133,220,133,0)
	circlebyradius(128,joystick_posy,80, nil, 0xFF000060)
	
	local prev_value=controller.Paddle
	local prev_fire=controller.Fire
	if not prev_value then
		prev_value=80
		prev_fire=nil
	end
	controller=joypad.getwithmovie(1)
	
	local pangle=(math.pi/180 * (180.5+(prev_value-80)*160/80))
	local angle=(math.pi/180 * (180.5+(controller.Paddle-80)*160/80))
	
	gui.drawLine(128,joystick_posy,128-80*math.sin(pangle),joystick_posy+80*math.cos(pangle), 0x40FFFFFF)
	gui.drawLine(128,joystick_posy,128-80*math.sin(angle),joystick_posy+80*math.cos(angle))
	gui.drawBox(127,joystick_posy+3,129,joystick_posy+77,0x8000FF00,0x8000FF00)	
	if controller.Fire then
		circlebyradius(128,fire_posy,30, 0xFFFF0000, 0xFFFF0000)
	elseif prev_fire then
		circlebyradius(128,fire_posy,30, 0xFFFF0000, 0x70FF0000)
	else
		circlebyradius(128,fire_posy,30, 0xFFFF0000, 0x20FF0000)
	end
	
	emu.frameadvance()
end
Then (separately from a normal encode of the TAS) record AVI with the options "Capture OSD" and "Capture Lua" enabled and do some editing with something like AviSynth. I didn't explore all the Lua gui options so there might be a better way to set this up.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Submission Text wrote:
todo
no need, the video explains itself
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
I like how the Arkanoid paddle controller actually improves the TAS. 1080p60 encode, with input display: Link to video I recommend viewing at 720p60 or above, since the "entertainment" effects don't show up on 30-fps settings.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Hm, I've never tried buster-only before. Just note that if you have trouble with the RNG, you can use this Lua script: https://tasvideos.org/UserFiles/Info/638585240848962683 (change "local game=7" to "local game=1"). Other notes: * In general, wall dragging can be used for RNG manipulation. * If you need to manipulate Storm Eagle, you can wall drag along the right side of the platform. * Bospider: I found a file I made 10 years ago, if it helps: https://www.mediafire.com/file/r74xxonx492n4uc/bospider2.txt/file . Note that 0-crossing RNG values are rare. (Bospider is awful but you'll have to deal with it.)
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Thornstrom wrote:
Yes, one can edit it in post. But then it has to be re-encoded which means some quality loss, so it would be better to be able to remove it when it's generated.
As a regular AviSynth user, I generally only use lossless codecs prior to the final encoding run, so that there is no quality loss during editing. This is just a side note.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
OmnipotentEntity wrote:
For this second one, find all solutions in the Reals, prove you have all of them.
Nice that this is a Diophantine problem in disguise. Since |cos(anything)|≤1 and |1/sin(anything)|≥1, the equality can only possibly be true if cos(88*pi2/x) = ±1 and sin(3x) = ±1. sin(3x) = ±1 when 3x = pi/2 + pi*n, or in other words, x = (1+2n)*pi/6. Note that sin(3x) = +1 when n is even, and -1 when n is odd. cos(88*pi2/x) = ±1 when 88*pi2/x = pi*m, or in other words, x = 88*pi/m. Note that cos(88*pi2/x) = +1 when m is even, and -1 when m is odd. So x is a solution if and only if x is both of the form 88*pi/m and of the form (1+2n)*pi/6, where m and n are either both even or both odd. So we have: 88*pi/m = (1+2n)*pi/6 88*6 = m*(1+2n) m*(1+2n) = 11*3*24 Since 1+2n is always odd, it follows that m is a multiple of 24, and so m and n are both even. Then 1+2n must be a divisor of 33 (positive or negative) that is 1 mod 4, and now we can list the possibilities for 1+2n: 1+2n = 33: n=16 and m=16, x=11*pi/2 1+2n = 11: no, not 1 mod 4 1+2n = 3: no, not 1 mod 4 1+2n = 1: n=0 and m=88*6, x=pi/6 1+2n = -1: no, not 1 mod 4 1+2n = -3: n=-2 and m=-88*2, x=-pi/2 1+2n = -11: n=-6 and m=-48, x=-11*pi/6 1+2n = -33: no, not 1 mod 4 So there are exactly four solutions for x: x=11*pi/2, x=pi/6, x=-pi/2, x=-11*pi/6.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
OmnipotentEntity wrote:
Instead of solving explicitly for x, it's easier to square x + 1/x to get x^2 + 1/x^2 + 2 = 293. Notice that the goal formula reduces to x - 1/x, and if you square that you get x^2 + 1/x^2 - 2, which is 293 - 4 = 289 from our above formula. Then just take the square root of 289 = 17.
I did eventually get to answer=17 through some algebraic manipulation of my own, but this method works as well. Although I was thinking of why OmnipotentEntity had the multiple choice in the first place. I mean, I was very tempted to go with the following "solution": With some algebraic manipulation similar to before, logba + logab = sqrt(293) and the goal is to find logba - logab. But a>b>1, so logab is clearly between 0 and 1. That means the answer is between sqrt(293)-2 and sqrt(293), and the only number in the multiple choice list that fits is 17. Therefore the answer is 17.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Comparison encode (1080p60) with previous publication: Link to video
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Link to video Sorry for the low-effort encode. I also threw in video of the previous version just for comparison purposes.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Are there any plans to make a glitched version? That might be interesting.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
MUGG wrote:
I noticed the lua console said "Message Cap reached, suppressing output" because of a long string that was outputted.
From my experience, that can definitely happen if you do too many console.write operations without emu.frameadvance(). The Lua console is not a good way of holding output long-term. Try output to file, something like:
local f = io.open("results.txt","a")
    f:write( ... )
f:close()
(replace "..." with whatever string you want to output) Edit: The error happens if you use console.write 100 or more times in a row. You can make your output string first (use ".." (two dots) to concatenate the strings all together), then at the end use console.write on that string. Of course, if you are storing output that you want to view long-term, better to output to file as shown above.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Samsara (from News feed) wrote:
It took until last month, two and a half years after Playground was drafted, for us to show those runs on game pages. We completely dropped the ball on it. Part of that I think was due to lack of interest across... Everyone on the site, really.
Considering that the news post this quote is from is the first and so far only news post to mention "Playground" at all... I wasn't even sure whether "Playground" was supposed to be taken seriously. It just came across as no one having any idea of what it was ultimately supposed to be.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
McBobX wrote:
I think FractalFusion wasn't talking from a judgement perspective, it is just something I noticed as well, because yeah I do agree with the fact that MMX4-6 games don't have that long "Now Loading" for it to be accelerated. That said, I appreciated HappyLee's care about viewer pleasure, it is very nice!
Just to confirm, I wasn't talking from a judging perspective. I don't talk from judging perspectives anymore. It's fine, I have used speed edits in my encodes before. Just pointing out that most games don't really need speed edits; when watching TASes, viewers can normally skip over video as they so choose. I have done speed edits in my own encodes, but only very rarely (it does take a lot of work which I usually don't see as necessary) and only for one of two reasons: * The upload site has a restriction on video length (doesn't apply anymore), or * The TAS is exceptionally boring. (Fortunately, the vast majority of TASes don't fall in this category.) Also personally, if it's just a matter of loading screens, I'd prefer removing them all together over speeding them up.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
I didn't know you could win by slipping on a banana peel. This TAS is funny. Did you know Mario can also beat SM64* stages just by slipping on a banana peel? See, look: Link to video
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
I don't think Mega Man X4 is the type of game that deserves "10x" speed edit on loading screens in an encode, but whatever.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Interesting. Didn't know there was a thread from 18 years ago, and a working link to bsgen.zip (thanks Mr. Pwnage, if you are still on this site). Anyway, here's what I know so far: This site and this online generator have some more details about how the level generation works. There is also a detailed pastebin about the password-to-level algorithm. Note that each level has two possible passwords: a normal "Sonic 1 cart" code which auto-advances when you beat a level, and a "non-Sonic 1 cart" code which doesn't (associated with passwords you get from locking onto other carts). I have recently made a BizHawk 2.9.1 Lua script with functions that can do this conversion (password to level, level to password Sonic 1 and non-Sonic 1, level to stage and stage to level): https://tasvideos.org/UserFiles/Info/638595168763566191 ---- Possible goals that might be interesting (in case anyone wants to make a TAS in the future): * All symmetrical levels (124 levels long). Note this playthrough by Digital Duck. Note that symmetrical #125, #126, #127 is impossible. * Each of the 128 quadrants shows up at least once in some map (32 levels long). * Same as above, but no passwords (unknown number of levels required, maybe 70-80?)
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Nice TAS. I think this game has too many forced Team Plasma Grunt battles though.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
GJTASer2018 wrote:
Assuming that the level order is not randomized, starting at the same starting point (i.e. power on of the locked on S&K + Sonic 1 cart) and playing until you reach a MAX level for the first time would be the better way to approach this goal ... it would be much more likely to be accepted and published
Nope, disagree here. It has no chance of being accepted. To be fair, the goal choice "Perfect MAX" is the real problem, as it can easily be argued that the game does not consider "Perfect MAX" to be completion (the game continues just as if you got some other "Perfect non-MAX", or "non-Perfect"), and doing a 20-minute TAS for the sole purpose of getting to the "Perfect MAX" scene doesn't really solve this problem.
DigitalDuck wrote:
For a goal choice somewhere between 20 seconds and a century, I did all symmetrical levels a couple of years back; playing through all 125 levels which use the same chunk in each quadrant (one of which is the level shown in this run). There are 128 chunks, but because of the way the levels are assigned there are no levels that are entirely made up of chunk #125, #126, or #127. This was the closest to a "100%" run I could come up with that doesn't have a runtime of several human lifespans.
Actually, I saw and then forgot about that Youtube video for some reason. "All symmetrical levels" sounds interesting as a concept even if it takes a couple hours (too bad about the missing #125, #126 and #127). Perhaps not restricting to symmetrical levels but allowing for each of the 128 quadrants to show up at least once might be interesting too; would be about 1/4 of the time (32 levels) and allow inclusion of #125 to #127. And of course the non-password version of this goal might be interesting too, though I can't tell off the top of my head what the optimal level route would be in this case. Maybe requires 70 to 80 levels? Probably these all sound better as a goal choice. Also, I didn't realize "procedural generation" was an actual term. Something new I learned.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
I thought of Reading instead of Boardwalk, but the problem is the game has a 2-second delay whenever anyone lands on a railroad space. Otherwise I would have sent Ollie to Reading instead.
Editor, Experienced Forum User, Published Author, Expert player (2122)
Joined: 6/15/2005
Posts: 3292
Darkman425 wrote:
While normally regional choice isn't usually counted for/against TASes that otherwise have the same content, the way that Rush Search RNG frames are determined are by frame count. Due to the Rush Search cutscene glitches that can help speed up the game ...
Here's something interesting. The choice of region may even affect whether to do a particular Rush Search glitch or not. For example, the use of Rush Search before the Proto Man room is used to skip the cutscene of Proto Man talking before he attacks. On the Japanese version, this cutscene is much shorter, and it may even be faster to take the cutscene rather than use Rush Search to skip it!