Introduction
Well, that didn't take long. After finishing my first any% TAS on Pokémon Blue (here), I read some comments about how this run is all the same as the save corruption run (here), just with 35 minutes of extra padding to get to that point.
In a way they were right, all recent first generation Pokémon TASes are corrupting the inventory to use it as a hex editor, shifting the right bytes to the right places and therefore tricking the game into playing the final cutscene.
This makes them look all the same in the end: you scroll through a glitched inventory screen that is filled with hilarious items (e.g. "GARY x97") and swap them around.
It got me thinking whether there may be an alternative way to manipulate the bytes.
Sure enough, I found one, which isn't that surprising, considering the multitude of game-breaking glitches that this particular game features.
More surprising is the fact that it is actually a lot faster to do than the inventory glitching.
I recommend to watch the movie before reading the technical details below. The movie contains almost none of the usual graphical glitchiness and obvious game breaking that the previous movies had, which lets the end seem rather sudden and magical.
Categories
- Forgoes save data corruption
- Aims for the fastest completion time
- Heavy luck manipulation
- Heavy glitch abuse
- Contains speed-entertainment tradeoffs
Used emulator: BizHawk 1.4.1
About the run
I mainly re-used the infrastructure I already had from my last Pokémon Blue TAS.
Most of the reasoning behind the general properties and choices made is described in the submission text (here) and is still valid for this movie.
Version choice
Unlike the previous run, this run is indeed version dependent.
The route strongly depends on Bellsprout, which can only be found in the Blue version (the Red version has Oddish instead).
Bellsprout and Oddish differ in their stats, which are highly important as will be described later.
Other than that, there is no significant time advantage for any of the versions.
General Luck manipulation
Luck manipulation is a vital part in any Pokémon TAS, understanding and manipulating the random number generator (RNG) is important to get favourable outcomes quickly.
The game uses two addresses for random numbers, 0xFFD3 and 0xFFD4.
Both of them are determined using the value of a hardware register (named DIV) and are considered to be unpredictable.
Most of the time, only the value of 0xFFD3 is important, 0xFFD4 is rarely used throughout the game.
Since the values change rather erratically and there are only 256 of them, it is quite easy to get the value you want for 0xFFD3 by simply brute-forcing some different input sequences.
The real problem occurs if you need to consider 0xFFD4 as well.
Luckily, it is used only in three places thoughout the entire game:
- determining the high byte of the Trainer ID when starting a new game
- determining the species of a wild encounter
- determining the initial first trash can in Vermilion gym.
Only the second point is a concern in this run.
In each RNG cycle, 0xFFD3 is incremented by DIV, while 0xFFD4 is decremented by DIV, which makes their sum almost constant (DIV can change slightly inbetween the two operations, and there are carry values to consider).
The sum 0xFFD3 + 0xFFD4 therefore has a special name, called the D-Sum.
The D-Sum is known to slowly decrease in the overworld, while it increases during battles and menus.
Encounter mechanics
When moving in high grass, the game checks for an encounter after every step.
Each area has its own encounter rate, which ranges from around 3% to 12%.
Furthermore, each area has a list of 10 possible encounters with fixed probabilities.
That is, each slot has a fixed chance, independent from the area you are in, only the encounter you get in that specific slot varies.
For example, the encounter list for route 25 looks like this:
Slot Nr. | Encounter | Value range | Chance |
---|---|---|---|
1 | Lvl 8 Caterpie | 0x00 - 0x32 | 51/256 (~20%) |
2 | Lvl 9 Metapod | 0x33 - 0x65 | 51/256 (~20%) |
3 | Lvl 13 Pidgey | 0x66 - 0x8C | 39/256 (~15%) |
4 | Lvl 12 Bellsprout | 0x8D - 0xA5 | 25/256 (~10%) |
5 | Lvl 13 Bellsprout | 0xA6 - 0xBE | 25/256 (~10%) |
6 | Lvl 12 Abra | 0xBF - 0xD7 | 25/256 (~10%) |
7 | Lvl 14 Bellsprout | 0xD8 - 0xE4 | 13/256 (~5%) |
8 | Lvl 10 Abra | 0xE5 - 0xF1 | 13/256 (~5%) |
9 | Lvl 7 Kakuna | 0xF2 - 0xFC | 11/256 (~4%) |
10 | Lvl 8 Weedle | 0xFD - 0xFF | 3/256 (~1%) |
The encounter rate of route 25 is 0x0F (~5.86%).
If you step in high grass in route 25, the values of 0xFFD3 and 0xFFD4 are considered:
If the value of 0xFFD3 is lower than the encounter rate 0x0F, you get an encounter.
The value of 0xFFD4 determines the species: Depending on the value range which 0xFFD4 lies in, you get the respective encounter.
That means if you want to encounter a Lvl 14 Bellsprout, you need 0xFFD3 to be between 0x00 and 0x0E and 0xFFD4 to be between 0xD8 and 0xE4.
Therefore, your D-Sum must be between 0xD8 and 0xF2.
This makes manipulating encounters the hardest luck manipulation in this game.
There is no way to change your D-Sum quickly, and if it is not in the desired range, there is no other way than to wait for the D-Sum to slowly change in order to get it where you want it.
This is especially problematic if you need multiple consecutive encounters:
After your first encounter, your D-Sum is always in a certain range (the range you needed it to be for that encounter), which might be not nearly where you need it for the second encounter.
For specific encounter combinations, you therefore have no other option than to wait around for several seconds to manipulate the D-Sum.
The problem gets even worse if you need the encounters to have specific stats.
The DVs of wild encounters are randomly determined right after the encounter species is chosen, which makes it arguably the hardest thing to manipulate.
Hard luck manipulations featured in this run
- manipulating the Trainer ID to be 0x2E5E (1/65536; ~0.0015%)
- manipulating Charmanders DVs to be exactly 7 Attack, 6 Defense, 12 Speed, 9 Special (1/65536; ~0.0015%)
- manipulating 4 consecutive encounters in route 25:
- Lvl 12 Bellsprout with Special DV 0 (350/1048576; ~0.03%)
- Lvl 14 Bellsprout with low Defense and HP DVs (~0.1%)
- Lvl 9 Metapod (714/65536; ~1%)
- Lvl 12 Bellsprout with low Defense and HP DVs (~0.4%)
Speed-entertainment tradeoffs
This run follows the usual speed-entertainment tradeoff used for this game, which is forgoing red bar:
If a fighting Pokémon is at low health, is produces a constant warning sound that disables all other sound effects and therefore saves time, but the constant beeping is a major annoyance.
Unlike the previous run, it does not follow the character naming convention, as the player name is actually an important part of the used route.
Glitches used in this movie
Three of the used glitches were also used in the previous run, I will list them here for completion.
A more comprehensive description of them can be found in the previous submission text.
The fourth glitch is the newly introduced one that allowed for the great time savings and will be discussed in detail.
Brock skip glitch
Uses save and reset to to skip fighting Brock.
Skipping mandatory trainers (Trainer-Fly)
Uses the Trainer-Fly glitch to disable all trainers in an area and therefore skip them.
Used to skip all Mt. Moon trainers.
Encountering arbitrary Pokémon or Trainers (Trainer-Fly)
Re-entering an area after using Trainer-Fly and fighting another trainer produces a wild encounter, the species of which is determined by the special stat of the last fought Pokémon.
Used in this run to catch the otherwise unobtainable Pokémon Mew.
Transform glitch
While this gltich is known for a long time, its effects were not well-explored.
It is triggered by using the move Transform on an enemy that has more moves than the own Pokémon.
If the last move is swapped with the first one while transformed, the original moves will be swapped as well, except that the last transformed move does not exist in the original move list.
Therefore, after the swap, the first move slot is empty, a fact that is not well handled by the game.
The game expects every Pokémon to have at least one move, so it lets you use the non-existing move in battles.
Disclaimer: The following paragraphs contain technical details of the glitch's mechanics and require a basic understanding of programming and assembly language.
If you are not interested, you can skip this part. The bottom line is that tricky arbitrary code execution is performed to trigger the ending cutscene when the move is used.
Since there is no valid data defined for that move, it reads data from other areas that are not meant to be move parameters.
This results, at least for this particular version of the game, in a damaging move of the glitch type "Cooltrainer♀" with base power 102, ~20% accuracy, 13 PP and the animation of Fissure.
The real use of it, however, lies in its move effect.
After a successful attack, the glitch effect 0x74 is triggered, which executes code starting from 0xF928.
The address 0xF928 is in a memory segment called "Echo RAM", and is a replicate of the actual RAM address 0xD928.
To exploit this, the goal is to manipulate the memory content starting from 0xD928 to spell out assembly that
- tricks the game into running the ending cutscene
- does not crash the game in the process
The following table shows the RAM map of that particular memory region:
Addresses | Content | Comment |
---|---|---|
0xD928 - 0xD953 | Data of 4th enemy Pokémon | This will be the data of Squirtle, since the last trainer with four Pokémon will be the Nugget Bridge rival. Luckily, Squrtle's data does not crash the game, but it's not useful, either. |
0xD954 - 0xD97F | Data of 5th enemy Pokémon | No trainer had a 5th Pokémon, so the data is all 0s. Not dangerous, not helpful. |
0xD980 - 0xD9AB | Data of 6th enemy Pokémon | All 0s as well. Not dangerous, not helpful. |
0xD9AC - 0xD9ED | Trainer name for the 6 enemy Pokémons | The trainer name is always set to the player's name. Limited manipulation is possible here and will be used. |
0xD9EE - 0xDA2F | Nickname for the 6 enemy Pokémons | Empty names, not useful. |
0xDA30 - 0xDA31 | Pointer to data of current area trainers | Potentially dangerous, an area is needed the trainer pointer of which doesn't trigger fatal assembly. No real manipulation potential. |
0xDA32 - 0xDA3F | Misc. data (e.g. Cinnabar Island gym quiz) | Always 0 |
0xDA40 - 0xDA45 | Game time in hours, minutes, seconds, frames | Potentially dangerous, the in-game time must be chosen to not crash the game. No real manipulation potential. |
0xDA46 - 0xDA7F | Misc. data (e.g. Safari Zone/Daycare data) | Always 0 |
0xDA80 - 0xDA95 | Species of the 20 Pokémon in the current box | Dangerous, the end of list marker 0xFF reads as assembly "RST 38" which crashes the game and must be avoided. |
0xDA96 - 0xDAB6 | Data of 1st boxed Pokémon | This is where the most manipulation potential is. The Trainer ID and the DVs can be fully manipulated, and the experience, EVs, etc. at least to some extend. |
The ultimate manipulation goal is to write 0x76 to address 0xD35E. This address holds the current map, and 0x76 is the Hall of Fame room.
Since this will happen during a battle, and after each battle the map is reloaded, this is everything that is necessary to trigger the ending cutscene.
The manipulation opportunities are quite limited, however, especially early in the game.
The best options are the Trainer name, the Trainer ID and the stored Pokémon's EVs and DVs.
We will consider them in reverse order:
The EVs and DVs are the last useful information that is stored, so it needs to be the ending of the routine:
We want to execute
LD (HL) 0x76 RET
which spells out to
0xDAB0 0x36 // lower byte of Special EV value 0xDAB1 0x76 // Attack and Defense DVs 0xDAB2 0xC9 // Speed and Special DVs
What we need to achieve up to this point is getting the value 0xD35E into the registers hl, which means putting 0xD3 into h and 0x5E into l.
Register l can be filled using the Trainer ID:
LD l, 0x5E
spells out to
0xDAA2 0x2E // high byte of Trainer ID 0xDAA3 0x5E // low byte of Trainer ID
There is not much room left for manipulating h to 0xD3.
The best option is to use the Trainer name, but since the available assembly is limited by the characters in the alphabet here, some trickery is required.
The name used in this run is "BD♀(pk)RT", where (pk) is the special character that displays the first half of the text "pkmn".
It spells out to the following assembly
ADD a,c ADD a,e // after this operation, a happens to have the value 0xD3 PUSH af // pushes af onto stack POP hl // pop stack into hl, essentially copying af to hl. h now has the desired value 0xD3. SUB a,c // undo all changes that were made to a. It's necessary because the name occurs four SUB a,e // times and subsequent occurences would otherwise corrupt h's value.
All other assembly operations are only required to not crash and not mess up the value of hl, which is luckily quite easy to achieve.
For this setup to work, we therefore need to do the following
- Have a Trainer ID of 0x2E5E (11870 in decimal)
- Name the player "BD♀(pk)RT"
- Manipulate Charmander to have 7 Attack DV, 6 Defense DV, 12 Speed DV, 9 Special DV
- Catch Mew and get it to level 10 to learn Transform (Ditto knows Transform, too, but is way harder to obtain)
- Get Charmeleon to have 0x36 as the lower byte of its special EV. This is where having Bellsprout instead of Oddish is important.
- Store Charmeleon in a box
- Perform the Transform glitch
- Hope that the game doesn't crash
The last point in the list is added because of an undesired side effect that the use of that glitch move can have, which is commonly called the "TMTRAINER effect".
It is caused in the following way: Even though the move itself is perfectly stable and harmless, its name is not.
There is no name for the move, so the game looks for it past the actual move name list.
Where it ends up is determined by the number of end of string symbols (0x50) in the game's RAM at that point, which is highly unpredictable.
This random portion of RAM (20 bytes) is then copied to the name buffer and from there to the string buffer.
This last copy operation is where the problem occurs: the programmers assumed that each name always ends with an end of string sybmol, so the copy operation continues until it is found.
The random move name that is picked from the memory may not have such a symbol, so the game copies far too many bytes, overwriting other important memory areas, glitching out the game and most likely crashing it.
A full trace log of the actual code executed during this run can be seen in the trace log below.
Trace log:
F928:B1 OR C SP:dfed A:28 B:00 C:e6 D:00 E:01 F:00 H:f9 L:28 Cy:69752 F929:00 NOP SP:dfed A:ee B:00 C:e6 D:00 E:01 F:00 H:f9 L:28 Cy:69756 F92A:00 NOP SP:dfed A:ee B:00 C:e6 D:00 E:01 F:00 H:f9 L:28 Cy:69760 F92B:00 NOP SP:dfed A:ee B:00 C:e6 D:00 E:01 F:00 H:f9 L:28 Cy:69764 F92C:00 NOP SP:dfed A:ee B:00 C:e6 D:00 E:01 F:00 H:f9 L:28 Cy:69768 F92D:15 DEC D SP:dfed A:ee B:00 C:e6 D:00 E:01 F:00 H:f9 L:28 Cy:69772 F92E:15 DEC D SP:dfed A:ee B:00 C:e6 D:ff E:01 F:40 H:f9 L:28 Cy:69776 F92F:2D DEC L SP:dfed A:ee B:00 C:e6 D:fe E:01 F:40 H:f9 L:28 Cy:69780 F930:21 27 91 LD HL,#9127h SP:dfed A:ee B:00 C:e6 D:fe E:01 F:40 H:f9 L:27 Cy:69784 F933:37 SCF SP:dfed A:ee B:00 C:e6 D:fe E:01 F:40 H:91 L:27 Cy:69796 F934:2E 5E LD L,#5Eh SP:dfed A:ee B:00 C:e6 D:fe E:01 F:10 H:91 L:27 Cy:69800 F936:00 NOP SP:dfed A:ee B:00 C:e6 D:fe E:01 F:10 H:91 L:5e Cy:69808 F937:0C INC C SP:dfed A:ee B:00 C:e6 D:fe E:01 F:10 H:91 L:5e Cy:69812 F938:30 00 JR NC,F93Ah SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69816 F93A:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69824 F93B:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69828 F93C:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69832 F93D:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69836 F93E:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69840 F93F:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69844 F940:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69848 F941:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69852 F942:00 NOP SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69856 F943:98 SBC A,B SP:dfed A:ee B:00 C:e7 D:fe E:01 F:10 H:91 L:5e Cy:69860 F944:88 ADC A,B SP:dfed A:ed B:00 C:e7 D:fe E:01 F:40 H:91 L:5e Cy:69864 F945:23 INC HL SP:dfed A:ed B:00 C:e7 D:fe E:01 F:00 H:91 L:5e Cy:69868 F946:1E 1E LD E,#1Eh SP:dfed A:ed B:00 C:e7 D:fe E:01 F:00 H:91 L:5f Cy:69876 F948:19 ADD HL,DE SP:dfed A:ed B:00 C:e7 D:fe E:1e F:00 H:91 L:5f Cy:69884 F949:11 00 2C LD DE,#2C00h SP:dfed A:ed B:00 C:e7 D:fe E:1e F:10 H:8f L:7d Cy:69892 F94C:00 NOP SP:dfed A:ed B:00 C:e7 D:2c E:00 F:10 H:8f L:7d Cy:69904 F94D:18 00 JR F94Fh SP:dfed A:ed B:00 C:e7 D:2c E:00 F:10 H:8f L:7d Cy:69908 F94F:1D DEC E SP:dfed A:ed B:00 C:e7 D:2c E:00 F:10 H:8f L:7d Cy:69920 F950:00 NOP SP:dfed A:ed B:00 C:e7 D:2c E:ff F:50 H:8f L:7d Cy:69924 F951:16 00 LD D,#00h SP:dfed A:ed B:00 C:e7 D:2c E:ff F:50 H:8f L:7d Cy:69928 F953:18 00 JR F955h SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69936 F955:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69948 F956:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69952 F957:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69956 F958:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69960 F959:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69964 F95A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69968 F95B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69972 F95C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69976 F95D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69980 F95E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69984 F95F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69988 F960:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69992 F961:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:69996 F962:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70000 F963:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70004 F964:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70008 F965:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70012 F966:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70016 F967:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70020 F968:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70024 F969:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70028 F96A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70032 F96B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70036 F96C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70040 F96D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70044 F96E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70048 F96F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70052 F970:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70056 F971:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70060 F972:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70064 F973:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70068 F974:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70072 F975:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70076 F976:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70080 F977:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70084 F978:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70088 F979:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70092 F97A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70096 F97B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70100 F97C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70104 F97D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70108 F97E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70112 F97F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70116 F980:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70120 F981:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70124 F982:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70128 F983:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70132 F984:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70136 F985:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70140 F986:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70144 F987:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70148 F988:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70152 F989:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70156 F98A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70160 F98B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70164 F98C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70168 F98D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70172 F98E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70176 F98F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70180 F990:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70184 F991:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70188 F992:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70192 F993:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70196 F994:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70200 F995:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70204 F996:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70208 F997:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70212 F998:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70216 F999:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70220 F99A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70224 F99B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70228 F99C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70232 F99D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70236 F99E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70240 F99F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70244 F9A0:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70248 F9A1:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70252 F9A2:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70256 F9A3:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70260 F9A4:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70264 F9A5:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70268 F9A6:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70272 F9A7:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70276 F9A8:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70280 F9A9:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70284 F9AA:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70288 F9AB:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70292 F9AC:81 ADD A,C SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:8f L:7d Cy:70296 F9AD:83 ADD A,E SP:dfed A:d4 B:00 C:e7 D:00 E:ff F:10 H:8f L:7d Cy:70300 F9AE:F5 PUSH AF SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:10 H:8f L:7d Cy:70304 F9AF:E1 POP HL SP:dfeb A:d3 B:00 C:e7 D:00 E:ff F:30 H:8f L:7d Cy:70320 F9B0:91 SUB C SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70332 F9B1:93 SUB E SP:dfed A:ec B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70336 F9B2:50 LD D,B SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70340 F9B3:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70344 F9B4:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70348 F9B5:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70352 F9B6:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70356 F9B7:81 ADD A,C SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70360 F9B8:83 ADD A,E SP:dfed A:d4 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70364 F9B9:F5 PUSH AF SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70368 F9BA:E1 POP HL SP:dfeb A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70384 F9BB:91 SUB C SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70396 F9BC:93 SUB E SP:dfed A:ec B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70400 F9BD:50 LD D,B SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70404 F9BE:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70408 F9BF:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70412 F9C0:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70416 F9C1:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70420 F9C2:81 ADD A,C SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70424 F9C3:83 ADD A,E SP:dfed A:d4 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70428 F9C4:F5 PUSH AF SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70432 F9C5:E1 POP HL SP:dfeb A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70448 F9C6:91 SUB C SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70460 F9C7:93 SUB E SP:dfed A:ec B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70464 F9C8:50 LD D,B SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70468 F9C9:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70472 F9CA:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70476 F9CB:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70480 F9CC:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70484 F9CD:81 ADD A,C SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70488 F9CE:83 ADD A,E SP:dfed A:d4 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70492 F9CF:F5 PUSH AF SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70496 F9D0:E1 POP HL SP:dfeb A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70512 F9D1:91 SUB C SP:dfed A:d3 B:00 C:e7 D:00 E:ff F:30 H:d3 L:30 Cy:70524 F9D2:93 SUB E SP:dfed A:ec B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70528 F9D3:50 LD D,B SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70532 F9D4:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70536 F9D5:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70540 F9D6:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70544 F9D7:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70548 F9D8:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70552 F9D9:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70556 F9DA:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70560 F9DB:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70564 F9DC:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70568 F9DD:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70572 F9DE:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70576 F9DF:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70580 F9E0:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70584 F9E1:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70588 F9E2:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70592 F9E3:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70596 F9E4:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70600 F9E5:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70604 F9E6:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70608 F9E7:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70612 F9E8:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70616 F9E9:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70620 F9EA:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70624 F9EB:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70628 F9EC:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70632 F9ED:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70636 F9EE:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70640 F9EF:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70644 F9F0:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70648 F9F1:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70652 F9F2:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70656 F9F3:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70660 F9F4:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70664 F9F5:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70668 F9F6:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70672 F9F7:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70676 F9F8:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70680 F9F9:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70684 F9FA:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70688 F9FB:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70692 F9FC:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70696 F9FD:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70700 F9FE:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70704 F9FF:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70708 FA00:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70712 FA01:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70716 FA02:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70720 FA03:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70724 FA04:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70728 FA05:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70732 FA06:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70736 FA07:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70740 FA08:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70744 FA09:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70748 FA0A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70752 FA0B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70756 FA0C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70760 FA0D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70764 FA0E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70768 FA0F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70772 FA10:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70776 FA11:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70780 FA12:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70784 FA13:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70788 FA14:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70792 FA15:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70796 FA16:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70800 FA17:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70804 FA18:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70808 FA19:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70812 FA1A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70816 FA1B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70820 FA1C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70824 FA1D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70828 FA1E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70832 FA1F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70836 FA20:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70840 FA21:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70844 FA22:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70848 FA23:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70852 FA24:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70856 FA25:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70860 FA26:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70864 FA27:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70868 FA28:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70872 FA29:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70876 FA2A:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70880 FA2B:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70884 FA2C:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70888 FA2D:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70892 FA2E:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70896 FA2F:00 NOP SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70900 FA30:56 LD D,(HL) SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70904 FA31:89 ADC A,C SP:dfed A:ed B:00 C:e7 D:00 E:ff F:50 H:d3 L:30 Cy:70912 FA32:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70916 FA33:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70920 FA34:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70924 FA35:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70928 FA36:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70932 FA37:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70936 FA38:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70940 FA39:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70944 FA3A:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70948 FA3B:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70952 FA3C:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70956 FA3D:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70960 FA3E:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70964 FA3F:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70968 FA40:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70972 FA41:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70976 FA42:00 NOP SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70980 FA43:1A LD A,(DE) SP:dfed A:d5 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70984 FA44:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70992 FA45:06 00 LD B,#00h SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:70996 FA47:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71004 FA48:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71008 FA49:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71012 FA4A:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71016 FA4B:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71020 FA4C:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71024 FA4D:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71028 FA4E:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71032 FA4F:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71036 FA50:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71040 FA51:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71044 FA52:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71048 FA53:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71052 FA54:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71056 FA55:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71060 FA56:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71064 FA57:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71068 FA58:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71072 FA59:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71076 FA5A:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71080 FA5B:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71084 FA5C:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71088 FA5D:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71092 FA5E:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71096 FA5F:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71100 FA60:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71104 FA61:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71108 FA62:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71112 FA63:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71116 FA64:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71120 FA65:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71124 FA66:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71128 FA67:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71132 FA68:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71136 FA69:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71140 FA6A:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71144 FA6B:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71148 FA6C:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71152 FA6D:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71156 FA6E:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71160 FA6F:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71164 FA70:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71168 FA71:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71172 FA72:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71176 FA73:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71180 FA74:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71184 FA75:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71188 FA76:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71192 FA77:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71196 FA78:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71200 FA79:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71204 FA7A:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71208 FA7B:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71212 FA7C:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71216 FA7D:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71220 FA7E:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71224 FA7F:00 NOP SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71228 FA80:01 B2 FF LD BC,#FFB2h SP:dfed A:00 B:00 C:e7 D:00 E:ff F:10 H:d3 L:30 Cy:71232 FA83:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71244 FA84:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71248 FA85:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71252 FA86:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71256 FA87:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71260 FA88:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71264 FA89:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71268 FA8A:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71272 FA8B:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71276 FA8C:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71280 FA8D:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71284 FA8E:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71288 FA8F:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71292 FA90:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71296 FA91:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71300 FA92:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71304 FA93:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71308 FA94:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71312 FA95:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71316 FA96:B2 OR D SP:dfed A:00 B:ff C:b2 D:00 E:ff F:10 H:d3 L:30 Cy:71320 FA97:00 NOP SP:dfed A:00 B:ff C:b2 D:00 E:ff F:80 H:d3 L:30 Cy:71324 FA98:3A LD A,(HL-) SP:dfed A:00 B:ff C:b2 D:00 E:ff F:80 H:d3 L:30 Cy:71328 FA99:14 INC D SP:dfed A:00 B:ff C:b2 D:00 E:ff F:80 H:d3 L:2f Cy:71336 FA9A:00 NOP SP:dfed A:00 B:ff C:b2 D:01 E:ff F:00 H:d3 L:2f Cy:71340 FA9B:14 INC D SP:dfed A:00 B:ff C:b2 D:01 E:ff F:00 H:d3 L:2f Cy:71344 FA9C:14 INC D SP:dfed A:00 B:ff C:b2 D:02 E:ff F:00 H:d3 L:2f Cy:71348 FA9D:2D DEC L SP:dfed A:00 B:ff C:b2 D:03 E:ff F:00 H:d3 L:2f Cy:71352 FA9E:34 INC (HL) SP:dfed A:00 B:ff C:b2 D:03 E:ff F:40 H:d3 L:2e Cy:71356 FA9F:2D DEC L SP:dfed A:00 B:ff C:b2 D:03 E:ff F:00 H:d3 L:2e Cy:71368 FAA0:0A LD A,(BC) SP:dfed A:00 B:ff C:b2 D:03 E:ff F:40 H:d3 L:2d Cy:71372 FAA1:05 DEC B SP:dfed A:00 B:ff C:b2 D:03 E:ff F:40 H:d3 L:2d Cy:71380 FAA2:2E 5E LD L,#5Eh SP:dfed A:00 B:fe C:b2 D:03 E:ff F:40 H:d3 L:2d Cy:71384 FAA4:00 NOP SP:dfed A:00 B:fe C:b2 D:03 E:ff F:40 H:d3 L:5e Cy:71392 FAA5:15 DEC D SP:dfed A:00 B:fe C:b2 D:03 E:ff F:40 H:d3 L:5e Cy:71396 FAA6:BB CP E SP:dfed A:00 B:fe C:b2 D:02 E:ff F:40 H:d3 L:5e Cy:71400 FAA7:05 DEC B SP:dfed A:00 B:fe C:b2 D:02 E:ff F:50 H:d3 L:5e Cy:71404 FAA8:20 05 JR NZ,FAAFh SP:dfed A:00 B:fd C:b2 D:02 E:ff F:50 H:d3 L:5e Cy:71408 FAAF:04 INC B SP:dfed A:00 B:fd C:b2 D:02 E:ff F:50 H:d3 L:5e Cy:71420 FAB0:36 76 LD (HL),#76h SP:dfed A:00 B:fe C:b2 D:02 E:ff F:10 H:d3 L:5e Cy:71424 FAB2:C9 RET SP:dfed A:00 B:fe C:b2 D:02 E:ff F:10 H:d3 L:5e Cy:71436
The route
Intro
The Trainer ID is manipulated to be 0x2E5E, a requirement for the Transform glitch setup. It needed 31 total frames of delay to achieve, which is the shortest delay possible for this ID.
The player is named "BD♀(pk)RT", which is also part of the setup.
This will cost some seconds over the course of the run, as each displayed letter delays the game by one frame, making shorter names faster.
The rival's name is set to default, renaming it would take longer than the time saved by a shorter name.
Pallet Town
I pick Charmander and manipulate its DVs to be exactly 7 Attack, 6 Defense, 12 Speed and 9 Special; another part of the setup.
As a result, Charmander's stats are not as high as they could be, and the trainer fights will therefore take longer compared to the published run.
Also, when giving Oak the parcel, it is acutally faster to stand to the left of him instead of the front when talking to him.
While this results in 3 additional steps, it makes Gary's walking animation 2 steps shorter, and since NPCs move only half as fast as you, it saves 15 frames.
Even the developers hadn't thought of this it seems, as all the NPC rotations in that cutscene assume that you are standing in front of Oak.
Pewter City
I buy 1 escape rope and 2 Pokéballs at the mart. The Pokéballs will be used to catch Abra and Mew.
Also, Brock skip glitch is performed.
Mt. Moon
I visit the Pokécenter to set the teleport location and use the escape rope to initiate Trainer-Fly and skip all the trainers in the third floor.
A hidden Ether is picked up that will be used at the end of the run.
Cerulean City
I visit the Pokécenter again to set the teleport location and proceed by clearing the Nugget Bridge.
Route 24
I catch Abra and immediately trigger the second and last Trainer-Fly.
Route 25
The Hiker is fought to set up for the arbitrary encounter glitch.
Now, a whole lot of encounters are used to finish the setup of the Transform glitch:
A Lvl 12 Bellsprout is manipulated to have a Special DV of 0 and therefore a Special stat of 21, the number required to encounter Mew.
It is killed to increase the Special EV of Charmeleon by 70 (This value is the reason Oddish doesn't work, as it has 75 base special).
Mew is manipulated to have an Attack DV of 15 to make the upcoming fights faster, and is caught using the last Pokéball.
Mew is switched to the front of the team, and is used to kill the Lvl 14 Bellsprout encounter.
Next up is a Lvl 9 Metapod, which is killed using all three Pokémons to split up its EVs and give Charmeleon exactly 8 Special EV, which brings its lower byte to 0x36, the exact value needed as part of the setup.
The last encounter is a Lvl 12 Bellsprout, which is manipulated to have bad defensive stats and is killed by Mew to reach level 10 where it learns Transform.
Having finished the setup, Abra is used to teleport back to Cerulean City.
Note that the so-called "3 Step Rule" is used in this game and requires you to walk at least 3 steps between two consecutive encounters.
Cerulean City
Charmeleon is stored in the box as the last setup step, and then we are heading out to route 4.
Route 4
A wild Rattata is used to perform the Transform glitch.
In order to make the glitch move usable, the Ether from Mt. Moon is used on it to restore its PP.
After successfully using the glitch move in another encounter, I end the battle by fleeing and due to the successful setup, the ending cutscene starts.
I need to wait 3 seconds before actually using the move to progress the in-game timer enough in order to successfully execute the code.
turska: Judging.
turska: Movie file replaced with an improvement by the author. The new movie is 902 frames faster.
turska: A massive improvement to a run that was already insane. Accepting for publication as an improvement to the published movie.
Spikestuff: (jumps out of bed) Mine.... Sorry for the delay I had to struggle with school... focusing on the final dumps now.