Posts for FractalFusion

Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
Comparison encode (1080p60) with previous publication: Link to video
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
Are there any plans to make a glitched version? That might be interesting.
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
Nice TAS. I think this game has too many forced Team Plasma Grunt battles though.
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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 (2080)
Joined: 6/15/2005
Posts: 3284
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!
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
Oh? This doesn't obsolete the 4 CPU's run? Whatever. I saw at one point a post asking why it was not feasible to extend the 4 CPU strategy to 7 CPUs, but I'm not sure where the post went. The reason is that, after end of input, you'd need to manipulate 7*2 = 14 rolls, instead of 8. Considering that each odd roll has to be a double and each even roll has to be 2 or 3 (let's forget about back 3 spaces for now), extending it to 14 rolls would make it (1/6 * 1/12)^3 = 1 / 373248 as likely to occur compared to the 4 CPU strategy, and the 4 CPU strategy already has a (1/6 * 1/12)^4 = 1/26873856 chance of occurring. The back 3 space card made it approximately 3 times more likely. For reference, the estimated size of the search space used in the 4 CPU strategy was around 40000*256 = 10240000.
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
In case anyone will improve it in a future submission with better luck-manipulation (and other stuff), I'll leave some additional stuff here: * It might be possible to shave a frame or so from the intro stage Bass fight by ending with a charged shot. Very minor though. * In Freeze Man's stage, before entering the room with the H letter, it is actually faster to stand on the ice platform until it starts to break, so that when you exit the H letter room, you can drop directly down to the ladder below since the ice platform isn't there anymore. It can be seen in the following MM7 100% speedrun: https://www.speedrun.com/mm7/runs/m799kkey . * In order not to forget things like RNG addresses (which I forget easily since I apparently did not document this on a fixed page anywhere), I have created a very basic Lua script that monitors RNG in any Mega Man game that uses "MMX RNG", including MMX-X6, MM7 and R&F. You can download the script here: https://tasvideos.org/UserFiles/Info/638585240848962683 . Although this script does not display everything related to Rush Search, it should be useful for getting the RNG value to line up, especially the "R-2F" value displayed there as well. * In the MM7 thread, I added a few other things about MM7 and how Rush Search works (at least so I don't forget in the future). For more information, see https://tasvideos.org/Forum/Topics/257?CurrentPage=8&Highlight=530802#530802
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
In order not to forget things like RNG addresses (which I forget easily since I apparently did not document this on a fixed page anywhere), I have created a very basic Lua script that monitors RNG in any Mega Man game that uses "MMX RNG", including MMX-X6, MM7 and R&F. You can download the script here: https://tasvideos.org/UserFiles/Info/638585240848962683 . Although this script does not display everything related to Rush Search, it should be useful for getting the RNG value to line up, especially the "R-2F" value displayed there as well. * I'll add a few other things about MM7 and how Rush Search works (at least so I don't forget in the future). The RNG address is at 0xFA. The RNG subroutine in ROM is at 0xC1023D. There are two calls to RNG per frame which are not used (at ROM addresses 0xC00CD2 and 0xC10CB4). They occur before other RNG calls. When Rush Search is summoned, just before the tail wag animation, there is a call to the RNG at 0xC14B85:
c14b85:  jsl  $c1023d   [c1023d]   A:6280 X:0074 Y:0002 S:012e D:0c80 DB:80 NvMXdizc V:260 H:210
...
c14b89:  and  #$03                 A:754e X:0074 Y:0002 S:012e D:0c80 DB:80 NvMXdizc V:260 H:305
c14b8b:  clc                       A:7502 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdizc V:260 H:308
c14b8c:  adc  #$03                 A:7502 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdizc V:260 H:311
c14b8e:  sta  $3a       [000cba]   A:7505 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdizc V:260 H:314
c14b90:  rts                       A:7505 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdizc V:260 H:320
This call takes the RNG value mod 4, and adds 3 to it, to get the number of Rush tail wags (from 3 to 6). Then after the tail wag animation has finished, the next frame gives two more RNG calls. One is for the item obtained:
c14d38:  jsl  $c1023d   [c1023d]   A:ffff X:0003 Y:001e S:012c D:0c80 DB:80 NvMXdizc V:254 H:152
...
c14d3c:  cmp  #$ff                 A:5d65 X:0003 Y:001e S:012c D:0c80 DB:80 NvMXdizc V:254 H:246
c14d3e:  bne  $4d41     [c14d41]   A:5d65 X:0003 Y:001e S:012c D:0c80 DB:80 nvMXdizc V:254 H:249
c14d41:  ldx  #$00                 A:5d65 X:0003 Y:001e S:012c D:0c80 DB:80 nvMXdizc V:254 H:254
c14d43:  cmp  $a3e2,x   [80a3e2]   A:5d65 X:0000 Y:001e S:012c D:0c80 DB:80 nvMXdiZc V:254 H:257
c14d46:  bcc  $4d4b     [c14d4b]   A:5d65 X:0000 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:263
c14d48:  inx                       A:5d65 X:0000 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:266
c14d49:  bra  $4d43     [c14d43]   A:5d65 X:0001 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:269
c14d43:  cmp  $a3e2,x   [80a3e3]   A:5d65 X:0001 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:273
c14d46:  bcc  $4d4b     [c14d4b]   A:5d65 X:0001 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:279
c14d48:  inx                       A:5d65 X:0001 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:282
c14d49:  bra  $4d43     [c14d43]   A:5d65 X:0002 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:254 H:285
...
c14d43:  cmp  $a3e2,x   [80a3e8]   A:5d65 X:0006 Y:001e S:012c D:0c80 DB:80 nvMXdizC V:255 H: 15
c14d46:  bcc  $4d4b     [c14d4b]   A:5d65 X:0006 Y:001e S:012c D:0c80 DB:80 NvMXdizc V:255 H: 21
c14d4b:  stx  $3b       [000cbb]   A:5d65 X:0006 Y:001e S:012c D:0c80 DB:80 NvMXdizc V:255 H: 25
c14d4d:  rts                       A:5d65 X:0006 Y:001e S:012c D:0c80 DB:80 NvMXdizc V:255 H: 32
c14ba4:  ldx  $3b       [000cbb]   A:5d65 X:0006 Y:001e S:012e D:0c80 DB:80 NvMXdizc V:255 H: 42
c14ba6:  lda  $a3fc,x   [80a402]   A:5d65 X:0006 Y:001e S:012e D:0c80 DB:80 nvMXdizc V:255 H: 48
c14ba9:  and  #$bf                 A:5d84 X:0006 Y:001e S:012e D:0c80 DB:80 NvMXdizc V:255 H: 56
c14bab:  sta  $3d       [000cbd]   A:5d84 X:0006 Y:001e S:012e D:0c80 DB:80 NvMXdizc V:255 H: 59
The above code compares (RNG value mod 256) by going through a table to determine the item. The following site gives the resulting probabilities: https://www.thesupersnes.tv/compendium/mm7/rush-search/ . In particular, small life energy needs a value of 0x00 to 0x17, large life energy 0x18-0x1F, small weapon energy 0x20-0x37 and large weapon energy 0x38-0x3F. Finally, the other RNG call is for how many times to repeat Rush's dig animation:
c14bba:  jsl  $c1023d   [c1023d]   A:6180 X:0074 Y:0002 S:012e D:0c80 DB:80 NvMXdizc V:255 H:299
...
c14bbe:  and  #$03                 A:2f38 X:0074 Y:0002 S:012e D:0c80 DB:80 NvMXdizc V:256 H: 53
c14bc0:  clc                       A:2f00 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdiZc V:256 H: 56
c14bc1:  adc  $3d       [000cbd]   A:2f00 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdiZc V:256 H: 59
c14bc3:  and  #$7f                 A:2f84 X:0074 Y:0002 S:012e D:0c80 DB:80 NvMXdizc V:256 H: 65
c14bc5:  sta  $3a       [000cba]   A:2f04 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdizc V:256 H: 68
c14bc7:  rts                       A:2f04 X:0074 Y:0002 S:012e D:0c80 DB:80 nvMXdizc V:256 H: 75
Take RNG value mod 4, and add it to a fixed number depending on the item obtained to get the number of loops in the dig animation. For small life and weapon energy, add 2 (from 2 to 5). For large life and weapon energy, add 8 (from 8 to 11). Note on RAM addresses: 0xCBA = # of tail wags / digging loops, 0xCBB = X value of item obtained, from 0 to 25. (0 = small life energy, 1 = large life energy, 2 = small weapon energy, 3 = large weapon energy) 0xCBD = # of fixed dig loops to add to Rush's digging animation. If bit 7 is set, Rush does a second digging animation of 5 faster digs (only for certain items).
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
Comparison video with previous publication (1080p60): Link to video
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
You finished pretty fast! I have some comments: 7:13: I think it's actually faster to stay in Rush Coil and use it at the ladder, although I haven't checked carefully. 17:17: I see you tried to get the Bass (in Shade stage) skip, but it didn't work out. I know with luck manipulation with the optimal Rush Search delay, about half a second can be saved there. 19:18: Is it faster to get the S. Adapt transform while standing on the lowest floor? I thought it might be faster to time it so you get the transformation on the next platform above. 33:35: Against Gamerizer, I think if you do like in my WIP (getting a couple extra charged Wild Coil shots in), it saves about half a second.
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
I was thinking the "No Revisit" route is supposed to be Turbo -> Shade -> Slash -> Spring rather than Turbo -> Slash -> Spring -> Shade. IIRC, Revisit still saves time, just not as much as what it seems based on the calculations above.
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
Oh, didn't know my userfile was going to be used to replace the original submission, lol. Btw, in case anyone is wondering, I was not able to improve "early input end". Strategies similar to those used in #1166: FractalFusion's NES Monopoly in 00:27.08, which initially were potentially faster depending on RNG, turned out not to be faster because the RNG did not work out.
Editor, Experienced Forum User, Published Author, Expert player (2080)
Joined: 6/15/2005
Posts: 3284
jlun2 wrote:
The category name confused me. I never played Sonic 3 & Knuckles, so I have 0 idea about the game's mechanics, but from reading "minimum left/right inputs" I thought it meant holding both left and right at the same time. Holding both opposite directions can have unexpected effects in games, so I did not expect it to mean "no pressing left button, and no pressing right button." instead.
Oh, good point. To be fair, I don't know any console game where pressing left and right simultaneously is a meaningful design feature in any way; obviously to minimize it, all you have to do is choose not to do it. Anyway, the Youtube video clearly uses the category name "no left or right", which hopefully is a better explanation for what this category really is. I wonder why this submission has a different category name in the first place.