Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
What is the pause at 6:22 in the video, by the statue? Luck manipulation? The movement speed at 10:17 is also weirdly slow. I guess it falls into the same category.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I haven't interpreted all the relevant disassembly yet, but currently my hypothesis is that the movement direction code checks the buttons in order Up,Down,Left,Right, while the allowed terrain code checks the buttons in order Up,Down,Right,Left. I have confirmed the latter, but not the former yet. But it seems pretty likely. It explains why Up has highest priority, followed by left and finally right, and it explains why only left+right gives weird behavior, since things are checked consistently for up+down.
Edit: I have confirmed this: The "find out which tile I'm moving into" code is at CA85F3. It basically does this (simplified)
In the case of move_left and move_right, this is done by adding or subtracting what looks like the subtile speed (usually 2) to the subtile position, and then updating the tile position when this under/overflows. For moving up/down it's a bit less transparent. But the point is that the two functions handle the left and right (and only left and right) in different order.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I have had a quick look at this now. When you hold left+right you walk left, but the code that checks whether the tile you are moving into thinks you're moving right, so it looks at the tile to the right of you when determining if you should be allowed to move. This is why you get stuck if you keep holding left+right after walking left through the small lake, but can proceed normally if you let go of right. And it is why you can't keep walking far into the ocean. As soon as you have a water tile to your right you're stuck. I haven't found out why the game does this, and why it doesn't seem to work in the up+down direction yet.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
If you can't execute whatever code you want, then it doesn't qualify as Arbitrary Code Execution. ACE isn't a more limited form of "total control". ACE is total control. What you're describing sounds like a more limited form of memory corruption.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
It shouldn't obsolete Super Demo World because Super Demo World is a different game. Obsoletions are supposed to track the improvements inside a given category, not to unpublish runs to keep the number of games or categories low. If you don't like Super Demo World, you should argue for unpublishing it directly (and I think you will have a hard time convincing anybody of that), not try to sneak it in by the back door by abusing obsoletions.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
What is the output of this command?
glxinfo | grep "direct rendering"
When I used the proprietary nvidia driver, I had to reinstall it using the nvidia installer every time the kernel was updated. So if you haven't done so, you could try that.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I was against the closing of the concept demo tire (though I'm glad hack tases are no longer forced into it), but perhaps this tas could have been published there.
However, if the goal of this cheat code is to remove tedious pauses in gameplay without actually affecting it, then I think a cleaner solution would be to just record the TAS as usual, and then publish both a normal encode and an alternative encode with the pauses removed. This is pretty easy to achieve with lua. See this Metroid Fusion encode for an example.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
What is the purpose of jumping through the door when entering the Speed Booster passage? It doesn't look like you get through the door any earlier, and surely landing slows you down? Is it lag reduction somehow?
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I think you should also add some guidelines for what is meant by each of those categories. What does it feel like when you are totally immersed? And when you are only moderately immersed? And so on. I did not know how to rate my level of immersion, because I have nothing to compare it with.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
This was a fun TAS to watch. I voted yes.
I'm troubled by the recent trend to let movies with different goals obsolete each other. It seems like people are trying to bypass the more liberal category requirements that the tier system introduced by abusing obsoletion to keep the number of categories down.
After watching this TAS, one may still wonder how fast it could be done without all the OOB teleportation. The unglitched 100% answers that question, and that alone is a good enough reason to keep both. Letting one obsolete the other makes it much harder to get that answer. As an additional bonus, the two runs show off different strategies and techniques.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I think these new glitches look entertaining, and I don't think they should be forbidden. We can have as many categories as we want, so we could easily have "game end glitch", "any%", "inbounds", etc. The "inbounds" (or whatever) category would be the current "any%", and would qualify for a moon because the current one does. The new "any%" sounds like it will include lots of new forms of fast movement and new paths, so it should also be fun enough to qualify.
Basically, if new tricks would obsolete a fun type of TAS, just make a new category for that type of TAS. It's absurd that we should abstain from making interesting new TASes due to category/obsoletion worries. Categories are supposed to be a tool to help us classify TASes, not a straightjacket that prevents us from TASing!
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I strongly agree with this. It is completely legitimate to say "Known improvements: During the making of this TAS several new glitches were discovered, which we plan to incorporate in the next version of this TAS". In general I think the publish early, publish often approach where one usually doesn't restart will lead to a better result faster:
Which tricks you discover depend on what part of the game you're going through. Let's say that there are 10 tricks to discover, evenly spaced through the game. If you restart every time you find a new trick, then you will end up restarting 10 times, taking 5.5 times as long as a single no-restart TAS. If you first TAS it once, discovering the new tricks along the way, publish, and then go back for a v2, then you get a TAS incorporating the new tricks in only 2 times the time a single TAS takes to make (as well as a pretty good publication already after half that time). These numbers are naive and assume that redoing is the same speed as the first playthrough, and that incorporating the new tricks doesn't lead to other tricks being discovered, both of which are unrealistic, but I think the overall effect they illustrate is real.
Publications generate more interest and more scrutiny. Publishing early may therefore help uncover new tricks you would not have thought about otherwise.
Publishing early makes it more likely that a good TAS will end up getting published, even if it isn't the perfect TAS (and few TASes are perfect anyway). Restarting too much drains motivation. Feedback after publication might also boost motivation, making a v2 more likely.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
This is great. We've been waiting years for this. I hope the great results and rapid progress you've made so far inspires you to continue!
What happened to the pre-escape video, by the way? It seems to be deleted.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
I guess you're already doing this, but you might have to make the jump in several steps, such as doing a normal JMP or JSR to a location that ends up being interpreted as a JML or JSL. And don't forget the indirect jumps JMP (addr), JMP (addr,x), JML [addr], JSR (addr,x). These use the data bank register when reading, which gives you access to reading the address you want to jump to from RAM. That would give you much more flexibility. Also don't forget the branches (especially BRL and BRA, but also the others), which have limited range, give you more options for setting up a jump to a more promising location.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
jlun2: Using the X-ray scope while out of bounds can overwrite a large range of memory addresses. It this case it is used to overwrite the event flags, triggering the planet's exploding state, I believe. I haven't looked into it in detail yet (I really should, though). It would be nice to see an analysis of exactly how powerful this glitch is, and whether it could change the game state variable, for example, or even lead to arbitrary code execution.
I'd say that non-square pixels is also a hardware defect, and not necessarily what the developers were looking at when programming the game on their computer screens. For example, the morphing ball in Super Metroid is 16x16 pixels large, making it exactly spherical if displayed with square pixels. If the pixels are stretched to give the screen a 4:3 aspect ratio, it turns into an ellipsoid. The same applies to the 24x24 neutral wheel sprite from Kirby Super Star. And the ferris wheel from Yoshi's topsy turby. In fact, when searching for wheel or circle sprites from snes games, all the ones I looked at assumed square pixels.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Copyright isn't necessarily the only way to solve the problem of how to encourage people to create. The EU recently held a consultation about the state of copyright, and the need for reform. This was open to all stakeholders, and I was among those answering. Aside from telling them that copyright currently lasts far too long, there was also a question about alternatives to copyright. Here is what I answered:
As an author one has two interests: That one's works should be widely enjoyed (i.e. the wish to leave a mark on the world, and be popular), and the wish to earn money. In the current system the latter is solved via copyright: Each author has a monopoly on distributing his works for a (very, very long time), letting him sell copies of his work with little worry of competition. This mechanism works, but it is not optimal because it conflicts with the other goal of authors, which is that one's works should be widely enjoyed. Under copyright, income depends on strict control of copying, and unauthorized copying potentially represents lost sales. The author therefore finds himself trying to stop others from spreading his work, and to limit those who enjoy it to those who bought a copy. His first and second goals are working against each other.
In a perfect system, authors would not have such a conflict of interest with themselves. Several alternatives to copyright exist which solve this problem, but introduce others.
Upfront payment (Kickstarter): The author asks for the full payment for his work before he performs it, rather than extracting it gradually over years afterwards. This could be organized in the same manner as the highly successfull Kickstarter: The author creates a Kickstarter page detailing his plan for, say, a new book, with some information about what it would be about, and states a price he wants for writing it (say 50,000€), possibly with some stretch goals (bonus chapter after 100,000€, for example). Potential readers then choose how much money they want to commit. Once enough money to reach the author's price has been reached, he gets the money, and starts working. If too much time passes (time-limit is commonly 90 days with Kickstarter) without the goal being reached, then the potential readers get their money back, and the author must try some other approach.
The advantage of this approach is that since the author has already been paid before he does the work, he does not need to control copying: copies are free, and can be shared freely. The more copies are shared, and the more people who enjoy his work, the easier it will be for him to gather money for his work. What is today called piracy woudl now just be free advertisement.
The disadvantage of this system is that it will be hard for unknown authors to find people willing to fund them. Probably, their first book would need to be written for free in order to get enough interested readers for this approach to work. On the other hand, in practice, authors already write their first book for free under the current system (they need something to show the editor in order to be funded), so this is not a serious disadvantage.
Projects of more than $1,000,000 are regularly funded through Kickstarter, and more than 50,000 projects have been funded during the 4 years since its founding. So a Kickstarter-inspired model of up-front payment really looks like it could work.
Usage-based payment: In stead of the author selling copies, the state could measure how much his works are used and compensate him accordingly. That would solve his conflict of interest with himself - now it would be in his economic interest to see people share his work with each other. Something similar to this has been in use for some artists in Norway since 1886, though in a much less expansive fashion. An advantage of this approach is that it allows one to make the economic reward non-proportional to the popularity. For example, one could reduce the money per fan per work for the most popular works in order to encourage diversity and avoid super-star effects where a few authors become billionaires while others get nothing (like the current system). A disadvantage of this is that it would require a significant bureaucracy, and there could be difficulties in getting unbiased measurements of popularity of individual works.
Donation-based payment: Fans of works could voluntarily donate money to authors. This would make the author's income grow as the number of fans grow, and it would be in authors' interest to let as many people enjoy their work as possible. However, the author's income would be unpredictable, and more so the less popular he is. Still, Wikipedia has proven that even a large project with significant hardware expenses can survive exclusively on donations.
These three suggestions are listed in the order of my preference, but they all have in common that they would make copyright unnecessary, and hence free up our culture, allowing anybody to distribute and modify what movies, book and songs they want, and saving society from the significant economic and social cost of enforcing copyright.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Patashu wrote:
For the non assembly programmers out there: What's the explanation (discriminator) for this glitch not being ACE, despite looking identical to the ACE usage?
Lot's of people seem to not understand what ACE is. ACE is when you have total control. If you can execute arbitrary code, then you can do anything, including jumping to the ending. But the reverse doesn't hold: Just because you can jump to the ending doesn't mean that you can do whatever you want. "Game end glitch" is to "ACE" as "finding a huge shortcut" is to "gaining ultimate power over the whole universe".
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Warp wrote:
Does the CPU execute unintended opcodes in RAM that were put there by the runner (usually through glitches in the game, but it doesn't really matter exactly how)? If yes, I'd classify that as arbitrary code execution.
No, it's arbitrary code execution if the player can make the game run whatever code he wants. If he can only specify a limited number of instructions to run, after which control is lost, then that's not arbitrary code execution. It's just a code execution exploit. "Arbitrary" in this sense means "unrestricted", not "random".
Wikipedia wrote:
It is the most powerful effect a bug can have because it allows an attacker to completely take over the vulnerable process.
"Arbitrary code execution" and "total control" are synonyms. So if you can use a glitch to end the game, but not make the characters dance polka across the screen, then it's not ACE.
Nach wrote:
I once got all the items in the game to reset just by shinesparking into a particular spot in Crateria. I wasn't even trying to do anything weird.
That's very interesting. The only shinespark bugs I'm aware of that come anywhere near being able to do this are the yapping maw shinespark glitch and the lava/sand shinespark glitch. But after some investigation, they seem to be dead ends, either doing nothing or crashing the game without doing anything interesting. Your shinespark glitch sounds like it could let one execute arbitrary code without the GT code, and probably more quickly too. Either directly or by first giving you all the beams and then using the standard methods.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Nicos wrote:
This run manage to showcase the Xray scope glitch and then manage to showcase some ACE
This run does not execute arbitrary code. It just corrupts memory. Corrupting memory is the first step towards ACE, but it isn't sufficient. Arbitrary code execution doesn't mean "runs some nonsense code". It means that you can make the console execute whatever string of instructions you choose.
I still think this TAS should obsolete both movies, but that isn't because this one uses ACE (it doesn't), it's because it's the fastest, and the goal of the previous fastest movie was to be fast, not to use ACE (which was just an incidental detail). I hope we'll have a proper ACE run eventually - i.e. one where the payload is the point, not the speed.
Oh, and yes vote, of course.
Experienced Forum User, Published Author, Former player
Joined: 2/19/2007
Posts: 424
Location: UK
Angerfist: I couldn't find the dolphin executable on that site. It only seemed to contain some kind of download manager. Why not just link directly to dolphin itself?
Edit: Angerfist sent me the file. It can now be found here. This custom build includes the recent timing fixes that were not, at the time of writing, merged into the official Dolphin. That first link contains the whole dolphin directory. But since only the code has changed, it should be enough to update the executable.