Posts for KungFuFurby


Experienced Forum User
Joined: 4/19/2019
Posts: 15
I remember looking at Star Evil briefly in terms of its overall level set. Its internal level counter is actually set to nine, but its pointer array only has three levels, hence the crash.
09 29 DF

2F DF 3E DF 4D DF
Basically the array makes the fatal mistake of referring to its own level data: the level set is stored at $DF29, and it ends up having a pointer to $DF2F... which then is used due to the wrong level counter. Oops.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I'll chime in because I analyzed this game myself one day and I want to get out some more details. Note that I use the non-CM version for my pointer references.
  • There is no RNG whatsoever for the enemies (three different movement types), the cars or the powerup spawning orders or timers. I'll break down the lists I found for each one:
    • The enemy ID spawn list at $80AA55 (which has timers and object IDs attached together) loops after 30 enemies.
    • The enemy X coordinate spawn list at $80AA42 loops after 18 enemies.
    • Cars, which spawn in as the 14th and 30th enemies, have their own Y spawning coordinate index. The list, stored at $80AA2E, loops after nine cars, but it's just 3 entries duplicated 3 times.
    • Powerup drop lists, stored at $80AF2F are handled on a per-kill basis, and loop after 40 kills. The invincibility powerup (which renders you invincible for 480 frames, or 8 seconds to NTSC standards) spawns upon the 16th and 31st kills. Death "powerups" are more common, spawning upon the 2nd, 10th, 11th, 17th, 19th, 22nd, 30th, 31st, 37th and 39th kills.
  • The boss spawns after 30 kills and it is the only interruption to the regular gameflow.
The argument that I have for the TAS is taking out the boss, though the game continues after this. But the argument that I have against this... is everything, and I mean everything, being a fixed list. The spawn and timer lists effectively reset after 90 enemies (the least common denominator of the three combined), and the only other difference is the powerup drop list, which runs on a per-kill basis and not a per-spawn basis. Thus, going through 90 enemies and at least one boss, even without accounting for the powerup drop list, would exhaust all unique content (assuming nothing else can be found). And yes, the music does eventually stop... but it's caused by a combination of the phrase data stopping the song instead of looping it and a bug in the music data. The entire song is two notes of 35,712 tempo ticks. The music data has a bug in it that causes the second note to be silent. The tempo is set to the slowest value possible, for 1, and it uses the original source N-SPC variant, as I documented here on the SNESLab wiki. I estimate that it would take five hours and four minutes before it would stop playing.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
Me again from the Action 52 Fuzz Power TAS commentary with the level array analysis in order to provide some supporting evidence (although you'll probably still want to check that the glitch works on the hardware). Bubble Gum Rosie technically uses two different level arrays: one for platforming and one for driving. The counters are actually different, but the array used has the same pointer. This is the raw data from the US ROM for both of them (they're not stored next to each other):
03 FB C1
04 FB C1
03 C2 12 C2 21 C2 30 C2 
The first two lines are two different counters and array references, whereas the last line is the array itself as a series of two pointers. One of the arrays only has three, while the other has four. My guess is that the glitch has to somehow change the "mode", so to speak, from platforming to driving just before the check for the end of the game occurs... the same situation would explain switching between platforming and driving. See this post for info on this raw data (the bank ID I got with Bubble Gum Rosie is $60).
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I'll admit one thing... this game sometimes gets me really curious, mostly because I think it's either trying to play a bad song ID with undefined data or it's somehow corrupting pointers or causing a previous song's data to leak into the next song... or it could be multiple causes. I already know that in at least one game's case, it crashes at the end of a level because it runs past the end of a level pointer array... whereas the counter is more than that.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
If you're trying to link to my user profile, you might want to check that spelling, because I got a 404 error. :) I'll also send in this raw data from the US ROM if you're curious:
03 3D E2
43 E2 52 E2 61 E2
The first three bytes indicated are as following: - One byte level counter (this doesn't always match the array size, which can lead to crashes and/or unused levels) - Pointer to level array I haven't looked at the level data yet, but I recorded a bank ID of $64 as far as where Fuzz Power is located (the same bank is also used by the version of French Baker that's actually used). Banks are $8000 bytes each. Bank ID is determined by checking the value stored to direct pages $FE and $FF, $FF being the high byte, ANDing it by $1FC0, then shifting right 6 times. Subtract $20 if the result is $60 or greater (banks $40-$5F are not valid in this case).
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I can confirm that, impassable wall aside, there are no other levels beyond the third one, since I did a quick little array lookup for all of the games many years ago to get level counts off of them. If any glitches are discovered that bypasses the wall as a side effect, then that would intrigue me...
Experienced Forum User
Joined: 4/19/2019
Posts: 15
andypanther wrote:
After watching this TAS and taking a look at the leaderboard, I have two questions: Is this even distinguishable from RTA runs? The time on the leaderboard looks suspiciously close to the TAS time and there is the usual timing difference that makes the TAS time longer by default. Does this TAS actually complete the game? The ending comes off as some sort of "bad ending" and there seems to be a "good ending" for scoring at least 5000 points. As for entertainment, I voted "no". The gameplay is minimal and the only "superhuman" thing demonstrated is the wiggling, which gets old very quickly. Movement like this should only be done occasionally and never throughout entire levels, that's just bad practice (unless of course, such movement actually saves time).
Even though triviality was removed from the reason for rejection, I still agree with actually completing the game, because the bad ending in question is actually a standard Game Over screen. I'm fine with the Playground component, though, based off of the commentary that just showed up.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
Improving this one, I see? https://tasvideos.org/6027S I have an argument against this particular TAS: the Try Again screen seen at the end is actually a standard Game Over screen, and may very well effectively fail to complete the game as a result (not sure if it's still good as an Any% TAS since the end result is a Game Over screen). There is an ending to the game that is achieved by earning 5000 points. For whatever reason, it gets me curious about the routing strategy for earning those kind of points... despite the otherwise autoscroller nature of the game.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I'm going to contribute to this discussion about the cutoff point because I actually did my own research on this particular one on the US version. I have a different argument, because I found the internal race counter variable (7E001Cxx), and discovered that the race counter wraps around to zero after 64 races because 7E001Cxx is ANDed by $3F. Thus, there is a definitive wraparound point. I extracted the raw track ID array from the US version of the game at $008216:
04 06 02 01 8A 86 82 80 05 01 03 00 84 07 05 8B
87 0A 03 8C 08 02 09 0B 00 0E 0C 86 0D 87 81 88
09 0F 83 0E 04 0A 0B 0F 85 80 08 0D 07 0C 8E 06
08 82 8F 8B 84 81 8D 83 88 8A 85 00 8E 8D 8C 8F
If the value has been ORed by $80, the course is driven in the opposite direction. I have indicated where all of the tracks by ID and their opposite direction variants debut below: $00 - Blaster (debuts in the twelfth race, opposite direction variant debuts in the eighth race) $01 - Big Dukes (debuts in the fourth race, opposite direction variant debuts in the 31st race) $02 - Sidewinder (debuts in the third race, opposite direction variant debuts in the seventh race) $03 - Cliff Hanger (debuts in the eleventh race, opposite direction variant debuts in the 35th race) $04 - Fandango (debuts in the first race, opposite direction variant debuts in the thirteenth race) $05 - Hurricane Gulch (debuts in the ninth race, opposite direction variant debuts in the 41st race) $06 - Huevos Grande (debuts in the second race, opposite direction variant debuts in the sixth race) $07 - Wipeout (debuts in the fourteenth race, opposite direction variant debuts in the seventeenth race) $08 - Cuttoff Pass (debuts in the 21st race, opposite direction variant debuts in the 32nd race) $09 - Boulder Hill (debuts in the 23rd race, opposite direction variant is never used) $0A - Redoubt-about (debuts in the eighteenth race, opposite direction variant debuts in the fifth race) $0B - Rio Trio (debuts in the 24th race, opposite direction variant debuts in the sixteenth race) $0C - Leapin' Lizards (debuts in the 27th race, opposite direction variant debuts in the twentieth race) $0D - Shortcut (debuts in the 29th race, opposite direction variant debuts in the 55th race) $0E - Pig Bog (debuts in the 26th race, opposite direction variant debuts in the 47th race) $0F - Volcano Valley (debuts in the 34th race, opposite direction variant debuts in the 51st race) In addition to these, there are course hazards in the form of bales of hay that sometimes show up. When they show up is also done through the race counter (7E001Cxx). Specifically, they show up on the third, sixth, tenth, twelfth, fifteenth, seventeenth, nineteenth, 24th, 27th, 31st, 33rd, 36th-38th, 40th, 42nd, 44th, 45th, 48th-50th, 52nd, 53rd, 55th-61st, 63rd and 64th races. The bales of hay being present means that it can affect the racing somewhat, and technically these configurations add a variant to each of the courses in addition to driving them in two different directions. The bales of hay to my knowledge are also not randomly generated: instead I found when (and possibly where) these would be generated via a pointer array at $00C984 (if it points to $CA04, no bales of hay would be generated for the course). The way you'll know when you've wrapped around is when Fandango is the next course you drive on after having driven Volcano Valley in the opposite direction with bales of hay (This longplay video reaches the wraparound point at 1:10:13, if you want to see what I mean). Volcano Valley itself is driven four times, twice in each direction, and twice with bales of hay.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
Yes, it does beat the previous 1-player submission of 09:45.77 going by the time specified by Spikestuff.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I'll just quote one of the bosses with regards to this TAS... "No! You are much too powerful! Even my doomy chicken legs were useless. I yield to your amphibian agility!"
Experienced Forum User
Joined: 4/19/2019
Posts: 15
OK, I understand the difference between the version you're using from the cartridge and the version that's more commonly out there:
  • The Sega and Tec Toy opening logos are present. (probably what you mean by the long Title Screen)
  • There is copyright information on the first screen after the opening logos run.
Post subject: Family Dog
Experienced Forum User
Joined: 4/19/2019
Posts: 15
Hello everybody! This is a short, yet little-speedrun game (and with no TASes of it that I know of). I extracted the soundtrack for this game years ago, and I want to return to this game to act as my testing project to see if I can produce a good TAS. Can't guarantee it'll be submittable, but hopefully I can at least get it under 6 minutes (with 6:16 being the world record). My notes for this game are recorded in text files, which I have put on Pastebin for now to avoid overloading this topic: Variable List Scene & Level ID
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I'm actually in the process of documenting lots and lots of variables. The main problem I have is emulator selection: I have bsnes-plus, but its format is not a very good idea for submission here. I'm going to try and compile lsnes... just be warned I'm running Mac OS X 10.6.8.
Experienced Forum User
Joined: 4/19/2019
Posts: 15
I'm interested in Family Dog. Not a lot of people have speedrun it... however, the records on https://www.speedrun.com/Family_Dog show that it can be done in about six minutes. And I'm sure there's plenty of room for improvements, especially on the last level with proper mapping and routing (and branch bouncing).