Run attributes
  • Aims for fastest completion of the game
  • Manipulates luck
  • Abuses programming errors
  • Exploits a game-breaking glitch
  • Corrupts save data
Emulator: Visual Boy Advance re-recording v22
Comments
The movie file for this run was changed shortly after the submission due to a minor improvement. It improves gia's run by 1381 frames (23.01 seconds). Now the main character doesn't need to go outside his house to complete the game.
The improvement is because of a new trick to change the destination of the warp points in the map, making it possible to go to the Hall of Fame by exiting your room, and thus trigger the end game sequence.
I discovered this trick almost accidentally while I was trying to understand how the "Doko Kashira Door" glitch worked in the japanese version Pokemon Green, trying to improve primo's run. I found out that the game runs a special check every four steps you take, and this routine is responsible for decreasing your pokemon's HP if it's poisoned and checking if all your party has fainted. While performing the glitch, this function starts to look at data far beyond the area reserved for your pokemon party, and decreases by one bytes that hold important data, like the destination where the warps will send you. Because of this, if a door that's affected by this function sends you to map #45, for example, taking four steps and entering it again will take you to map #44.
I couldn't find anything more worthy than that, but this discovery made me see that it's possible to manipulate the destination of the warps by changing a single byte. With some RAM searching, gamesharking and a table with the map ID's, I could find the memory addresses needed for this run.
The byte which controls the destination of the warp while in your room is 0xD3B2 in Red/Blue and 0xD3B1 in Yellow. gia's run warped to the hall of fame by placing the HOF's ID (which is $76, 118 in decimals) at the byte determining the area you're at. However, in order to complete the glitch, you must get into a battle so that the game loads this information. Changing the destination of a warp, however, can be done much faster.
Then, it must be clear by now that the objective of this run is to input the gameshark code 0176B1D3 without a cheating device. This is done via save corruption. By resetting the game during a save process at the earliest frame that doesn't destroy your data causes your party counter to have garbage, allowing you to have much more than six pokemon. By switching the 1st with the 10th (EDIT: Switching the 2nd with the 10th is 2 frames faster and saves a lag frame later, thanks was0x), the byte that holds the amount of items you have is changed, and your bag can access much more memory than it's supposed to access.
Below the items is important data, including, but not limited to, the X-Y coordinates, the rival's name, your trainer's ID and the byte we need to change. Bytes that are in odd addresses can be changed by switching items, while the ones in even addresses can be more easily changed by tossing items. Since we need to change an odd byte, we must switch items and the only thing that can be changed to $76 that early in the game is the low byte of your trainer's ID. This is manipulated by inserting idle frames before the first four button presses. This was done optimally by gia in his run using a bot. (I tried to do it using a Lua script, but all desync'ed) Therefore, the start of this run is the same as gia's (I actually changed some buttons pressed hoping to avoid lag, but it didn't work). With the right ID bytes, we only need to switch this item that appears on the inventory with the item corresponding to our byte, and we can happily go downstairs into the Hall of Fame. (The item we need is shown as Iron, because Iron's ID is $25, the same of the map of player's house 1F)
Regarding TAS aspects, I don't put fast text speed, because I can make it go faster holding B, there's no need to change battle style or turn off animations, since no battles occur. I name the player ASH because it's the shortest name, making text scroll faster. I also move next to the stairs before saving because I get poisoned for some reason after corrupting the save file, if I walk too many steps after the glitch, the poison animation gets me and I lose some frames. The rival's name is an interesting question, all names in the game occupy 12 bytes, even yours and the rival's, that could be stored in 8. If you name the player or the rival with a default name, there'll be garbage data after the end-of-string marker, and naming them with a custom name causes the data beyond the EOS to be blank bytes. (It means that it's different to choose the name "BLUE" and give the name "BLUE" yourself). This is important because the garbage data from a default name makes some bad items appear, causing more lag at the item scrolling. You could name your rival with bytes that correspond to actual items, like was done on gia's run, to make the scrolling faster. However, I tested these two possibilities myself and getting the default name "BLUE" finishes the game around 40 frames faster, because less scrolling needs to be done in this run.
Possible improvements
It's getting really difficult to think of improvements for this. In gia's previous submission, he stated that red and blue could be finished faster. This, however, is not true. Yellow is less laggy than R/B and loads a lot faster, making it the faster of the three games.
Doko Kashira can change the tile of the location of the warps in the map. With more research, it could be possible to set the warp's location in your room right next to you, so that you don't need to walk. It needs to be done real quick though, as walking doesn't take too much time.
Special thanks
  • was0x, he found an improvement in my original movie shortly after the submission was posted and allowed me to replace my movie with one that's 3 frames faster
  • primorial#soup, for his previous runs and for disassembling the ROM, giving TAS'ers a lot of information about the game's RNG and input oddities
  • hanzou, his discovery on ZZAZZ glitch showed it was possible to manipulate the game's RAM by exploding the inventory
  • Chamale, for his discovery of save corruption
  • gia, for his excellent run, memory map and manipulation bots
  • Glitch City Laboratories, their AreaDex project helped me with RAM searching
As a final note, I hope the viewer enjoys this short run, and apologize for the lack of writing skills in English, which makes my text unclear sometimes.

adelikat: Replacing submission file with a 3 frames faster version. See here for details.

adelikat: Accepting as an improvement to the published movie.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14873
Location: 127.0.0.1
This topic is for the purpose of discussing #2771: p4wn3r's GBC Pokémon: Yellow Version in 01:43.27
Editor, Active player (429)
Joined: 9/29/2008
Posts: 706
Location: Canada
Encoding now...
Joined: 5/2/2010
Posts: 17
Oh my :O
Joined: 11/16/2009
Posts: 68
Yes vote. Also, the comments were quite clear and informative.
Techokami
He/Him
Joined: 6/23/2008
Posts: 160
Currently uploading a (crappy) encode to show a friend. I suddenly suck at properly creating videos anymore. Also, big yes vote!
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
I want to see an encode before I vote, but considering it is faster, I will probably say yes.
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Techokami
He/Him
Joined: 6/23/2008
Posts: 160
Holy crap I made an encode http://www.youtube.com/watch?v=-iQ5Jf6WZJs
Joined: 7/2/2007
Posts: 3960
Very nice. I especially like your Pokemon rating. The explanatory text was also quite helpful. Nice work! Thanks for the encode, Techokami!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Techokami
He/Him
Joined: 6/23/2008
Posts: 160
Derakon wrote:
Thanks for the encode, Techokami!
You're quite welcome :)
darkszero
He/Him
Joined: 7/12/2009
Posts: 181
Location: São Paulo, Brazil
This is amazing! You managed to take a completely glitched run and make it even more glitchier AND faster. Your submission comments are really fun to read and explains what's going on. Obvious yes vote.
LSK
Joined: 4/17/2006
Posts: 159
"Pokemon champions are honored for their exploits here!" has never been more true.
Experienced player (954)
Joined: 12/3/2008
Posts: 936
Location: Castle Keep
I think its impossible to vote no to this! The sequence breaking at his paroxism, way to destroy a game, good job, easy yes vote
Personman
Other
Joined: 4/20/2008
Posts: 465
Very yes vote. The glitched overworld screen with the fields of 9s is a beautiful replacement/spiritual successor to the previous TAS's "go! 9999999999999999999999999999" Lovelily detailed comments as well.
A warb degombs the brangy. Your gitch zanks and leils the warb.
Skilled player (1090)
Joined: 8/26/2006
Posts: 1139
Location: United Kingdom
Loved it! That definitely felt glitchier than Gia's run. I especially liked the fact that you kept Ash x 64 (yourself) in your bag as you wore it. This was just mindfuck upon mindfuck. Voting yes, of course.
Tompa
Any
Editor, Expert player (2142)
Joined: 8/15/2005
Posts: 1934
Location: Mullsjö, Sweden
Not even 153 Pokémon? Oh well... I guess I'll vote yes anyway. Awesome run :D
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2174
Location: A little to the left of nowhere (Sweden)
Yes vote. Just because Ash carries 64 Ash in his backpack...
Banned User, Former player
Joined: 12/23/2004
Posts: 1850
haha, what
Perma-banned
Joined: 2/26/2007
Posts: 1360
Location: Minnesota
yup
adelikat wrote:
I very much agree with this post.
Bobmario511 wrote:
Forget party hats, Christmas tree hats all the way man.
Editor
Joined: 3/31/2010
Posts: 1466
Location: Not playing Puyo Tetris
Ok, the game is now so broken that there is no way it represents Yellow anymore except for the title screen. Recommended screen shot Ash's Pokedex Rating. It's so good, it says "error."
When TAS does Quake 1, SDA will declare war. The Prince doth arrive he doth please.
Joined: 5/13/2009
Posts: 141
A huge improvement on one of my favourite runs on the site. YES.
Experienced player (872)
Joined: 4/11/2008
Posts: 157
Location: Anime land
Very Good.Yes vote! By the way, I succeeded to improve from your movie by 3 frames. By switching pokemons and scrolling items. http://dehacked.2y.net/microstorage.php/info/506833898/p4wn3r_pokeyellow_TAS%2B.vbm
Post subject: NEW! encode. + 50% more screenie
Editor, Active player (429)
Joined: 9/29/2008
Posts: 706
Location: Canada
sgrunt
He/Him
Emulator Coder, Former player
Joined: 10/28/2007
Posts: 1360
Location: The dark horror in the back of your mind
was0x wrote:
By the way, I succeeded to improve from your movie by 3 frames.
Hmm... an interesting conundrum. Would you be willing to allow the submission file to be replaced by the one containing your improvement (and be credited for it, of course)?
Player (42)
Joined: 12/27/2008
Posts: 873
Location: Germany
was0x wrote:
Very Good.Yes vote! By the way, I succeeded to improve from your movie by 3 frames. By switching pokemons and scrolling items. http://dehacked.2y.net/microstorage.php/info/506833898/p4wn3r_pokeyellow_TAS%2B.vbm
With was0x's permission, the movie file was replaced by this improved version, that switches the 2nd pokemon in the party with the 10th, which saves two frames because the game doesn't recognize directional input at the same frame it recognizes the "A" button press. Strangely enough, this also saved one frame later, which indicates the run may still be improved by lag reduction. Also, thanks for the feedback in this run, and thanks for Kyman and Techokami for their encodes of the older movie.
Player (142)
Joined: 7/16/2009
Posts: 686
Truly amazing. This is the most glitched up run I've ever seen. Great work. Definite yes vote. EDIT: I vote for the ASH x 64 to be in the screenshot.