Emulator: VBA-rr v22
This is an improvement to the published run made originally by gia that wasn't submitted. More information about it can be seen in his youtube video here: http://www.youtube.com/watch?v=7yXTpnUCh5Q
As far as I know, no .vbm of that movie was posted, shortly after that run was made I managed to recreate the presses file but kept it to myself as I was hoping that run would be submitted. Some months have passed and it seems the author doesn't have the intention to submit it here, so I'm submitting my own version (*puts on bullet proof vest*) because it looks like people want to have this published in TASVideos.org and asked me to submit this.

Objectives

  • Aims for fastest completion of the game
  • Extreme glitch abuse (not afraid to destroy the game)
  • Luck manipulation
  • Corrupts save data

What happens here

In order to understand, it's recommended to have familiarity with programming and some knowledge of GBC assembly and other aspects of the platform.

Relevant memory addresses

  • Trainer ID: 0xD358-0xD359
  • Map function (little endian): 0xD36D-0xD36E
  • Current map: 0xD35D
  • Party Pokémon general data: 1st one is at 0xD16A, has a size of 44 bytes
  • Party Pokémon OT name data: 1st one is at 0xD272, has a size of 11 bytes
  • Party Pokémon nickname data: 1st one is at 0xD2A4, has a size of 11 bytes
  • Pokédex data: everything from 0xD356 to 0xD31B, inclusive (38 bytes).
  • Inventory: 0xD31C (amount) and an array starting at 0xD31D with 20 elements of 2 bytes (item type and quantity) in the end of your normal inventory there's an 0xFF that indicates the CANCEL option, so this takes up at most 42 bytes.
The process to finish the game:
  • When the title screen opens, frames are waited to manipulate the trainer ID to be 0x64D0, there are other values that work but this is the fastest.
  • After the usual intro, picking the names ASH and BLUE because they are faster, we spawn in the room and hard reset mid-save to corrupt the data.
  • After the reset, the entire area destined to contain the data for pokémon in the party is full of 0xFF and is thus, corrupted. This includes the byte that counts the number of pokémon you have, so the game thinks you have 255 pokemon and will let you scroll the cursor and perform switches far after the usual limit of 6 pokemon.
  • Notice that for a max of 6 pokémon, the region that contains the party data will work fine, the general data for a pokémon will never overlap with its nickname or OT name. For more than that, this no longer holds because the difference in size will cause overlaps at some positions. When a switch occurs, the game will first switch the general data and then the other two, because of the coincidence of these two regions, interesting RAM manipulation can take place.
  • Switch 2nd pokemon (1st, 2nd, ..., 9th also work, the only difference is that the 1st is slower by 2 frames) with the 10th. This will set the entire pokedex region to FF, completing it and sets the inventory counter to 255 items. Because of the irregular 152 pokedex, a glitched description will appear at the end that doesn't need a click to cancel and input can be terminated sooner.
  • Switch 12th with 13th. 0x64 goes to address 0xD384 and 0xD0 goes to 0xD385.
  • Switch 11th with 13th. 0x64 goes to address 0xD32C and 0xD0 goes to 0xD32D, after this the 11 byte data is changed and the overlap causes it to be the region where 0x64 is, so after this last switch it goes to 0xD342.
  • It's impossible to get 0xD0 the right position with only pokémon switches, so we open the inventory and do an item switch to bring 0xD0 from 0xD32D to 0xD331.
  • Switch 11th with 12th. 0xD0 goes to 0xD35D (current map), 0x64 goes to 0xD36E, there's also a 0x01 that goes to 0xD36D, it's a byte that come before the trainer ID that, for our purposes, always contains 1.
After that, you can close the menu and the game will be completed, this is because Pokémon Yellow comes in an MBC5 GBC cartridge, this cartridge contains a lot of ROM that the GBC cannot handle all at once, so it's separated in chunks called banks. MBC5 has a main bank, which is always loaded into the gameboy and occupies positions 0x0000-0x3FFF and 63 other banks that the game can choose one of them to put in the active memory, at addresses 0x4000-0x7FFF. Having D0 as current map will force the game to load the bank which contains the function for the Hall of Fame walking cutscene, there are other values that work, but some of them mysteriously make ASH wait 16 frames to start walking, whereas D0 and some others don't. Additionally, having 0x0164 at the map function addresses will make the game execute a call to a function at this address and start executing stuff at 0x6401 (the data is little endian). Since this is an address from the bank area, what will be executed depends on the bank loaded, but with the previous setting, the machine will eventually start executing the hall of fame cutscene and grant you the completion of the game.
Through disassembly, I've verified that this function at some point switches to bank 60 and calls 0x4F26, which rolls the credits immediately without talking to OAK and that the map F8 can load this bank. However, with the above method we can only call addresses that terminate with 0x01, and going to 0x4F01 will get you a ret instruction on the way, and the procedure will return before reaching the credits. This can be circumvented with more manipulation of the RAM, but unfortunately, ended up slower than this attempt because of extra switches.
I also could notice that forcing the machine to jump to address 0x41c6 at bank 28 will start the pokedex rating sequence, however no map at 0xD35D can load this bank, the values for the bank which map loads are 256 bytes whose location starts at address 0x43e4 in bank 63.

Nach: Tremendous improvement, now you literally skipped the entire game. Accepting.

Brandon: Publication underway.


Brandon
He/Him
Editor, Player (197)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
Warp wrote:
For instance, what happens if the person who submits the keypress file makes some modifications to it? Can it then be considered acceptable to publish? How many modifications are needed for it to be acceptable? (Certainly if he modifies just the last frame of the file and nothing else, it's not "enough", but if he modifies 50% of it, it probably will be considered acceptable. Where is the line?).
I'd say they have to rerun the game from scratch. Mere hexing isn't sufficient. That said, it's quite impossible to prove whether someone has rerun the game from scratch or not, so I guess we just have to take their word for it in these cases and examine the files to see if the input is relatively different.
All the best, Brandon Evans
Joined: 6/26/2011
Posts: 167
Well... if an input file was made available for your example scenario, then it would need to be directly checked whether the new run was made through copying the original run's input and changing inconsequential inputs (such as going up, then left, instead of left then up), or rather if it was made through reverse-engineering, without actually using the input file as a basis. In the former, I'd reject based on plagiarism. In the latter, I'd accept only if the original author was asked to submit his original input file and declined. But that's just for that hypothetical situation. I don't think this particular Pokémon Yellow TAS is capable of deviating input, since it's already so minimized that any similar attempt would more-or-less use the same inputs, regardless of whether the user was aware of a prior video or simply the strategy involved.
First a movie gets submitted, and ends up accepted despite breaking rules other runs have been rejected for. And when I vote less than spectacularly on this movie, I become the victim of harassment and threats. Yay, favoritism.
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
Before we answer that (and other raised here) questions, let's repeat the long-established TAS maxims that aren't really questionable. 1. Any TAS is an essentially collaborative work that is based on finding new tricks, reverse-engineering those not completely documented, and improving upon existing work. Unlike sports or real-time playing, the previous work is always available to deconstruct, research, and repeat if needed. 2. Any subsequent TAS will have an input section functionally or literally identical to its previous generation. 3. When aiming for speed, the fastest known strategy must be used. Now that we have those out of the way, the common sense maxims. 1. No TAS is created of 100% original material, unless the author happens to be both the developer and the sole player of the game in question, or the game is so obscure nobody else ever talks about it. Even if the subsequent generations happen to only contain tricks not seen elsewhere, the previous ones have already served as stepping stones; more precisely, somebody else's tricks in them have. You can't come up with everything yourself. You always have to use somebody else's work to build up on it to make sure you aren't missing anything. What can you do about it to not make yourself look like a dick? Right, give a credit. 2. You have no moral right to prohibit people from using methods and strategies. Industries would fall into chaos if people started copyrighting (essentially monopolizing) things like conveyor belts, bottle caps, pedals, gears, etc.. It would also suck majorly, btw, because for every "original" idea everybody feels entitled to, they use a hundred existing ones. It's normal. 3. An input file created independently from another input file has its own authorship regardless of its content. When you're doing a math exam you can't claim another student is copying your solution if they come up with an identical one. Most of the time this is supposed to be the case. Because it's either the most optimal, or just the only possible solution. I don't really see the issue here, or some difficult moral dilemma this situation tries hard to be. gia has come up with a strategy improving upon an existing strategy, but decided not to submit it. His was found, researched, and reconstructed as a part of the normal TASing process, and gia was credited for finding this strategy. p4wn3r was honest with everybody else about what he did; there is no misinformation anywhere. The site has no unfulfilled obligations to gia in respect to this submission.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Joined: 4/3/2005
Posts: 575
Location: Spain
This is just a guess, but I think I know what happened here, this is an issue that also comes up often between magicians and is a source of hot debates. Let's say there are two magicians: Gia and P4wn3r. Their job is to entertain people, so they are always looking for new tricks that could show to people and attract more traffic/public. After lots of work, Gia finds a neat new trick never seen before, and he goes to a theater called Gia's account on Youtube to display it and attract public to that theater. P4wn3r watchs Gia's performance, is amazed that such neat trick is possible, and now that he has seen it, he is able to replicate it with a bit of thinking. P4wn3r goes then to a theater called Tasvideos to display it and attract public to that theater. Gia now has spend time developing a trick to bring people to his theater, but now has to compete with a bigger theater that uses his own trick without modifications. He also thinks people that have seen the trick on the bigger theater will not go to his theater, so he spend time for nothing. Magic tricks are not protected by copyright, but are instead treated as business secrets, the welfare of the magician depends on their tricks to remain secret, and that's why revealing and/or copying someone's tricks is so frowned upon by the rest of magicians, as it attacks their way of life. I think it's rude behavior to copy gia's trick if he doesn't want to share it with everyone, even if you reverse engineer it. I also know it's not illegal. In any case, I can understand how doing that can force gia out of the hobby. And that's my point of view, peace to all.
No.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
I see DrJones' point of view, but TASing isn't currently a money making venture. :)
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
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
DrJones, that parallel doesn't work. Each game only has 1 optimal way to achieve its goal (outside doing entertainment tricks that don't waste time). Finding that optimal method is TASing. Magicians have many ways to entertain their audience. There's no single trick they must do for their performance to be complete.
Brandon
He/Him
Editor, Player (197)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
I also agree that the parallel is inaccurate. If we want to compare distribution mechanisms to theaters, than this is hardly an accurate statement. To get on TASVideos, you need a stream, and YouTube is a streaming site. p4wn3r gave gia 7 months to bring his trick to TASVideos, and he could have hosted the video on his channel while having the site use his video as the streaming encode. TASVideos would bring more people to his channel, but he refused to do so without giving a reason whatsoever. Furthermore, p4wn3r explicitly credited gia for his contributions, so he can not be accused of stealing the trick.
All the best, Brandon Evans
Experienced player (962)
Joined: 12/3/2008
Posts: 940
Location: Castle Keep
Also dont be so naive, of course magicians does steal their tricks to each others, hell theres even magicians schools, its not like magicians live in a different world where everything is fair ect... If every tricks was exclusive to any magicians they would all die with their tricks undiscovered and its not the case for vaste majority, its fun you take that exemple because i think a good magician is actually the one that have many tricks, so he "stole" (or learned or whatever) many of them probably, like moozooh sayd earlier you dont generate spontanously content like that just by luck, you do some yourself, and you take what others have to give, eventually you might also enhance them. (Note that im not saying somebody is unfair in this whole affair, i just dont agree with that comparaison)
Joined: 1/13/2007
Posts: 343
"You were supposed to frame war it".... It seems the issue is clear. Gia didn't want to submit it at first, because he wasn't convinced it was optimized, and had no problem with someone else optimizing his strategy. But his original file apparently has the *exact same frame count*, and thus wasn't an improvement, and he doesn't want his video to be beaten on here by one that tied it. And because gia couldn't beat this TAS either, he can't change his mind and submit it now, because it would be rejected. THAT'S why he's mad. because he failed to submit it earlier, he can't submit his TAS now that turned out to be optimized after all. In plain english. He wants the TAS removed because it was not the first one to reach that frame count on that game. As soon as someone figures out a way to save a frame, he will be perfectly fine with it being submitted.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
zaphod77 wrote:
In plain english. He wants the TAS removed because it was not the first one to reach that frame count on that game. As soon as someone figures out a way to save a frame, he will be perfectly fine with it being submitted.
He has much less exclusive rights to the record than he has to the contents of the keypress file. A record is not even remotely copyrightable, not even in principle.
Joined: 1/26/2009
Posts: 558
Location: Canada - Québec
Moral of the story: Just don't make TAS, there no place for pride here and at least you won't end up with your mental domaged by one way or another. The best resonable deal possible could been to place both gia and p4wn3r as author, even if one party doesn't accept, they still somewhat both deserve it. Gia inspired the idea without sharing the content and p4wn3r probably verified if any frame could been saved while remaking.
Brandon
He/Him
Editor, Player (197)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
Because Grunt asked me to, I figure I should mention that the 512kb for this publication has seemingly messed up video. Anyone who'd like to fix this can, but I'd really prefer not to redo this yet again, especially considering I'm relatively inactive as of late.
All the best, Brandon Evans
sgrunt
He/Him
Emulator Coder, Former player
Joined: 10/28/2007
Posts: 1360
Location: The dark horror in the back of your mind
It plays fine for me here, both through the site player and locally.
darkszero
He/Him
Joined: 7/12/2009
Posts: 181
Location: São Paulo, Brazil
A question: does this movie really manipulates luck heavily or is it just category heritage from back when this branch actually needed to manipulate the player ID and such?
Joined: 12/31/2009
Posts: 174
darkszero wrote:
A question: does this movie really manipulates luck heavily or is it just category heritage from back when this branch actually needed to manipulate the player ID and such?
This still needed to manipulate the trainer ID.
Spikestuff
They/Them
Editor, Publisher, Expert player (2666)
Joined: 10/12/2011
Posts: 6452
Location: The land down under.
Hey. Quite a bump here. 8 years after all this ended, but that's besides the point. So. Remember how everyone was talking about copyright and who it belongs to? Well. gia did something fairly scummy and they copyright claimed the TAS. The encode falls under fair use (I meant creative commons it's still irrelevant here like Moth mentioend), and it's being mistreated like this. The surprising bit is Brandon's encode on his own channel is still up. However, the one on TASVideosChannel was targeted and taken down. According to Wayback the Encode was taken down after July 8th 2018.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Noxxa
They/Them
Moderator, Expert player (4132)
Joined: 8/14/2009
Posts: 4091
Location: The Netherlands
Fair use is not relevant to the point at hand here. Neither is the license attached to this submission that allows the site to upload the work to YouTube. Plainly, this is not gia's movie, and has been proven not to be, and therefore he should have no right at all to claim copyright of any form on this movie. The only thing this movie does is copy the strategy of gia's previous movie, but gameplay strategies are not copyrighted. This is plain and simple abuse of YouTube's copyright system, which fails to discern the difference between gia's movie created by gia's input and p4wn3r's movie created by p4wn3r's input.
http://www.youtube.com/Noxxa <dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects. <Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits <adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.