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.
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: 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.