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.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15585
Location: 127.0.0.1
ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
finally we’ll have this published :)
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
This is an amazing improvement. Easy yes vote!
Joined: 5/14/2007
Posts: 525
Location: Pisces-Cetus filament
So you broke this game even further? I didn't expect it because I didn't know gia had improved your last movie, so this was a nice surprise. I suggest this screenshot:
AzumaK wrote: I swear my 1 year old daughter's favorite TASVideo is your R4MI run :3 xxNKxx wrote: ok thanks handsome feos :D Help improving TASVideos!
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Walking down stairs is for losers. Winners just walk through their TV and then win.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Glitcher
He/Him
Joined: 3/24/2007
Posts: 216
Location: London, U.K.
Um... what just happened? o_O
Joined: 5/29/2004
Posts: 757
Did not find this entertaining and more so confusing as hell. Just don't see the point of hyperglitched Pokémon runs where virtually nothing of the game is there. Bordering on Meh due to technical.. but still a no unfortunately. Mr. Kelly R. Flewin
Mr. Kelly R. Flewin Just another random gamer ---- <OmnipotentEntity> How do you people get bored in the span of 10 seconds? Worst ADD ever.
ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
Mr. Kelly R. Flewin wrote:
Did not find this entertaining and more so confusing as hell. Just don't see the point of hyperglitched Pokémon runs where virtually nothing of the game is there. Bordering on Meh due to technical.. but still a no unfortunately. Mr. Kelly R. Flewin
“I don’t like glitches– let me go and vote no on all glitched submissions”
Active player (279)
Joined: 4/30/2009
Posts: 791
He is entitled to his opinion ALAKTORN. Anyway, a yes vote from me.
Player (42)
Joined: 12/27/2008
Posts: 873
Location: Germany
Drop it, ALAKTORN, I know how it feels like to vote No on a submission with many Yes. I'm certain that there are other people that dislike the extremely broken nature of this category, although this criticism didn't appear in previous submissions. EDIT: Toothache beat me to it.
Brandon
He/Him
Editor, Player (191)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
If gia has stated repeatedly that he didn't want to submit this, and that he doesn't care about holding the record, then he shouldn't care about you doing this. It's his fault that your name is on this and not his, and you figured out the input necessary to create this run independently. Yes vote.
All the best, Brandon Evans
ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
Toothache wrote:
He is entitled to his opinion ALAKTORN. Anyway, a yes vote from me.
it’s pointless to vote no on something you don’t like, it’s like going to *name band you hate* concert and after saying “it sucked” that was my point, he said “no” to the category rather than the submission, which I don’t think makes sense edit: I understand my choice of words isn’t very good in the first sentence, but I hope it gets the point across…
Active player (264)
Joined: 4/15/2010
Posts: 197
Location: England
ALAKTORN wrote:
it’s pointless to vote no on something you don’t like, it’s like going to *name band you hate* concert and after saying “it sucked”
I think a more suitable analogy would be going to see a band you like and them only playing half of a song. Anyway, I watched gia's run on Youtube, so no need to see this if it's "identical" as you say on IRC. So yes vote, as I found it thoroughly entertaining, though I'm still unsure how copying his input worked exactly. I think gia should be co-author but I'm not one to make that judgement. :p
Retired smw-96, smw any%
ALAKTORN
He/Him
Former player
Joined: 10/19/2009
Posts: 2527
Location: Italy
bahamete wrote:
ALAKTORN wrote:
it’s pointless to vote no on something you don’t like, it’s like going to *name band you hate* concert and after saying “it sucked”
I think a more suitable analogy would be going to see a band you like and them only playing half of a song.
I was going to argue that it’s not the same because “glitched” is in the title, so it’d be like going to a concert where the band explicitly stated they’d play only half of the song, but I only now noticed there doesn’t seem to be any “glitched” tag anywhere on this run lol still, you can tell from the time, so I don’t think your analogy makes sense
Joined: 12/1/2007
Posts: 43
Location: Bogotá, Colombia
hegyak wrote:
Walking down stairs is for losers. Winners just walk through their TV...
This should be in the publication text.
When human lurking is not enough
Brandon
He/Him
Editor, Player (191)
Joined: 11/21/2010
Posts: 914
Location: Tennessee
Will you be encoding this yourself, p4wn3r, or would you like me to?
All the best, Brandon Evans
Player (42)
Joined: 12/27/2008
Posts: 873
Location: Germany
Brandon wrote:
Will you be encoding this yourself, p4wn3r, or would you like me to?
Go ahead.
bahamete wrote:
Anyway, I watched gia's run on Youtube, so no need to see this if it's "identical" as you say on IRC. So yes vote, as I found it thoroughly entertaining, though I'm still unsure how copying his input worked exactly. I think gia should be co-author but I'm not one to make that judgement. :p
I looked the item he changed, performed the same switches and this lead me to the memory address that ultimately warps to the end of the game. I compared it with the value that's there when the game is finishing, then I just needed to manipulate luck in the same amount of frames. First, I hacked the game with Lua to give me the values I needed and ended up 11 frames faster than that run, so I knew I had to do it in 11 frames, which I succeeded at. I'm currently trying to dig up more stuff to complete the submission text. I'm willing to include him, but I don't know his motives for refusing to submit.
Editor, Experienced player (941)
Joined: 7/20/2011
Posts: 345
bahamete wrote:
I think a more suitable analogy would be going to see a band you like and them only playing half of a song.
I think you go to see a band to see them play the whole song, while you go watch a TAS in order to see it beaten as fast as possible. I don't see your argument here, but that's my opinion. Anyways nice glitches and I'm voting yes.
Current thoughts: Hachiemon (J) for GBA.
Joined: 2/20/2010
Posts: 209
Location: I'm in space
And a Pokemon game is destroyed yet again. I vote yes based on previously stated criteria.
Oh, play it cool. Play it cool. Here come the space cops.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
What is the mysterious 152th pokemon? Anyways, I'm not sure what I should vote. I know this is just an improvement to an already-published run, and it's definitely not worse than it (taking into account the goal), so the obvious vote would be yes. However, since I personally detest savegame corruption as a technique (if a password were used to jump right to the end of the game, this would be rejected, but because it's achieved with savegame corruption, it becomes ok; I'm not sure I agree that there's such a relevant difference) I find it hard to vote "yes" on good conscience. It would feel like letting a criminal go based on a minute technicality. You know he's guilty, but you have to let him go because of the law.
Synahel
She/Her
Former player
Joined: 1/19/2011
Posts: 260
Location: France
Wait, so Ash doesn't leave his room to become a Pokémon Master? THIS WAS A VIDEO GAME WITHIN A VIDEO GAME ALL ALONG! Anyway, always great to see games borders turned to dust a bit more each time.
Joined: 5/8/2010
Posts: 177
Location: Entropy
I'm thinking Ash found his working "I Win" Button in his bag!
Joined: 6/4/2009
Posts: 893
yes vote but i'd feel better if gia was cited as at least as a co author (just to prevent some future edrama....) anyway, great run who know that beating a pokemon game was so easy ? my theory on this game is that actually ash was electrocuted by smashing his TV and is dreaming that he finaly caught all the pokemons...sad ending is sad
Editor
Joined: 3/10/2010
Posts: 899
Location: Sweden
And so yet another game that screws up atomic save writing gets won.
Active player (302)
Joined: 9/2/2006
Posts: 504
This is probably the most fucked up run on the site, yes vote.