I present to you, the first ever Cheetahmen II TAS that plays the original (not bugfixed) version AND shows the final boss!

History

Cheetahmen II was never released. Copies of this rare cart were discovered in a warehouse after the Action 52 company went out of business. It was a prototype for a sequel for the "hit" game Cheetahmen on the Action 52 cart. Not releasing this was a good decision, not only is it a terrible game, it had numerous bugs that made the game unplayable. The most significant was a bug that prevented the game from progressing after you beat the level 4 boss. While the game had 6 levels, for a long time people did not know this, due to not being able to get past level 4.
However, it was discovered that sometimes the game would start on a random level, and it was discovered that one of these was level 5! Now people could finally see the rest of the game (unfortunately for them).
The reason for this glitch is due to the fact that the board registers start off in an unpredictable state. This is a known issue in hardware, and most any board is built to clear out registers before attempting to use them. Good NES carts like MMC3 would do this for instance. Also, good games are programmed to loop and clear out ram, and set registers BEFORE attempting to use them. However, Cheetahmen II uses a custom board built by the Action 52 company and not surprisingly, this board is bad. It has no logic for clearing out these registers. Cheetahmen II is a badly programmed game, so it actually reads from mapper registers before setting them. Furthermore, in this perfect storm of crappiness, the game is built on a multi-cart board design. So it happens that each level is built on a separate PRG bank. Normally if the PRG register was set badly in a game, it would likely crash (as any program would if you started it halfway in).

Determinate indeterminacy

In TASing emulators, random register states and ram are bad things, they will cause indeterminacy and it is impossible to have a movie sync reliably. So emulators tend to program ram values to 0's, and all mapper registers as well. However, this is just one of many valid and possible start up scenarios! I suggest that a TAS can and should be able to exploit the initial state of hardware! If the all powerful superhuman that TASes represent can predict future RNG values, why can't he have full control over when to turn on the hardware to get the values of his choosing? With this in mind, I modded Bizhawk so that you can set the initial register values inside a movie file. This way we don't violate determinacy issues, while still giving full power to the TASer to control this situation. In this case of this submission, my movie file starts the game on PRG bank 11 (which is the start of level 5) with a prg mode of 1 (not terribly important detail, but needed for the game to run properly from bank 11).

Ending

After you kill the level 6 boss (or level 4 boss), the end of the level does not trigger. The "Fixed" from fixes this bug. But since an ending was never programmed into the game, it simply triggers a game over screen.

Summary

  • Requires BizHawk (or later)
  • Heavy glitch abuse (the whole game is a glitch though
  • Skips most of the game (Good, because the game is bad)
  • First submission to exploit the random initial state of hardware

feos: Delaying since adelikat is going to beat teh boss!

adelikat: Replaced submission file with one that does in fact "beat teh boss!"
feos: Accepting to Vault and publishing...

1 2 3 4 5 6 7 8
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
adelikat wrote:
5 bit chr bank (can be anything and achieve these results, irrelevant, as char usually is, worst case you get a garbled but playable game
So if I preset the value here to any other possibility and play back your movie, will it sync?
adelikat wrote:
1 bit mirror register (irrelevant here, either value has no effect on start up behavior)
Same question with this.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3599)
Joined: 11/3/2004
Posts: 4739
Location: Tennessee
Yes.
It's hard to look this good. My TAS projects
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
If that is the case, then I accept the validity of your movie.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
adelikat wrote:
The implications of accepting this movie's premise (exploiting the initial hardware state) is a good debate and worth having, and I hope we will focus on that now, going forward. (Note: this post intentionally avoids this subject, but I do have a lot to say on the matter)
Alright, this video does prove the initial state is possible on real hardware at poweron (as I was afraid after making some of my own experiments). So, let's discuss implications then. I am claiming that this submission should be treated as a savestate-anchored movie. There's no difference between initializing mapper registers via movie tags or via a single "savestate" tag. To show this I've made the FM2 movie: http://tasvideos.org/userfiles/info/10117227735638386 This movie begins from a savestate, which is almost identical to the default state used for replaying normal TASes (those not beginning from a savestate). Namely: * PC points at RESET vector, which means the game starts from the usual poweron routine * other CPU registers have default values (to ensure this, I've paused the emulator, issued a Poweron command and then created the new movie before unpausing) * RAM is filled using the standard pattern "00000000FFFFFFFF" The only value that differs from default is the value of mapper 228 registers, which I modified according to Adelikat's instructions in the submission text (taking into account the difference between FCEUX and Bizhawk implementation of mapper 228). I can elaborate on the details if needed, but you can be sure it is the same as in the BKM. Since the FM2 uses exactly the same initial state as this submission, such a playthrough of Cheetah Men II was possible from year 2004. Except back then there were more strict rules, because people were trying to keep the image of TASing as clean as possible, so movies starting from a savestate were not accepted (personally I would accept them to Demo tier or maybe even Moons, but definitely not to Vault). So, this submission is not any more legitimate than my example movie. Using those new tags is just a way of hiding the fact. The site immediately recognized a savestate in my movie and added a special label. I agree with making such a clear distinction, but a similar label must be added to movies such as this submission. And such submissions should not be considered normal TASes. As in, they have to be of some value, other than being a record. If they are entertaining, the acceptance is justified, but if they are only interesting to author and not to wide audience, the acceptance is not justified. Unless the site dramatically changed priorities since 2004.
Former player
Joined: 6/30/2010
Posts: 1095
Location: Zurich, Switzerland
You could make this a category, but then we would have TWO runs of this game...
Current project: Gex 3 any% Paused: Gex 64 any% There are no N64 emulators. Just SM64 emulators with hacky support for all the other games.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4017
AnS: I am sure this is some kind of logical fallacy. 'Movie X can be simulated by starting from a savestate, starting from a savestate for no good reason is banned, therefore movie X should be banned.' It's like saying 'The state of peace in our nation can be simulated by a police state, police states are bad, therefore this peace is bad.'. Is there a name for this fallacy?
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Player (79)
Joined: 8/5/2007
Posts: 865
Patashu wrote:
AnS: I am sure this is some kind of logical fallacy. 'Movie X can be simulated by starting from a savestate, starting from a savestate for no good reason is banned, therefore movie X should be banned.' It's like saying 'The state of peace in our nation can be simulated by a police state, police states are bad, therefore this peace is bad.'. Is there a name for this fallacy?
A syllogistic fallacy?
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
Not only the movie can be "simulated" by starting from a savestate, it is actually achieved in the BKM by starting from a disguised savestate. Sure, the BKM doesn't specify CPU registers or RAM contents yet (but, as seen on the first page of the thread, adelikat already considers doing it when necessary). OK, let's call it "partial savestate" for now. Now, if you say that specifying the initial game state using "partial savestate" (new tags) is not the same as specifying the initial state using old savestate tag, then indeed, my assertion would be a fallacy of four terms. But I consider it to be the same thing (when talking about TASing). In my opinion, a genuine TAS movie should only contain instructions (code, not data) which describe player's actions (pressing a button, switching disk, etc). If a movie contains a pre-prepared data which represents a finished result of player's actions, this is not a pure TAS movie (doesn't mean it must always be rejected, e.g. some movies start from dirty SRAM, which essentially is data = result of playing actions that were too boring to include in the published TAS). This data takes some non-zero time to prepare, but when inserted in the movie it effectively takes 0 frames, and its actual time is not accounted in the final time of the TAS. I consider this to be a violation of speedrunning spirit. I'm okay when this is done as an entertainment boost, but don't agree with the movie being Vaultable. If adelikat were to submit a movie where the state of registers were achieved by describing the necessary player's actions (e.g. the BKM would contain a script which powers console on and off until it notices the trick worked), I wouldn't have any objections. And of course I also wouldn't have any objections if it was a movie achieving the trick by resets. Because it would be a genuine TAS, not a "TAS + some unaccounted activity".
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
AnS you sound ridiculous to me
Experienced player (509)
Joined: 11/2/2010
Posts: 359
I agree with AnS, or at least how I interpret the meaning behind his posts. All other movies on this site either can run by loading in the game rom and then the controller input directly, or requires extra config before you start entering the input and is thus marked as starting from an unaccounted for activity. Just as movies that start from a special ram state can be considered legitimate but must be listed with the statement that abnormal initial conditions must be met for the movie to work I feel like this movie should list a similar statement and be judged under the same scrutiny and standards.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4017
AnS: Would you still argue the same way if both the register state in adelikat's movie and the register state that was previously used in Cheetahmen II TASes were physically equally likely to be taken upon power on of the cart? e.g. if a TAS that starts from stage 1 is powered on and the cart decides to start from stage 5 instead, now that TAS is broken, so shouldn't that TAS need the same trick of restarting until it is a correct register state?
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
ALAKTORN wrote:
AnS you sound ridiculous to me
Wise argument. Nothing to disprove.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
Patashu wrote:
AnS: Would you still argue the same way if both the register state in adelikat's movie and the register state that was previously used in Cheetahmen II TASes were physically equally likely to be taken upon power on of the cart? e.g. if a TAS that starts from stage 1 is powered on and the cart decides to start from stage 5 instead, now that TAS is broken, so shouldn't that TAS need the same trick of restarting until it is a correct register state?
Short answer: yes. When legitimacy of speedruns cannot be based on a physical meaning, it has to be based on some other aspect of real world. Nach suggested allowing free choice based on a model of having an absolute control of reality, but I find this model a bit too presumptuous and not very creativity-inciting. Instead I think the basic guidelines should be inherited from regular speedrunning (we could argue about this in a separate thread). If such a game as you describe existed, both states would be equally considered as possible starting points to play the game normally. Regular players would be often starting their playthrough from the latter levels, so a TAS movie anchored to the latter point would adhere to known rules (while having different rules on how to play the game after it has started). Speaking about NESBot, any movie for the game you described would need the same trick of restarting until it is a correct register state. Because all movies would be starting from a physically arbitrary state, and at the same time all of them would be starting from an audience-approved audience-related point. Fortunately, in most games we can anchor the playthrough to a state which is both physically-realistic (may be achieved from a couple of tries in NESBot) and familiar to general audience. I'm saying "physically-realistic" instead of "physically-justified", because apparently nothing is consistent in real-world physics. But while the "00000000FFFFFFFF" pattern may not have an absolute physical meaning, at least it has a semantic meaning - it's a state with consequences known to everyone. Other patterns have no physical meaning, nor logic meaning. (unless they do) And when you anchor your movie to a completely meaningless state, you can't expect the result to be meaningful by itself. Note: all this talk about legitimacy of world records is only related to Speedruns. Superplay movies (playarounds and, generally, everything above Vault) do not need to be based on some real-world phenomenons, because they are already justified by the real-world phenomenon called "entertainment".
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3599)
Joined: 11/3/2004
Posts: 4739
Location: Tennessee
In this specific case, this run uses a rather likely event. One likely enough that should someone RT speedrun this (oh god why), they could easily incorporate this glitch and start from level 5. The video I linked shows it happening less than a minute of trying. And that was his second attempt because he forgot to put the power button in the video the first time. The first time it happened in only 4 tries. Starting at level 1 I suspect is only more likely because there are more register states that lead to level 1, whereas level 5 happens to only have 1 combination. However, I don't support the notion of "equally likely" as something to base site rules upon.
It's hard to look this good. My TAS projects
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
Since reset doesn't seem to do the trick properly, and power on does it after a few reties, the only solution that will perfectly fit into "identical fair conditions for all games" concept, is to figure out how exactly power on affects the needed register state, and when it affects it. Like, does it depend on the stage you switch the power at? How much time in is needed? How many times one needs to do it to get the needed state the soonest? Because yes, if we use some preset values to even start the game, it is a savestate of some kind. At least within the current meaning of things we handle here. But it can not be treated as movies starting from "blank" state, nor can it be treated as a real savestate/SRAM movie. Even if the game itself is so fucked up it could start from level 5 at the very first launch after it was produced, we would need to put it into the aforementioned laboratory conditions before TASing ("blank" initial state) to make it stand near the existing movies.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
AnS wrote:
nor logic meaning. (unless they do)
Speaking of which, maybe this submission actually has it. The alternative starting point leans on those AVGN/Kickstarter ballyhoo. Not very solid base if you ask me, but maybe it is for adelikat. This would probably look appropriate in a Demos tier, but I wouldn't like this to create a precedent of accepting meaningless movies to the Vault.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3599)
Joined: 11/3/2004
Posts: 4739
Location: Tennessee
feos wrote:
is to figure out how exactly power on affects the needed register state, and when it affects it.
This IS known. Power doesn't "affect" it. On power-on the state of registers is unknown, therefore it could be anything.
Like, does it depend on the stage you switch the power at? How much time in is needed? How many times one needs to do it to get the needed state the soonest?
No to all of these. It is due to the fact that the register states are truly random. These things may seem to affect it, or maybe they do help lean it one way or the other, but the point is, it is random, so in theory it could start in this state on a cold power-on, on the first try, instantly. Did I mention random?
But it can not be treated as movies starting from "blank" state
There is a bit of a misconception here. What is a blank state? I guess you mean where all relevant registers are 0, which is actually an unlikely event. Also, no NES TAS starts from a "blank" state. It starts with WRAM set at 0000FFFF. Why is this "blank"?
It's hard to look this good. My TAS projects
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
feos wrote:
Since reset doesn't seem to do the trick properly
This is not a fact. My script in the previous page only simulates CPU reset, without actually emulating all physical nuances of pressing the button on a real console. On a real console the reset will likely trigger the trick as often as poweron does.
feos wrote:
Because yes, if we use some preset values to even start the game, it is a savestate of some kind.
That's the point I was trying to convey since the first page of the topic: let's realize that this movie essentially starts from a savestate, and then let's decide whether this is justified (as in, case by case).
feos wrote:
But it can not be treated as movies starting from "blank" state
Physically, there's no such thing as a blank state, although conceptually some subset of states can be considered "blank" (or "regular").
Site Admin, Skilled player (1236)
Joined: 4/17/2010
Posts: 11274
Location: RU
Alright, if it can not be achieved the input way alone (gamepad, reset, power), but it was proven to happen in reality, it is then indeed truly random. So even if we want, we couldn't create a progression of power cycles that would for sure reproduce, say, via nesbot.
There is a bit of a misconception here. What is a blank state? I guess you mean where all relevant registers are 0, which is actually an unlikely event. Also, no NES TAS starts from a "blank" state. It starts with WRAM set at 0000FFFF. Why is this "blank"?
I mean it starts from what values are on pure power on. When nothing at all is preset, and the initial state is this way equal to that of all the other movies. Blank as in not touched. And this game, through its complete brokenness, is an exception. You just can NOT start it from the state similar to other movies :) Because it screws up the values by itself.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3599)
Joined: 11/3/2004
Posts: 4739
Location: Tennessee
feos wrote:
I mean it starts from what values are on pure power on.
I think there is a misconception here. A pattern of WRAM that consists of 0000FFFF is not what values are on in a pure power-on. In fact, this is probably an extraordinarily unlikely event, and technically hasn't been proven to be possible. There is no pure power-on, and no consistency to which RAM starts. This isn't a new insight either. Most games are unaffected by this randomness because the programmers make sure to clear them. Using unitialized RAM in assembly is a big no no.
Blank as in not touched.
In that case, it is blank, because it wasn't touched, it was simply one of the many possible states the cart could be in, on power-on.
You just can NOT start it from the state similar to other movies :) Because it screws up the values by itself.
(I am interpreting "all movies" as other NES TASes, but you might mean other Cheetahmen II TASes) Registers are on the cart itself, so no you can't start other movies this way since those carts do not have them. However, the NES WRAM space is something they all share. A vast majority of games would be unaffected by starting in various RAM states since most carts work with any configuration, and most games initialize addresses before using them.
It's hard to look this good. My TAS projects
AnS
Emulator Coder, Experienced player (723)
Joined: 2/23/2006
Posts: 682
adelikat wrote:
misconception
Look, there's no much point in diving into physics just deep enough to prove something on your side, because then someone might dive into physics even deeper and prove that the state is not truly random, etc. This is infinite process of studying the reality, but when making rules for the site we'd better not stop at a point that is biased towards a single idea. I suggest not basing the legitimacy of a speedrun purely on known physical intricacies of the game.
adelikat wrote:
In that case, it is blank, because it wasn't touched, it was simply one of the many possible states the cart could be in, on power-on.
OK, physically it's blank (if we're gonna call every possible state blank), contextually it is not blank.
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
the stupid in this topic is too much to take… why are people trying to argue when they don’t understand what’s going on
Experienced player (954)
Joined: 12/3/2008
Posts: 936
Location: Castle Keep
Common bimmylee, admit it, we know you are a cheata-man!!!! Also voting yes coz its refreshing to see something new and exotic that use funky tricks, especially on a shitty game lol, the youtube video showing the trick was just goofy enought to deserve my yes vote.
ALAKTORN
He/Him
Player (99)
Joined: 10/19/2009
Posts: 2527
Location: Italy
so anyway what was this about?
MESHUGGAH wrote:
AnS wrote:
Also, wait, didn't the guy actually beat the last boss on this video?
He did (edit: and used original version), and the comments also mentions it's possible to start the level 6 (glitched too) with resetting, not sure it was mentioned already.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3599)
Joined: 11/3/2004
Posts: 4739
Location: Tennessee
AnS wrote:
That's the point I was trying to convey since the first page of the topic: let's realize that this movie essentially starts from a savestate
And now we are on page 6 and I'm no closer to agreeing with this.
It's hard to look this good. My TAS projects
1 2 3 4 5 6 7 8