Posts for FractalFusion


Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Thanks for the Lua updates. By the way, do you have a Lua script that indicates where critical hits and misses are? I have one, though it is more of a hack of the RNG Lua script than anything else. By the way, I mentioned that mkdasher's TAS can be improved (and not just because of the quick void to hall of fame), as follows: (battle) - In general, whenever an opposing Pokemon needs two hits to defeat, sometimes it is faster to use Leer once and then an attacking move, instead of an attacking move twice. For example: Roark's Cranidos. - It is faster to manipulate the wild Starly in the tutorial fight to have a Def- nature (so you can manipulate Leer/Tackle/Scratch instead of Scratch/Growl/Scratch) but the time saved is very small and it makes it harder to manipulate for Chimchar at the same time. - It seems mkdasher's TAS takes damage in a few too many places at the beginning. Taking hits (instead of manipulating them to use moves like Growl/Leer/etc.) costs some time, more than the time saved avoiding critical hit messages. Roark's Pokemon can be defeated using Rock Smash instead of Ember. - In the Galactic Grunt double battle, manipulating Zubat to use Astonish on Turtwig and having Turtwig flinch would be best. - You can use critical Rock Smash against both Cherubi in Eterna Gym instead of a fire move, to avoid super effective messages. - Since Jupiter's Skuntank cannot be defeated in one move without using Blaze (even with Atk+ and PKRS), it is better to have Gardenia's Roserade use Magical Leaf to take Monferno down to low health. It is also faster than burning Skuntank to KO it. - From my calculations, it is better to have Atk+ for Chimchar/Monferno than Spe+. Having Atk+ allows: -- Leer and Scratch on Tristan's Starly, instead of 2x critical Scratch. -- KO in one hit on Natalie's first Bidoof (critical max range) -- Scratch on Eterna Forest Bug Catcher's Silcoon instead of Ember (critical max range) -- Rock Smash on Eterna Gym Angela's Turtwig instead of a fire move. which I think saves a little more time than the extra messages because of going second against Onix, Cranidos and Roserade (and if you need Roserade to use Magical Leaf, then that time loss doesn't even count). By the way, my calculations indicate that PKRS is of no help, so you don't need to manipulate for it. (overworld) - I think Fortranm is already aware of most of the small overworld improvements. When exiting Jubilife going north (approaching Grunt double battle), there is no need to line up your player with the grunts. You can line up your player with the professor, and it will take the same amount of time (because the auto-walking occurs during the ! delay). - There are ways to manipulate spinners and random NPCs. Random NPCs have delays lasting 32, 64, 96 or 128 frames determined by RNG, and their direction is also determined by RNG. Random spinners (trainers that look around randomly) have their timer paused whenever you run near them. It is also possible to use random NPCs to manipulate away wild encounters. I'm currently looking at doing a J version of mkdasher's run for fun, but it will take some time. I'll probably do the U version later.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Fortranm, this is the third time you used MKDasher's input. You know MKDasher's input is improvable, right? Also, I'm a little disappointed that you still haven't really done anything interesting with the Poketch, even though there are so many things you could do with it. Yes, I know you don't care about the Poketch, but come on. BTW, if you want Lua scripts for Japanese versions, I can make them for you. I have one for Diamond J so far (since I wanted to see what a run on the J version looks like) and it shouldn't be too hard to get the addresses for Pearl J as well. I don't really have anything to comment on the goal choices of this TAS though, other than that only 1% of the result interested me.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Warp wrote:
I saw this problem somewhere: A unit sphere (centered at the origin) is cut by two cylinders of radius 1/2. The cylinders are parallel and tangential to each other, as well as tangential to one of the main axes (which also means the cylinders are tangential to the sphere from the inside). The cylinders cut the sphere all the way through (you can think of them as infinitely long if you wish). What is the volume of this shape, ie. this sphere that has two holes cut into it? What's peculiar about this is that the answer is relatively simple, but getting it might be a bit hard.
The diagram above shows the view from above (looking down the z-axis) of the sphere (black and blue colors) with two cylindrical holes drilled through it (in gray), according to the problem Warp stated. Note that the resulting shape has symmetry, such that we need only take the volume in the first octant and multiply it by 8. We use cylindrical coordinates. Focusing first on just the part of the sphere on the plane z=0 and in the first quadrant (indicated by the red lines in the diagram), the angle θ goes from 0 to pi/2 and the radius r goes from the inside which is sin θ (the cylindrical hole) to the outside which is 1 (sphere's equator). Now the height of the sphere above the plane z=0 is given by sqrt(1-r2). So the volume of the whole thing is: = = = = = So the volume of the resulting sphere with cylindrical holes in it is 16/9. Note that this is a rational number, without any pi in it!
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Hello, Bananarama25. I'm guessing that you meant that you've seen this page already on VBM format. To edit VBM files, you need to use a hex editor. (There are almost no custom programs out there other than VBA itself that modify its movie files.)
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
The black pixels represent the Gaussian primes, where bottom left is 0=0+0i. I know that's not the entirety of the question but I didn't bother figuring out what the colored pixels do so I stopped there.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Nice run, especially with the wire glitch. I suppose this run took a huge amount of effort to make (even more than most of the X series TASes). I wonder what Hetfield90 and Flameberger are planning next.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Thanks fsvgm777 for your interest until now in providing a text version of each Nicovideo rankings. I know viewership has been steadily declining so I understand if you don't want to do this anymore.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Nice run. I figured you would eventually improve this after I mentioned the improvements. Didn't expect it would take this long though.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
I think nEilfox's username is spelled nEilfox, not nElifox.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Fortranm: I did some testing, and I am nearly 100% sure that whether Quick Claw works or not is determined at the beginning of the previous round of turns after you select your move; e.g. if you want to manipulate Quick Claw for round n, you have to time selecting your move for round n-1. I didn't test for the first round but I think it should be determined at some point after entering battle. Just something in case you're making more Diamond/Pearl TASes. It does make manipulation more difficult though (since it occurs at the same time as manipulating the first move of a round for crit/range/miss).
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
The site appears to be limited to smartphones. Center: "Can you escape from the oni? PRISON BREAK ABILITY TEST" Right: "This site is limited to smartphones." (Under QR code) "I suppose you want to access this and play?" There is also a bottom left on that page: "For PC you can still play here." (Link to "IQ test")
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
OK, thanks for the explanations.
Fortranm wrote:
I'm kinda sure that doing double battles is faster when each of your moves can KO an enemy, and that's what happened in the run.
Double battles vs directly talking to trainers for two single battles are very close in time comparison and it could go either way. There are several factors that affect double battles negatively: - Needing to trigger the ! on both trainers, as opposed to talking to them. - Extra dialogs from having two Pokemon gain experience after each KO. - Time spent because of the weaker Pokemon leveling. - Potential experience lost from main battler. - Extra time from needing to select target. - When opponent trainers have differing numbers of Pokemon, needing the weaker Pokemon to waste time somehow when there is no target. - In this TAS, extra messages from things like Gyarados's Intimidate (affects both Pokemon) and Croagunk's Anticipation (because of weaker Pokemon having Flying moves). - Possibly more delays (critical hit, super effective) from needing the weaker Pokemon to KO enemy in one hit. In fact, your warpless/no void run takes about 5 seconds longer to double battle the two grunts in Team Galactic Eterna Building compared to mkdasher's TAS, even though you KO on every move. (Though Kazza has a level-up in that battle, so it is somewhat closer to being equal.)
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
I'd much prefer the other TAS over this one. There are a few reasons; I will try to go over them. - This game is very long. The way the battle system works makes it seem very slow and prolonged, especially late in the run. Messages have noticeably long delays and it takes a long time for HP to decrease to 0 (similar to Pokemon Gold, which is understandably not very entertaining either). In addition, the number of forced trainer battles is ridiculous. There are 97 forced trainer battles in this game (counting double battles as 2); more than the main-game of any game prior (except maybe Pokemon Crystal, which I didn't check). This is nearly twice that of Ruby/Sapphire. For comparison, the number of forced trainer battles for other games (glitchless) is: Gen 1: 66 Gold/Silver: 92 in main-game, additional 24 in postgame Ruby/Sapphire: 50 (51 in JP ver.) Emerald: 83 So, this is why I prefer a shorter and more glitched version over a TAS which is not glitched and over 3 hours long. Strangely, Platinum has far smaller message delay, so it is theoretically possible a Platinum glitchless run could beat this TAS on time despite having more content. - As Fortranm already mentioned:
Fortranm wrote:
As an almost unavoidable consequence of using the starter Pokemon for the majority of the run, HP is often kept low to abuse Blaze. Unlike the growl skip trick in Gen 1, Blaze/Torrent abuse is a part of the core strategy and can't be simply forgone. This is unfortunate. I'm sorry. Please bear with it. :(
I'm not even surprised, only disappointed. (The JP TAS with Piplup also abuses this too.) Indeed, about 34 minutes and 20 seconds of this run occurs during low HP alarm. Unlike Gen 1, it doesn't make up for it by glitching the sound either. I never liked starters used as main battlers in speedruns/TASes. I secretly wish that non-starters would be main battlers instead, and will find every excuse to claim that they are faster than starters. Low HP ability boost sure doesn't help change my mind. - This TAS to me appears to lack the polish of the other Pokemon TASes, including the other TAS and the JP TAS. Yes, it's Pokemon, and Pokemon is hard to TAS, but the standard has already been set. For example, mkdasher's input was copied all the way to the second gym without carefully considering the Repel situation, as mentioned in the submission text:
Fortranm wrote:
I should have bought Repels in Floaroma Town instead of picking one up on Route 205 and buying more at Eterna City.
It doesn't help that the submission text lacks some details that I wish were explained. Like, why was the Chimchar line used unlike the other TAS where Kazza (the traded Abra/Kadabra) does very well? Were there other Pokemon early in the game that could be used except that the Chimchar line is simply better? Would Quick Claw have helped with this TAS? ("We don't know how to manipulate it" is not a good excuse.) Is it really not faster to do two single battles in place of double battles whenever possible? Is it possible to use Potions at a different time (possibly to avoid low HP alarm) or find better ways of manipulating HP that avoid using Potions? Things like that. ----
Fortranm wrote:
1. I say that mostly because that run abuses Quick Claw to make up Empoleon's slow speed, and there is no known way to effectively manipulate Quick Claw pattern. Unless the input file is made public, I will think that run is kinda fishy.
You state "there is no known way to effectively manipulate Quick Claw pattern" based on posts from six years ago. 1) Just because it wasn't known six years ago doesn't mean it isn't known now. 2) Just because we didn't know how (or maybe we didn't try hard enough) doesn't mean others don't know how. It is unclear how exactly the claim (as it is worded) would prove a video-only TAS to be illegitimate anyway.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Does anything different happen if you try RTC times that aren't multiples of 1000?
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Finally got around to watching this one. Looks like Kadabra is pretty good as a battler (not sure about non-traded one). Also, it's great that you worked through the disobedience issues. I thought Kadabra wouldn't have worked out because of how easy it is for high-level Pokemon to kill Kadabra late in the game. Fortunately the AI seems to be pretty bad. Even during the champion battle, Garchomp and Lucario could have used Earthquake but instead chose to use something else. (Guess I'm just too used to Gen 3 mechanics.) Other comments: - The journal can be used to manipulate overworld RNG. I guess (Super) Repel was used instead because the journal was too slow? - Every time you enter battle, it initializes the RNG based on system time (same way as it is initialized at the beginning of the game). So I think changing when you enter battle can be used to improve on battle manipulation. Note: This doesn't change overworld RNG, overworld RNG is only interrupted and resumes after battle. - I'd prefer if you did something creative with the Poketch from time to time. - Stereo sound in Pokemon during battles always struck me as a bit weird, with most of the sound coming from the right side (probably because that's where all the hits are landing in this TAS).
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Revisiting the Riddler's problem, I found a simple way to prove that, for every base b, there is a minimum N, depending on b, for which all base b sequences of length ≥N have a solution. I assume this is what Tub really wanted to believe the actual problem was: A simple proof only that there is a minimum N in base 10, without going through tables or computer programs which may themselves be full of errors. May as well, since the given Riddler solution is a bit off (and who's to say my computer program is correct either). Proof: It is enough to show that all base b sequences of some length N(b) (N depending on b) represent 0 (i.e. can evaluate to 0) using only subtraction(-), multiplication(*), and brackets. Then it follows that all longer sequences represent 0 by multiplication, and all sequences of length ≥2*N(b) have a solution, by representing 0 in two disjoint blocks of length ≥N(b). For b=2:
00: 0*0
01: 0*1
10: 1*0
11: 1-1
Consider a sequence S in base b of length 2*N(b-1). If S contains the digit 0, then it clearly represents 0 by multiplication. Otherwise, from left to right, replace every instance of consecutive digits (b-1,x) (digit b-1 followed by x, where x is a digit from 1 to b-1) with their difference b-1-x. This results in a sequence S' whose first N(b-1) digits are from 0 to b-2. By induction (as if these digits are from a sequence of base b-1), these N(b-1) digits represent 0; therefore so does S', and therefore so does S. QED From above, N(2)=2 and N(b)≤2*N(b-1), and so N(10)≤2*28=512. Therefore, without needing to use tables or computer programs, we can conclude that every base 10 sequence of length 1024 or greater has a solution.
Bobo the King wrote:
I don't think I fully understand question 10 (15:00). Had they intended to write that K is an integer?
Even if they say K is a real number, you can figure out easily that K has to be an integer.
Bobo the King wrote:
I got stuck on question 26 (34:30). I was able to simplify it to the sum over n>1 of 1/(n*(n+3)), but that looks too much like the Basel problem to me. I have no idea how this slight modification turned pi^2/6 into 13/36. Can someone help me?
BrunoVisnadi already answered it. By the way, the Basel problem concerns the sum of reciprocals of squares, not the reciprocals of the numbers themselves which is the harmonic series.
Bobo the King wrote:
Question 42 (46:30) stumped me. I wasn't able to come up with a simple expression for the area of a kite, probably because the kite is not uniquely defined by the length of its sides. Of course, the kite of maximal area is uniquely defined by the length of its sides. Could someone explain the quick-and-dirty approach that was likely used to solve the problem?
As well as what BrunoVisnadi said, it is also possible to get the answer as follows: A quadrilateral with given side lengths has its area maximized when it is cyclic. When maximizing area, the order of the side lengths is completely irrelevant and so we can rearrange the sides of the kite into a 6-by-10 rectangle. Rectangles also maximize the area (since they are cyclic), so the answer is 60.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
DrD2k9 wrote:
Something that may be affected by RNG that I haven't had a chance to confirm yet is the timing of the buckets on the conveyor lift in the garbage freighter.
I'm pretty sure the timing on the buckets is the same every time.
c-square wrote:
I'm particularly curious what the robot battle would look like with the random number generator stuck on one number that always means you hit for damage on every blow.
I got one once where Elmo would walk up and punch air until he died, even though I never moved from the starting spot. No clue if that is possible with a seed that also works with Arnoid, or if it is any faster.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
You can think of random(min,max) being calculated first to get some value, then the RNG updated with x←31821*x mod 65536. Sorry if I didn't make it clear.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
By the way, for entertainment purposes, on the crt (computer) screen that you pilot the ship, you can click on the invalid options to get error messages or error sounds while waiting (e.g. waiting for the "LAND" option to activate). Up to you how you wish to do that. Can't think of too many other options for entertainment, other than replacing parser words with ones of the same length, or using the mouse somehow. By the way, both the rat scene from the first visit to Script n015 as well as World O' Wonders (every visit to Script n043) throw a whole bunch of RNG values, so unfortunately it may not be easy to predict the RNG for Arnoid. On the other hand, waiting at World O' Wonders for a few more frames may be faster than extra screen transitions.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
BrunoVisnadi wrote:
Some people posted in the comments this other solution: 4*(8-7)*(0-7+9)=8. I believe this one is valid, thus, we can in fact be sure every 14 digit long sequence has a equation.
I'd be a bit more careful before declaring that every 7-digit sequence has a solution just because someone found a solution for the supposedly one missing sequence of an erroneous result. Since the winner's program couldn't find something as simple as 4*(8-7)*(0-7+9)=8, the entirety of the Riddler's "solution" is now thrown into doubt. In fact, I did some calculations myself as a programming exercise, and came up with completely different conclusions for n=3 and n=4. I got 237 out of 1000 for n=3 (not "about a third of all possible strings") and 5934 out of 10000 for n=4 (not "about 80 percent"). So, who even knows what the actual answer is anymore.
Warp wrote:
FractalFusion wrote:
This is why things like 2/(3-(2/(3-(2/(3-(...)))))) and sqrt(sqrt(sqrt(...))) are not well-defined.
This leaves me wondering what exactly is it that makes it not well-defined. Is there some rule of mathematics that's being broken by extending that expression infinitely, or is it just that it's not well-defined because in this particular case the result is ambiguous?
Ambiguity is probably the biggest reason why things are sometimes left undefined. For example, the difficulty in defining a value for 00 comes from the number of possible interpretations and limits. But in some cases, even if not ambiguous in a technical context, in other more basic contexts defining any value may be misleading, unhelpful, and/or useless. See this video (which in fact you linked some years ago and illustrates this perfectly) for what I mean by this.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Radiant wrote:
FractalFusion wrote:
I used Cheat Engine on SQ3 in DOSBox to find out how the RNG sequence works for this game. The sequence is given by: x←31821*x mod 65536
I note that this is exactly the same as the random number generator in AGI, except using 16-bit variables instead of 8-bit.
Not exactly the same, there is no +1 in the formula. (The AGI formula is x←31821*x+1 mod 65536.)
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
I used Cheat Engine on SQ3 in DOSBox to find out how the RNG sequence works for this game. The sequence is given by: x←31821*x mod 65536 Like AGI, 0 is a special case that seeds the RNG with some value (may depend on system clock). That's all I know so far. The SCI random function is called whenever there is a game over (to select the game over music). This is a good way to check where the address is in JPC-rr. Edit: OK, I figured out how the random method works (other than how it seeds the RNG value when the address has value 0). It works like this: - The RNG sequence is determined by: x ← 31821*x mod 65536. - The method, random(int min, int max), returns a value from min to max as follows, given the previous RNG value of x: -- Calculate a ← 31821*x. -- Calculate b ← floor(a/256) mod 65536 (in hexadecimal this is the central 4 digits of the 8-digit representation of a) -- Calculate c ← b*(max-min+1) -- Calculate d ← floor(c/65536) (in hexadecimal this is the number c dropping the rightmost 4 digits) -- Calculate res ← d + min - Then random(int min, int max) returns res. Example: Arnoid's appearance on the pod screen is given by:
		(switch global110
			(1
				(if (== (Random 1 2) 2)
					((= gNewAct (Act new:)) posn: 1000 1000 init:)
					(= gSeconds (Random 2 10))
				)
(following numbers are in hexadecimal) If the RNG value before entering the pod screen is 0001, then: 0001*7C4D=00007C4D, 007C*(1-0+1)=000F8, res=0+1=1 Since res is 1 instead of 2, Arnoid does not appear at all. If the RNG value before entering the pod screen is AAAA, then: AAAA*7C4D=52DDAD22, DDAD*(1-0+1)=1BB5A, res=1+1=2 Since res is 2, Arnoid appears. The current RNG value is now AD22 and the number of gSeconds is then given by: AD22*7C4D=54108B3A, 108B*(10-2+1)=094E3, res=0+2=2. So gSeconds before Arnoid appears is 2, the shortest possible time.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
c-square wrote:
EDIT: The Two Guys' whining is somewhat skipable! This should at least be worth investigating since it's right at the end of the run.
I always assumed that there was a set time until the fighters attack you, so that it doesn't matter whether you listen to the Two Guys or look at the computer screen. But I didn't time it precisely, so I might be wrong. (There may be some extra messages depending on when you look at the screen.)
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
Looks pretty well optimized (other than the additional screen transition needed to manipulate Arnoid). I wonder though: did you try clicking on the text input bar after you type out a command? Because that I think should be faster than pressing the Return key. The robot fight is pretty annoying so at least you figured out how to trap Elmo. There are ways to trap him in other parts of the arena (like near the top as well as near the bottom) but I don't know if you tried those already.
Editor, Experienced Forum User, Published Author, Skilled player (1941)
Joined: 6/15/2005
Posts: 3247
I didn't even know there were comments on the blog all this time and just thought nobody bothered to comment. Sites should always auto-expand their comment sections. Anyway, I found out a way to get n+1 from n, provided that n≥5: Suppose we have a sequence of n+1 digits. If any pair of two consecutive digits is not increasing (decreasing or the same), then subtract them and replace them with that number. This gives a sequence of n digits for which we have a solution. If, on the other hand, the above does not apply, then since n+1≥6, there must be a pair of two consecutive digits (say, bc) such that 0≤b<c≤5 (for example, 45 in the sequence 456789). Add them and replace them with that number. Again, this gives a sequence of n digits for which we have a solution.