Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - echinodermata

Pages: [1]
1
Completed Projects/Dexes / GlitchDex revisited: learned moves/evolutions
« on: February 22, 2013, 01:34:03 am »
WELL it's been a long time since I've been here.

I don't know much about what's happened since then, if anything, but I do know one thing, which is that the data which make up the GlitchDex are still the same old data collected (painstakingly) years ago.

This is really a shame, and I feel like it's my fault, because just about 3 and a half years ago I posted exactly (to the best of my knowledge) how to get the data for learned moves and evolutions of RBY glitch (and nonglitch) pokemon out of the rom itself. This, if done right, should be more accurate and comprehensive than data collected by hand. Despite doing this reverse engineering, though, I never actually implemented the process I described, at least not any more than what I could do manually. But obviously only an automated program could really read through all that data and put it in readable form.

I'm attaching files which should list all the learned moves and evolutions of all pokemon, based on my roms of blue and yellow.

Some notes:
- There is a small but respectable discrepancy in the learned moves data based on my output, as compared to the data in the GlitchDex. As far as I know the GlitchDex data were collected experimentally and so some moves are missing: for example a pokemon won't be asked to learn Tackle if it already knows Tackle. This accounts for many of the discrepancies. Other discrepancies are present. Hey YOU - look for a discrepancy and try it out experimentally in the real game. TEST IT. Experimental evidence always trumps the model.

- Starting moves are not listed in my table. Learned moves and evolutions are stored separately from a pokemon's starting moves and other data. That other data is already well-understood anyway.

- Yes, glitch pokemon have "stone" evolutions too. I only ever tested one glitch "stone" evolution - in my Pokemon Blue rom with glitch pokemon hex:CF, which evolves into Gengar at or above level 6 using Moon Stone. However, using the moon stone item didn't work, for other reasons I'm sure. The evolve without a stone glitch did. This is probably true for all glitch evolutions which are supposed to use evolution items. Obviously if the list says a glitch pokemon evolves "by item TM05", using TM05 in-game is not actually going to work. You need to use the pokemon with the corresponding hex in the evolve without a stone glitch.

- I have never tested any of the trade evolutions for glitch pokemon in my list - there is a fair chance they don't work, but you never know. TEST IT.

- The data for glitch pokemon could potentially be different between Red and Blue in some subtle ways (!): they're read from areas of the rom that this data isn't supposed to be read from, and so it could contain version-specific data. I'll try to look into it soon, though no guarantees.

- There may be other ways in which the data I generated does not accurately reflect reality. If I haven't mentioned it enough, please, if you're still doing this stuff, test and see if the data are correct.

Happy exploring.
2
Approved Submissions / This is it. Glitch Evolutions in R/B/Y.
« on: July 13, 2009, 03:44:57 pm »
In this thread I present primarily a theory on learned moves and evolutions in R/B/Y. The main application of the method I detail is to find "stone" and trade evolutions for glitch Pokemon, as we have all been suspecting exist for a long time. To actually apply the method a HEX editor and ROM are required. I have personally investigated only on a Blue version ROM, but it is reasonable to conclude that the results can be generalized to Red and Yellow.

Summaries are in blue, for the skimmers among you.

------------------------------

Part 1 is not new information:

1. Evolutions and learned moves for all Pokemon are stored together in a database separate from the main Pokemon database (usually referred to as simply the Pokemon Database). For nonglitch Pokemon this database begins at offset 3B1D8 and ends at 3B9EB, and goes in HEX order, not Dex order.

The format of the learned moves and evolutions database is illustrated by this example, which I have copied from Okk:

Quote
Weepinbell:
00  02 2F 01 BE  00  0D 23  0F 4D  12 4F  17 4E  1D 33  26 4B  31 15
Victreebel:
00  00  0D 23  0F 4D  12 4F

For those who don't know how to read this:
Weepinbell evolves into Victreebel via leaf stone at level 1 or above (00 02 2F 01 BE)
Weepinbell learns: L13 - Wrap, L15 - Poisonpowder, L18 - Sleep Powder, L23 - Stun Spore, L29 - Acid, L38 - Razor Leaf, L49 - Slam
Victreebel learns: L13 - Wrap, L15 - Poisonpowder, L18 - Sleep Powder

Now the above description is not completely accurate, and is not the whole story. One detail that we need to be aware of is that the leading 00 that marks the beginning of each entry here is correctly interpreted as an ending 00 that marks the end. (This can be verified by noticing that Rhydon's entry, the very first, does not have the extra leading 00.)

But even more important, while seemingly trivial, is this: The entries are of variable length. This suggests that there exists a pointer / reference / lookup table that explicity gives the initial offset of each entry. Where might such a table be? Why, directly preceding the database itself, of course! (Ctrl+F doesn't work here, sorry.) A casual glance picks out suspicious patterns:

Code: [Select]
This sample taken from 3B05C (the beginning of the reference table) to 3B07F.
                                    D8 71 E6 71
F2 71 03 72 15 72 24 72 33 72 3B 72 4B 72 5E 72
62 72 6E 72 80 72 91 72 97 72 A8 72 B0 72 BF 72

Comparing with the initial offsets for the first few entries in the database (and here is where "ending 00" instead of "leading 00" counts - otherwise everything would be off by 1):

Pokemon     -  Initial Offset - Reference Table Entry
Rhydon        - 3B1D8          - D8 71
Kangaskhan - 3B1E6           - E6 71
Nidoran M    - 3B1F2           - F2 71
Clefairy        - 3B203          - 03 72

The conclusion is clear: The reference table entries, when interpreted with least significant byte first, give the initial offsets of the database entries, except that a correction of 34000 (hex) is implied.

------------------------------

To extend our results to glitch Pokemon, we search the ROM for data from the Melchiors. Ctrl+F is indispensible. We will use "A" (RB:[BF]) as our example and the subject of our search. Simply pick a few learned moves from "A"'s GlitchDex entry, convert them to the required form, and Ctrl+F away:

E6 04 - 01EDC, 4A015, 6D94E, 6DA40. - lvl 230 learn comet punch
F0 CC - 01E0E, 3C527, 3C5E3, 3C703, 3C786. - lvl 240 learn TM04
F9 F0 - 01D6E, 01D7F, 01D8D, 01DF3, 01E14, 01E70, 66947, 69008. - lvl 249 learn TM40
FE 15 - 01567, 01637, 01C45, 01ECA, 0C493, 0C629, 2078D, 30339, 4C8AC, 4CD9E. - lvl 254 learn Slam

Our search indicates that 01E00 - 01F00 is the approximate range we're dealing with.

Now let's go back to that reference table. The reference table entry for "A" (by extrapolation) is 00 1E. That seems to go along with the results of our search... except that the correction of 34000 is neglected. Indeed, searches on some other glitch Pokemon also suggest that the "correction" does not apply to glitch Pokemon.

This all summarizes to point number 2:

2. The initial offset for each Pokemon's evolutions and learned moves data entry is given explicitly by a pointer table beginning at offset 3B05C. The pointers given by the table only give 2 bytes per Pokemon (with LSB first); for nonglitch Pokemon, a correction of 34000 is implied, but for glitch Pokemon, there is no such "correction".

------------------------------

For part #3, I'm not going to offer the justifying evidence here. Take notice especially of the "reading by 3's" principle:

3. The evolutions list is divided into entries consisting of 3 bytes each, except for those of "stone" evolutions, which have 4 bytes instead. The first byte in each entry indicates the evolution method, 01 meaning by level up, 02 meaning by evolution item (stone), 03 meaning by trade, 00 meaning the end of the evolutions list, and else meaning that the whole triplet is to be ignored. The second byte (third for "stone" evolutions) is the minimum level required for evolution and the third (fourth for "stone" evolutions) is the Pokemon evolved into. The second byte for "stone" evolutions indicates which item is required for evolution.

------------------------------

Let's go back to our example. Here are the data starting at 01E00:
18 9C F0  CB A7 C8  F8 00 7C E0 BF 7D E0 C0 F0 CC

Now notice, if you haven't already, that the evolutions list is NOT terminated by a 00 if the 00 is not the leading byte of a "triplet", as is the case in this example. In fact, the actual "terminating 00" (which is the term I will use) for the evolutions list for "A" is at 01E63, some while later. Examination of all this data reveals that "A" does not have any evolutions, whether by level up, stone, or trade.

Yet "A" learns TM04 at level 240, which from our search above must be at offset 01E0E; that's before the evolutions list terminates.

One possible explanation, which you may be suspecting yourself, is that the "reading by 3's" principle is not always true. Perhaps. But there's a simpler explanation though: While the evolutions list does not necessarily end at the first 00, the learned moves list does begin there.

To give some evidence, I will list the entireity of "A"'s learned moves data, all the way up to the terminating 00 for learned moves at 01F1A. Starred items match with existing data from Melchior. This list accounts for all the learned moves in existing GlitchDex data (except possibly one, see the entry with a +). This list also predicts that "A" learns TM40 at lvl 111, which is not confirmed in existing GlitchDex data. The list was done entirely by hand.
[spoiler]01E08 - 7C E0 - lvl 124 learn TM24               *
        BF 7D - lvl 191 learn Bone Club          *
        E0 C0 - lvl 224 learn "Superglitch" [C0] *
        F0 CC - lvl 240 learn TM04               *

01E10 - 6F F0 - lvl 111 learn TM40               (Not confirmed)
        CD 67 - lvl 205 learn Screech            *
        F9 F0 - lvl 249 learn TM40               *
        CE 6F - lvl 206 learn Defense Curl       *
01E18 - F0 CF - lvl 240 learn TM07               (can't learn 2 moves at the same level)
        67 F0 - lvl 103 learn TM40               *
        CB 47 - lvl 203 learn Absorb             *
        AF E0 - lvl 175 learn TM24               *

01E20 - CB D1 - lvl 203 learn TM09               (can't learn 2 moves at the same level)
        73 2C - lvl 115 learn Bite               *
        73 2C -        IDENTICAL TO 01E22
        72 2C - lvl 114 learn Bite               *
01E28 - 72 2C -        IDENTICAL TO 01E26
        D1 73 - lvl 209 learn Reflect            *
        2C 73 - lvl 44  learn Reflect            *
        2C 72 - lvl 44  learn Haze               (can't learn 2 moves at the same level)

01E30 - 2C 72 -        IDENTICAL TO 01E2E
        2C D1 - lvl 44  learn TM09               (can't learn 2 moves at the same level)
        73 2C -        IDENTICAL TO 01E22
        73 2C -        IDENTICAL TO 01E22
01E38 - 72 2C -        IDENTICAL TO 01E26
        72 2C -        IDENTICAL TO 01E26
        D1 73 -        IDENTICAL TO 01E2A
        2C 73 -        IDENTICAL TO 01E2C

01E40 - 2C 72 -        IDENTICAL TO 01E2E
        2C 72 -        IDENTICAL TO 01E2E
        23 05 - lvl 35  learn Mega Punch         *
        20 D9 - lvl 32  learn TM17               *
01E48 - 7D E0 - lvl 125 learn TM24               *
        CE 7C - lvl 206 learn Sludge             (can't learn 2 moves at the same level)
        E0 CF - lvl 224 learn TM07               (can't learn 2 moves at the same level)
        F8 00 - lvl 248 learn "Cooltrainer move" +Confirmed if "Cooltrainer move" counts as a "Superglitch"

01E50 - 7D E0 -        IDENTICAL TO 01E48
        CC 7C - lvl 204 learn Sludge             *
        E0 CD - lvl 224 learn TM05               (can't learn 2 moves at the same level)
        F0 BF - lvl 240 learn "Superglitch" [BF] (can't learn 2 moves at the same level)
01E58 - 67 F0 -        IDENTICAL TO 01E1A
        C0 6F - lvl 192 learn Defense Curl       *
        F9 C9 - lvl 249 learn TM01               (can't learn 2 moves at the same level)
        F0 C6 - lvl 240 learn HM03               (can't learn 2 moves at the same level)

01E60 - A7 C8 - lvl 167 learn HM05               *
        F8 00 -        IDENTICAL TO 01E4E
        7C E0 -        IDENTICAL TO 01E08
        BF 7D -        IDENTICAL TO 01E0A
01E68 - E0 C0 -        IDENTICAL TO 01E0C
        F0 C7 - lvl 240 learn HM04               (can't learn 2 moves at the same level)
        6F F0 -        IDENTICAL TO 01E10
        C8 67 - lvl 200 learn Screech            *

01E70 - F9 F0 -        IDENTICAL TO 01E14
        C9 6F - lvl 201 learn Defense Curl       *
        F0 CA - lvl 240 learn TM02               (can't learn 2 moves at the same level)
        67 F0 -        IDENTICAL TO 01E1A
01E78 - C6 47 - lvl 198 learn Absorb             *
        AF E0 -        IDENTICAL TO 01E1E
        C6 D1 - lvl 198 learn TM09               (can't learn 2 moves at the same level)
        73 2C -        IDENTICAL TO 01E22

01E80 - 72 2C -        IDENTICAL TO 01E26
        D1 73 -        IDENTICAL TO 01E2A
        2C 72 -        IDENTICAL TO 01E2E
        2C D1 -        IDENTICAL TO 01E32
01E88 - 73 2C -        IDENTICAL TO 01E22
        72 2C -        IDENTICAL TO 01E26
        D1 73 -        IDENTICAL TO 01E2A
        2C 72 -        IDENTICAL TO 01E2E

01E90 - 2C D1 -        IDENTICAL TO 01E32
        73 2C -        IDENTICAL TO 01E22
        72 2C -        IDENTICAL TO 01E26
        D1 73 -        IDENTICAL TO 01E2A
01E98 - 2C 72 -        IDENTICAL TO 01E2E
        2C D1 -        IDENTICAL TO 01E32
        73 2C -        IDENTICAL TO 01E22
        72 2C -        IDENTICAL TO 01E26

01EA0 - D1 73 -        IDENTICAL TO 01E2A
        2C 72 -        IDENTICAL TO 01E2E
        23 05 -        IDENTICAL TO 01E44
        20 D5 - lvl 32  learn TM13               (can't learn 2 moves at the same level)
01EA8 - 7D E0 -        IDENTICAL TO 01E48
        C9 7C - lvl 201 learn Sludge             (can't learn 2 moves at the same level)
        E0 CA - lvl 224 learn TM02               (can't learn 2 moves at the same level)
        F8 00 -        IDENTICAL TO 01E4E

01EB0 - 7D E0 -        IDENTICAL TO 01E48
        C7 7C - lvl 199 learn Sludge             *
        E0 C8 - lvl 224 learn HM05               (can't learn 2 moves at the same level)
        F0 BF -        IDENTICAL TO 01E56
01EB8 - 67 F0 -        IDENTICAL TO 01E1A
        C0 6F -        IDENTICAL TO 01E5A
        F9 C9 -        IDENTICAL TO 01E5C
        F0 D7 - lvl 240 learn TM15               (can't learn 2 moves at the same level)

01EC0 - A7 C8 -        IDENTICAL TO 01E60
        F0 D8 - lvl 240 learn TM16               (can't learn 2 moves at the same level)
        3C E0 - lvl 60  learn TM24               *
        D8 FE - lvl 216 learn TM54               *
01EC8 - 14 D8 - lvl 20  learn TM16               *
        FE 15 - lvl 254 learn Slam               *
        28 28 - lvl 40  learn Poison Sting       *
        21 40 - lvl 33  learn Peck               *

01ED0 - 91 0E - lvl 145 learn Swords Dance       *
        10 FA - lvl 16  learn TM50               *
        85 D0 - lvl 133 learn TM08               *
        3C E6 - lvl 60  learn TM30               (can't learn 2 moves at the same level)
01ED8 - 07 EA - lvl 7   learn TM34               *
        85 D0 -        IDENTICAL TO 01ED4
        E6 04 - lvl 230 learn Comet Punch        *
        20 08 - lvl 32  learn Ice Punch          (can't learn 2 moves at the same level)

01EE0 - 7E 0F - lvl 126 learn Cut                *
        22 0D - lvl 34  learn Razor Wind         *
        20 FA - lvl 32  learn TM50               (can't learn 2 moves at the same level)
        18 06 - lvl 24  learn Pay Day            *
01EE8 - 7E 07 - lvl 126 learn Fire Punch         (can't learn 2 moves at the same level)
        22 0D -        IDENTICAL TO 01EE2
        20 FA -        IDENTICAL TO 01EE4
        F0 D7 -        IDENTICAL TO 01EBE

01EF0 - 0F D0 - lvl 15  learn TM08               *
        AF E0 -        IDENTICAL TO 01E1E
        D8 C9 - lvl 216 learn TM01               (can't learn 2 moves at the same level)
        AF E0 -        IDENTICAL TO 01E1E
01EF8 - D8 FA - lvl 216 learn TM50               (can't learn 2 moves at the same level)
        85 D0 -        IDENTICAL TO 01ED4
        E6 03 - lvl 230 learn Doubleslap         (can't learn 2 moves at the same level)
        FE 02 - lvl 254 learn Karate Chop        (can't learn 2 moves at the same level)

01F00 - 21 19 - lvl 33  learn Mega Kick          (can't learn 2 moves at the same level)
        1F 38 - lvl 31  learn Hydro Pump         *
        08 21 - lvl 8   learn Tackle             *
        29 1F - lvl 41  learn Fury Attack        *
01F08 - 28 03 - lvl 40  learn Doubleslap         (can't learn 2 moves at the same level)
        21 39 - lvl 33  learn Surf               (can't learn 2 moves at the same level)
        1F 11 - lvl 31  learn Wing Attack        (can't learn 2 moves at the same level)
        30 90 - lvl 48  learn Transform          *

01F10 - 0E 10 - lvl 14  learn Gust               *
        2A 12 - lvl 42  learn Whirlwind          *
        13 0D - lvl 19  learn Razor Wind         *
        20 FA -        IDENTICAL TO 01EE4
01F18 - C9 81 - lvl 201 learn Swift              (can't learn 2 moves at the same level)
        00    - terminating 00[/spoiler]
I would say that's an excellent match.

The summary that doesn't shorten anything:
4. Despite the fact that the evolution list does NOT necessarily end when it reaches a 00 (since it need not be the first byte in a triplet), the level-up moves list DOES begin immediately after the first 00. In the level-up moves list, each entry is 2 bytes long; the first byte indicates the level at which the move is learned, and the second byte indicates which move is learned. A 00 in the first byte marks the end of the list. The restriction is that two moves cannot be learned at the same level; if the level up moves table contains more than one move to be learned at the same level, only the first one that occurs in the list can be learned. The same move can be learned multiple times; however, keep in mind that if a Pokemon already knows a certain move and it reaches a level at which it is scheduled to learn that same move, the option will not be given to learn that move again.

And that's all there is to it!

Summary for "A":
Pointer Table Entry: 00 1E (pointer table entry at offset 3B1D8)
Initial Offset for Evolutions:          01E00
Terminating 00 for Evolutions:       01E63
Initial 00 for Learned Moves:         01E07
Terminating 00 for Learned Moves: 01F1A

EVOLUTIONS
None

LEARNED MOVES
See above.


------------------------------

The point of learning all this is, by parsing through the evolutions list for each glitch Pokemon, previously undiscovered "stone" and trade evolutions can be found.

As a demonstration of this, here is a glitch Pokemon stone evolution discovered using the above methods. The example shown here is not one that I would consider a "typical example"; it manages to highlight some other curious stuff as well.

We notice that "Japanese symbol" (RB:[C1]), "O PkMn4 X" (RB:[CF]), and "|| g" (RB:[EE]) all evolve into Spearow at level 9. This leads us to suspect that their database entries have the same location, or nearly the same. And indeed, their respective reference table entries are 27 28, 0E 28, and 0E 28. But we immediately notice a problem: 27 minus 0E is not a multiple of 3! They are misaligned. Fortunately:

02860 - AF D0 7A EA B0 D0 C9 00 08 04 0C 02 0A 06 0E 01
02870 - 09 05

Explanation: There are no evolutions for either the 0280E start or the 02827 start, up to the 02860's. Now, put into triplets, the "Japanese symbol" evolutions data reads

                    AFD07A EAB0D0 C90008 040C02 0A060E 010905

and registers the known Spearow evolution. However, the "O PkMn4 X" and "|| g" evolutions data reads

                    AFD0 7AEAB0 D0C900 08040C 020A060E 010905;

the triplets are paired differently due to the misaligned start. We discover that there is a stone evolution for "O PkMn4 X" and "|| g" into Gengar at or above level 6 using Moon Stone .

But this is not just a regular coincidence here: Not only is there a "stone" evolution for them, the item required for evolution is indeed an actual stone here.

Curiously, when I tested this for "O PkMn4 X", using the Moon Stone did not work. Fortunately, though, there's also the Evolve without a stone glitch, and using that method it did work. Don't ask me why the evolve without a stone glitch is required and actual stones don't work.



(Comments on the screenshots:
The Exxegutor was there for evolve without a stone.
Sorry I overwrote the original name; it was accidental.
Yes I could have done it one level earlier but whatever.)

------------------------------

In conclusion: I am confident that we will be able to find a great many "stone" and trade evolutions for the glitches. Naively considering "probability", "stone" and trade evolutions should account for 2/3 of all the glitch evolutions out there!

Incidentally, as more glitch "stone" evolutions are discovered, the evolve with a stone glitch will certainly elevate to "Major Glitch" status.

Edit: Took the data for "A" out of the code box because it was really damn small. Still in a spoiler. The format is crud now but whatever.
3
Pokémon Submissions / Yellow Glitch Attacks
« on: July 11, 2009, 11:52:44 pm »
What you say?  :o "Submit a Glitch" is closed? In my defense,

1. In this thread I am submitting a glitch.
2. This information is not presentable on the main site / wiki in its current form. That job I am delegating to you.


Also, I hope to advocate for the continued existence of "Submit a Glitch" in concurrence to the wiki by means of this submission and another submission which I hope to post in quick succession to this one (quick, as in within a few days).


Now I had thought y'all were able to get the data for the Yellow glitch attacks. After all you already have the Red/Blue glitch attacks to full precision. But wait. Oh yeah, Okk (who is still alive, mind you) got those, huh. Well a week ago I (finally) got a Hex editor and can now do this data mining research for myself.

For review, here's all the R/B glitch attacks. The initial offset is 383DE (also the beginning of the Pokemon Database, as is already known). Format is Animation, Effect, Power, Type, Hit rate (just divide by 256), PP:
Code: [Select]
01 2D 31 31 2D 41 - Superglitch [A6]
16 03 2D 40 55 00
40 E5 40 21 2D 00
00 03 A4 03 38 C0
03 08 06 00 02 3C
3E 3F 3C 50 16 03
2D 8D 66 2B 50 57
51 21 2D 49 00 03
A4 03 38 C0 03 08
06 00 03 50 52 53
50 64 16 03 2D D0 - Super Glitch [B0]
77 62 41 97 43 21
2D 49 16 03 A4 43
38 C0 03 08 06 00
04 27 34 2B 41 32
14 14 2D 41 55 5C
5C 5C 5D 0A 2D 00
00 03 B5 03 4F C8
E3 08 26 00 05 3A
40 3A 50 41 14 14
2D 8E 66 0C 5F 48
60 0A 2D 34 00 03
B5 03 4F C8 E3 08
26 00 06 4E 54 4E
64 55 14 02 2D D1
77 86 62 95 64 0A
2D 34 2B 03 B5 43 - Superglitch [C0]
4F CE E3 08 26 00
07 2C 30 41 2B 32
15 15 2D 42 55 B8
5D 8F 5E 21 27 00
00 03 B1 3F 0F C8
83 08 32 00 08 3B
3F 50 3A 41 15 15
2D 8F 66 B1 60 F1
61 21 27 91 00 03
B1 3F 0F C8 83 08
32 00 09 4F 53 64
4E 55 15 15 2D D2
77 37 76 51 78 21
27 91 37 03 B1 7F
0F CE 83 08 32 00
0A 2D 1E 23 2D 14 - TM08 [D0]
07 07 FF 35 55 49
4A E1 4A 21 51 00
00 00 00 00 00 00
00 00 00 00 0B 32
14 37 1E 19 07 07
78 48 55 3A 4B C8
4B 6A 00 00 00 00
00 00 00 00 00 00
00 00 0C 3C 2D 32
46 50 07 02 2D A0
77 37 4C 0E 4E 5D
00 00 00 00 2A 43
38 F0 43 28 02 00
0D 28 23 1E 32 14
07 03 FF 34 55 7D
75 24 76 28 51 00 - TM24 [E0]
00 00 00 00 00 00
00 00 00 00 0E 2D
19 32 23 19 07 03
78 47 55 77 76 36
77 6A 00 00 00 00
00 00 00 00 00 00
00 00 0F 41 50 28
4B 2D 07 03 2D 9F
77 88 77 80 79 1F
00 00 00 00 24 43
18 C0 C3 08 06 00
10 28 2D 28 38 23
00 02 FF 37 55 A7
45 5B 46 10 00 00
00 03 2A 03 08 C0
43 0C 0A 00 11 3F - TM40 [F0]
3C 37 47 32 00 02
78 71 66 0A 78 5B
79 10 1C 00 00 03
2A 03 08 C0 43 0C
0A 00 12 53 50 4B
5B 46 00 02 2D AC
77 C2 79 79 7B 10
1C 62 00 03 2A 43
08 C0 43 0C 0A 00
13 1E 38 23 48 19
00 00 FF 39 55 6A
4F 41 50 21 27 00
00 00 A0 2F 88 C9
C2 08 02 00 14 37
51 3C 61 32 00 00

Notice that the Superglitches are included. THIS DOES NOT ACCOUNT FOR THE FULL VOLATILITY OF SUPERGLITCHES, E.G. FREEZING WHEN SELECTING "FIGHT". Consider including those data in the AttackDex anyway.

Now, R/B glitch attacks and Yellow glitch attacks are mostly alike. So go to the aforementioned offset in your Yellow ROM and verify that the offset is indeed the same for Yellow. Then we wish to find which entries are different. An easy way to do this is to compute the difference RB - Y, which you can do with an online Hex to dec converter and a spreadsheet; the nonzero entries of the difference correspond to the entries we are interested in. We can bold all the entries that are different than their corresponding entries in R/B:

01 2D 31 31 2D 41
16 03 2D 40 55 00
40 E4 40 21 2D 00 - Superglitch [A8] - different effect
00 03 A4 03 38 C0
03 08 06 00 02 3C
3E 3F 3C 50 16 03
2D 8D 66 E9 4F 73 - Superglitch [AC] - different type, hr 79/256, PP 115
51 21 2D 49 00 03
A4 03 38 C0 03 08
06 00 03 50 52 53
50 64 16 03 2D D0
77 61 41 81 43 21 - Superglitch [B1] - different effect and type
2D 49 16 03 A4 43
38 C0 03 08 06 00
04 27 34 2B 41 32
14 14 2D 41 55 F0 - Superglitch [B5] - PP 240
5D FC 5E 0A 2D 00 - Superglitch [B6] - different animation and effect, power 94
00 03 B5 03 4F C8
E3 08 26 00 05 3A
40 3A 50 41 14 14
2D 8E 66 C8 60 25 - Superglitch [BA] - different type, hr 96/256, PP 37
62 0A 2D 34 00 03 - Superglitch [BB] - different animation
B5 03 4F C8 E3 08
26 00 06 4E 54 4E
64 55 14 02 2D D1
77 A9 64 00 67 0A - Superglitch [BF] - different effect and type (Normal), power 100, hr 103/256
2D 34 2B 03 B5 43
4F CE E3 08 2E 00 - Superglitch [C1] - hr 46/256
07 2C 30 41 2B 32
15 15 2D 42 55 58 - Superglitch [C3] - PP 88
5F 4B 60 21 27 00 - HM01 [C4] - different animation and effect, power 96
00 03 B1 3F 0F C8
83 08 32 00 08 3B
3F 50 3A 41 15 15
2D 8F 66 8E 62 14 - HM05 [C8] - different type, hr 98/256, power 20
64 21 27 91 00 03 - TM01 [C9] - different animation
B1 3F 0F C8 83 08
32 00 09 4F 53 64
4E 55 15 15 2D D2
77 FA 75 0B 78 21 - TM05 [CD] - different effect and type, power 117
27 91 37 03 B1 7F
0F CE 83 08 32 00
0A 2D 1E 23 2D 14
07 07 FF 35 55 05 - TM09 [D1] - PP 05
4B E8 4B 21 51 00 - TM10 [D2] - different effect and animation, power 75
00 00 00 00 00 00
00 00 00 00 0B 32
14 37 1E 19 07 07
78 48 55 41 4C EE - TM14 [D6] - different type, hr 76/256, PP 238
4C 6A 00 00 00 00 - TM15 [D7] - different animation
00 00 00 00 00 00
00 00 0C 3C 2D 32
46 50 07 02 2D A0
77 5D 4D 34 4F 5D - TM19 [DB] - different effect and type, power 77, PP 93
00 00 00 00 2A 43
38 F0 43 28 42 00 - TM21 [DD] - hr 66/256
0D 28 23 1E 32 14
07 03 FF 34 55 02 - TM23 [DF] - PP 2
77 B4 77 28 51 00 - TM24 [E0] - different animation and effect, power 119
00 00 00 00 00 00
00 00 00 00 0E 2D
19 32 23 19 07 03
78 47 55 07 78 C9 - TM28 [E4] - different type (Bug), hr 120/256, PP 201
78 6A 00 00 00 00 - TM29 [E5] - different animation
00 00 00 00 00 00
00 00 0F 41 50 28
4B 2D 07 03 2D 9F
77 1B 79 2A 7B 1F - TM33 [E9] - different effect and type, power 121, hr 123/256
00 00 00 00 24 43
18 C0 C3 08 06 00
10 28 2D 28 38 23
00 02 FF 37 55 F5 - TM37 [ED] - PP 245
45 E6 46 10 00 00 - TM38 [EE] - different effect
00 03 2A 03 08 C0
43 0C 0A 00 11 3F
3C 37 47 32 00 02
78 71 66 C6 76 2B - TM42 [F2] - different type, hr 118/256, PP 43
78 10 1C 00 00 03 - TM43 [F3] - different animation
2A 03 08 C0 43 0C
0A 00 12 53 50 4B
5B 46 00 02 2D AC
77 92 78 D1 7A 10 - TM47 [F7] - different effect and type, power 120, hr 122/256
1C 62 00 03 2A 43
08 C0 43 0C 0A 00
13 1E 38 23 48 19
00 00 FF 39 55 03 - TM51 [FB] - PP 3
50 F8 50 21 27 00 - TM52 [FC] - different animation and effect
00 00 A0 2F 88 C9
C2 08 02 00 14 37
51 3C 61 32 00 00

A couple notes:
For animation, effect, and type, I have only noted "different" here, except for types that correspond to nonglitch types. To make the above data complete, I would like a table of all the nonglitch animations and effects in the game and their HEX values; I plan on working on that soon unless one of you volunteers. If for some reason such a table is infeasible then empirical testing works too.

Glitch animations and glitch effects that share the same HEX value between R/B and Yellow may not actually share the same animation/effect.

No part of the above data for the Yellow glitch attacks have been empirically tested by me. For starters, you can look at http://forums.glitchcity.info/index.php/topic,1361.msg18136.html#msg18136, which at my cursory glance appears to match rather closely with regards to which attacks have different animations/effects.


Edit 1: Accidentally used i.e. where it was supposed to be e.g.
4
Pokémon Submissions / Super Glitch Moves and the Pokemon Database
« on: January 30, 2009, 07:20:57 pm »
So, how about that Super Glitch Dex we don't have? No, I'm not talking about all the assorted crap that happens when you view glitch, learn the glitch, replace the glitch, touch the glitch, or any other stuff that make superglitches super. I'm afraid those things tend to be inconsistent, highly variable, and quite volatile. Those effects probably have more to do with the ridiculous names anyway, and from people being unable to tell which of the many varieties of super glitches they happen to be dealing with at any one time.

No, I'm talking about just the moves themselves. How they would function in battle if they weren't all super. That's it.

So don't draw any false conclusions. Here's what I've got so far.


AN EF PW TP HR PP (animation, effect, power, type, hit rate, PP)

-- -- -- -- -- --    Move and Hex (description of effect, taken from okk)
01 2D 31 31 2D 41  Move A6 (1/8 damage to user to on miss)
16 03 2D 40 ?? ??  Move A7 (User is healed for 1/2 damage dealt)
?? ?? ?? 21 2D 00  Move A8
00 03 A4 03 38 C0  Move A9 (User is healed for 1/2 damage dealt)
03 08 06 00 02 3C  Move AA (Dream Eater)
3E 3F 3C 50 16 03  Move AB [not listed by okk]
2D 8D ?? ?? ?? ??  Move AC [not listed by okk]
?? 21 2D 49 00 03  Move AD (x to poison)
A4 03 38 C0 03 08  Move AE (User is healed for 1/2 damage dealt)
06 00 03 50 52 53  Move AF (normal damage)
50 64 16 03 2D D0  Move B0 [not listed by okk]
?? ?? ?? ?? ?? 21  Move B1
2D 49 16 03 A4 43  Move B2 [not listed by okk]
38 C0 03 08 06 00  Move B3 [okk writes ?--"] (same as TM35, which "gives your pokemon armor")
04 27 34 2B 41 32  Move B4 [not listed by okk]
14 14 2D 41 ?? ??  Move B5 [not listed by okk]
?? ?? ?? 0A 2D 00  Move B6
00 03 B5 03 4F C8  Move B7 (User is healed for 1/2 damage dealt)
E3 08 26 00 05 3A  Move B8 (Dream Eater)
40 3A 50 41 14 14  Move B9 [not listed by okk]
2D 8E ?? ?? ?? ??  Move BA [not listed by okk]
?? 0A 2D 34 00 03  Move BB [not listed by okk]
B5 03 4F C8 E3 08  Move BC (User is healed for 1/2 damage dealt)
26 00 06 4E 54 4E  Move BD (normal damage)
64 55 14 02 2D D1  Move BE (no effect)
?? ?? ?? ?? ?? 0A  Move BF
2D 34 2B 03 B5 43  Move C0 [not listed by okk]
4F CE E3 08 2E 00  Move C1 [okk writes ?--"] (same as TM07, which "does damage and freezes the game")
07 2C 30 41 2B 32  Move C2 [not listed by okk]
15 15 2D 42 ?? ??  Move C3 [not listed by okk]


The question marks mean that I don't know, not that the data are variable. Only twenty of the thirty have no unknowns in them still.


Wait a second, you ask. How could I not know some of the data, and in fact know exactly what I don't know?

Well, I didn't extract any data, view any memory, or touch any game. So I suppose haven't empirically tested anything. I got this from what okk gave us previously. Heck, everything in this post, it seems, he already knew. But apparently, this does not appear in the forum, nor on the site, so I guess I should reinvent the wheel just in case.

You can read on if you're interested, or if you want to see my reasoning. It might even feel like two submissions in one.



======================================
======================================




The foundation for this post is based on two quotes from okk. The two quotes I will gladly reproduce for you.
The first is by way of Abwayax:
Quote
<@Okk> The glitch move data that I sent you
<@Abwayax> yes?
<@Okk> It's the beginning of the pokemon database.
<@Abwayax> You mean the TM moves?
<@Okk> I mean it's a chunk of the pokemon database... I forgot that I only sent the TM and HM moves..
<@Abwayax> hmm
<@Okk> but if you were to change the first few glitch moves, you would be changing Bulbasaur.
<@Okk> The pokemon database starts immediately after the last valid move.

The second quote, I can't find online anymore, but here it is. Most likely it is by way of Abwayax as well.
Quote
<@Okk> each attack has six bytes, in this order: animation, effect, power, type, hit rate, PP

AN EF PW TP HR PP NAME
-- -- -- -- -- -- ----
Code: [Select]
5D 8F 5E 21 27 00 HM01 --
00 03 B1 3F 0F C8 HM02 (User is healed for 1/2 damage dealt)
83 08 32 00 08 3B HM03 (Dream Eater)
3F 50 3A 41 15 15 HM04 (Skip the next turn)
2D 8F 66 B1 60 F1 HM05 --
61 21 27 91 00 03 TM01 (x to poison)
B1 3F 0F C8 83 08 TM02 ??
32 00 09 4F 53 64 TM03 (normal damage)
4E 55 15 15 2D D2 TM04 (no effect)
77 37 76 51 78 21 TM05 ??
27 91 37 03 B1 7F TM06 --
0F CE 83 08 32 00 TM07 --
0A 2D 1E 23 2D 14 TM08 (1/8 damage to user to on miss)
07 07 FF 35 55 49 TM09 (Enemy's def is half during the attack, user's HP drops to zero)
4A E1 4A 21 51 00 TM10 --
00 00 00 00 00 00 TM11 (normal damage)
00 00 00 00 0B 32 TM12 (normal damage)
14 37 1E 19 07 07 TM13 ??
78 48 55 3A 4B C8 TM14 ??
4B 6A 00 00 00 00 TM15 --

00 00 00 00 00 00 TM16 (normal damage)
00 00 0C 3C 2D 32 TM17 (normal damage)
46 50 07 02 2D A0 TM18 (Skip the next turn)
77 37 4C 0E 4E 5D TM19 ??
00 00 00 00 2A 43 TM20 (normal damage)
38 F0 43 28 02 00 TM21 --
0D 28 23 1E 32 14 TM22 (Opponant loses half of current HP)
07 03 FF 34 55 7D TM23 (User is healed for 1/2 damage dealt)
75 24 76 28 51 00 TM24 (76 to Paralyse)
00 00 00 00 00 00 TM25 (normal damage)
00 00 00 00 0E 2D TM26 (normal damage)
19 32 23 19 07 03 TM27 (User's Attack +2)
78 47 55 77 76 36 TM28 (76 to enemy's special -1)
77 6A 00 00 00 00 TM29 --
00 00 00 00 00 00 TM30 (normal damage)
00 00 0F 41 50 28 TM31 (normal damage)
4B 2D 07 03 2D 9F TM32 (1/8 damage to user to on miss)
77 88 77 80 79 1F TM33 --
00 00 00 00 24 43 TM34 (normal damage)
18 C0 C3 08 06 00 TM35 --

10 28 2D 28 38 23 TM36 (Opponant loses half of current HP)
00 02 FF 37 55 A7 TM37 (76 to poison)
45 5B 46 10 00 00 TM38 --
00 03 2A 03 08 C0 TM39 (User is healed for 1/2 damage dealt)
43 0C 0A 00 11 3F TM40 ??
3C 37 47 32 00 02 TM41 ??
78 71 66 0A 78 5B TM42 --
79 10 1C 00 00 03 TM43 (Pay Day: P2 * user's level)
2A 03 08 C0 43 0C TM44 (User is healed for 1/2 damage dealt)
0A 00 12 53 50 4B TM45 (normal damage)
5B 46 00 02 2D AC TM46 (25 to enemy's speed -1)
77 C2 79 79 7B 10 TM47 --
1C 62 00 03 2A 43 TM48 --
08 C0 43 0C 0A 00 TM49 --
13 1E 38 23 48 19 TM50 ??
00 00 FF 39 55 6A TM51 (normal damage)
4F 41 50 21 27 00 TM52 (defense doubled)
00 00 A0 2F 88 C9 TM53 (normal damage)
C2 08 02 00 14 37 TM54 (Dream Eater)
51 3C 61 32 00 00 TM55 ??



Since, as okk says, the glitch moves correspond the pokemon database entries and vice versa, it was hypothesized that it would be possible to do the following:

> Use the excerpt above by okk to infer the format of a pkmn database entry
> Convert known information about the first few pokemon into the format of a pkmn database entry
> Re-interpret these data as moves, and thus derive the move data of super glitches


-----------------------------------------------------------------------
Use the excerpt above by okk to infer the format of a pkmn database entry
-----------------------------------------------------------------------

I did this by converting the base stats of the first few pokemon into hex, and searching for that text in the above block.
Here's a reprint of the first portion of the above, HM01 to TM05. In it, bolded first is Wartortle's base stats, and bolded second is Blastoise's.

5D 8F 5E 21 27 00
00 03 B1 3F 0F C8
83 08 32 00 08 3B
3F 50 3A 41
15 15
2D 8F 66 B1 60 F1

61 21 27 91 00 03
B1 3F 0F C8 83 08
32 00 09 4F 53 64
4E 55
15 15 2D D2
77 37 76 51 78 21

Then the data around wartortle's base stats were compared and matched to other known information about wartortle, and long story short:

Wartortle
08 ----------------------------The pokedex number. Probably nonessential.
3B 3F 50 3A 41 ----------------Base stats.
15 15 -------------------------Type: Water/Water. Second water isn't displayed of course.
2D ----------------------------Capture rate.
8F ----------------------------Base exp yielded.
66 B1 60 F1 61 ----------------Unknown. See below for a comment. *
21 27 91 00 -------------------Starting moves: tackle, tail whip, bubble, --
03 ----------------------------Growth curve. My reason is that it's a low number, and it's the same for Wartortle and Blastoise.
B1 3F 0F C8 83 08 32 ----------TM + HM learnability. See below for a comment. **
00 ----------------------------Always 00. Probably doesnt matter if it isnt.

*I can't figure out what it is. We know, of course, that evolution and learned moves data are stored elsewhere. I've put these five bytes for Wartortle - Rattata into a table.
Wartortle  66 B1 60 F1 61
Blastoise  77 37 76 51 78
Caterpie   55 49 4A E1 4A
Metapod    55 3A 4B C8 4B
Butterfree 77 37 4C 0E 4E
Weedle     55 7D 75 24 76
Kakuna     55 77 76 36 77
Beedrill   77 88 77 80 79
Pidgey     55 A7 45 5B 46
Pidgeotto  66 0A 78 5B 79
Pidgeot    77 C2 79 79 7B
Rattata    55 6A 4F 41 50
There are certainly noticeable patterns. Can't make heads or tails out of it though.

**The TM+HM learnability data is stored in a rather wierd fashion. To convert into readable data, reverse the bits in each individual byte. The resulting 56 bits can then be interpreted as simple on/off switches. (a 1 means learnable, a 0 mean not learnable. bit 1 controls TM01, etc., with bits 51-55 controlling HM01-HM05.) The reverse can be done to convert readable data into the database format.


-----------------------------------------------------------------------
Convert known information about the first few pokemon into the format of a pkmn database entry, re-interpret these data as moves, and thus derive the effects of super glitches
-----------------------------------------------------------------------

Bulbasaur:
01
2D 31 31 2D 41
16 03
2D 40
?? ?? ?? ?? ??
21 2D 00 00
03
A4 03 38 C0 03 08 06 00

Ivysaur:
02
3C 3E 3F 3C 50
16 03
2D 8D
?? ?? ?? ?? ??
21 2D 49 00
03
A4 03 38 C0 03 08 06 00

Venusaur:
03
50 52 53 50 64
16 03
2D D0
?? ?? ?? ?? ??
21 2D 49 16
03
A4 43 38 C0 03 08 06 00

Charmander:
04
27 34 2B 41 32
14 14
2D 41
?? ?? ?? ?? ??
0A 2D 00 00
03
B5 03 4F C8 E3 08 26 00

Charmeleon:
05
3A 40 3A 50 41
14 14
2D 8E
?? ?? ?? ?? ??
0A 2D 34 00
03
B5 03 4F C8 E3 08 26 00

Charizard:
06
4E 54 4E 64 55
14 02
2D D1
?? ?? ?? ?? ??
0A 2D 34 2B
03
B5 43 4F CE E3 08 2E 00

Squirtle:
07
2C 30 41 2B 32
15 15
2D 42
?? ?? ?? ?? ??
21 27 00 00
03
B1 3F 0F C8 83 08 32 00


There may be some uncertainties in the starting moves for Ivysaur and Charmeleon.

Regrouping these into sixes gives the data posted at the top.
5
Nearly everything in Red/Blue and Yellow are identical... so why are hex-equivalent glitches so different between the versions?
6
Emulation & ROM Hacking / Ditto Trick Savestate
« on: January 23, 2009, 06:19:19 pm »
I am looking for a Ditto trick ready savestate (that is, one in which the Gambler west of Lavender hasn't been battled). This seems like one of those very basic things that should just be available directly on the site.

If any of you has one lying around, I would appreciate if you could post it.
7
Added Submissions / RBY: The Real Way to "Duplicate" Items
« on: July 30, 2008, 08:30:58 pm »
Who would make 255 of an item in their sixth slot, and leave it sitting there long enough to toss one of the five items above it, before even using it? I would.

Summary: A pile of x255 of an item duplicates itself when an item above it is tossed.

Here, "duplicate" means that an extra pile of the item appears. It does not mean increasing the quantity of an item (as with encountering Missingno., 'M, .4, A, etc.).

All this was done on a cartridge Blue version.
============================================

Obtain x255 of an item in a single inventory space ("pile") by any means. I used the Old Man Glitch. In this example, we have 255 Master Balls.

The glitch occurs when an item above the x255 pile is tossed (or deposited, sold, or used). There will be two adjacent piles of Master Ball x255 where there used to be one.

There must be exactly x255 Master Balls to trigger the glitch.
Tossing an item below the Master Ball x255 pile causes no glitch.
Swapping the places of two items causes no glitch.

When there are two or more non-adjacent item piles of quantity x255, only the x255 pile closest after the tossed item duplicates.

-------------------------------------------
For example:
Escape Rope x1
Master Ball x255
Repel x2
==> Ultra Ball x255
Ultra Ball x255
Rare Candy x129
Great Ball x255
Cancel

-------------------------------------------

Using the glitch once will make the last item in your inventory act as the Cancel button. Twice will make the second to last item in your inventory act as the Cancel button. And so on.
You cannot scroll beyond the Cancel button, even though the scroll arrow is there.
Items below the acting Cancel button will be unreachable.
The acting Cancel button can be swapped with another item, which will act as the Cancel button.

Buying an item (or otherwise adding an item to your inventory) will erase the item acting as the Cancel button as well as those underneath it (not like you could reach those anyway). A normally functioning Cancel button will be directly below the bought item.

-------------------------------------------
Continuing with the above example, Escape Rope x1 was tossed, resulting in this:
Master Ball x255
Master Ball x255
Ultra Ball x255
Ultra Ball x255
Rare Candy x129 (acting as cancel button)
Great Ball x255 (unreachable)
Cancel (cannot be seen)


Buying a Parlyz Heal will result in this:

Master Ball x255
Master Ball x255
Ultra Ball x255
Ultra Ball x255
Parlyz Heal x1
Cancel

-------------------------------------------

Aside from the Cancel button issue, all items will function normally.

============================================

My explanation of this glitch is as follows:

When an item is tossed, each item below it is copied upward one space, starting with the item directly below the tossed item and going down. However, when the game encounters a pile of quantity x255 while going down the list, it is copied up, but the items after it are not, leaving two adjacent piles of x255 of the same item. The game still decreases its count of the total number of inventory items by one (which accounts for the messed up Cancel button).

I think when the game goes down the list on this copying spree, encountering an FF byte signals "Cancel button! Stop copying after this!" even though in this case the FF byte is for item quantity, not item type. Under normal cases, nobody would have x255 of an item anyway. Under normal cases, since the Cancel button masks anything after it (I think), the game doesn't have to delete the extra Cancel button left behind after copying the cancel button up one space.

============================================

Possible Dangers: You might lose valuable or even essential items.

Possible Uses: You can get rid of useless key items (Card Key, Pokeflute, etc.) and free up valuable space. And of course, you can get more copies of an item, even faster than the Old Man Trick.
Pages: [1]