Glitch City Laboratories Archives

Glitch City Laboratories closed on 1 September 2020 (announcement). This is an archived copy of a thread from Glitch City Laboratories Forums.

You can join Glitch City Research Institute to ask questions or discuss current developments.

You may also download the archive of this forum in .tar.gz, .sql.gz, or .sqlite.gz formats.

Generation II Glitch Discussion

The effects of ????? (00)'s second type in Crystal - Page 1

The effects of ????? (00)'s second type in Crystal

Posted by: Torchickens
Date: 2013-09-17 10:54:52
Inspired by werster's Generation II glitch hunting, I've had a brief look into the effects of ????? (00)'s second type in Crystal, based on this thread from the temporary forums.

I've been wondering what exactly happens when you view its stats. There seems to be a buffer overflow of some sort as too much memory is written for the name of its second type and then on VBA-RR v24 svn422, map corruption can occur in certain areas like Pokémon Centers.

It is definitely related to the second type. I'm not sure if I tracked this correctly, but through extrapolation I found that 000's data begins at 0x53404 (0x051424 + 255 * 0x20) and I got this data.

Dex: 50h
Base HP: 50h
Base Attack: 8Ah
Base Defense: 80h
Base Speed: 8Ah
Base Special Attack: 94h
Base Dpecial Defense: 8Dh
Type 1: 80h
Type 2: 50h
Catch rate: 50h
Base Exp Yield: 50h
Wild held item 1: 50h
Wild held item 2: 81h
Gender ratio: 84h
Unknown: 84h
Egg cycles: 83h
Unknown: 91h
Dimensions of frontsprite: 88h
Blank: 8B, 8B, 50, 50
Egg Groups: 8F
TM and HM flags: 88 83 86 84 98 50 50 50

Note that my data might be wrong if 000's data doesn't directly follow but I did find that when I gave Bulbasaur the 80h and 50h types, it indeed became a 'Normal'/(Glitched) type like ????? (00), and the map corruption glitch worked on VBA-rr.

[img]http://i.minus.com/jbqsRlAHHLNJFI.png[/img][img]http://i.minus.com/jMDZXMPIz8HiY.png[/img]

My questions are:

1) Is "Missingning" (map corruption through ????? [00]) normal behavior? It doesn't work on BGB, which is strange. Can somebody who has experience with the Celebi glitch like SloshedMail test it on a normal cartridge?
2) Where does glitch type 50h or ???? (00)'s second type get its name from? It seems to depend on the area.
3) What are the range of memory addresses we can manipulate? Could we do things like activating the GS Ball event flag (like Paco81 asked)? Does this glitch's map corruption have speedrunning potential, or is the 27 Pokémon method in Gold/Silver the only viable way? The problem with that method is that the game can freeze for some reason when you view the party, but so can this method in certain areas.


I will try testing this in many areas in the game to see if there are any interesting effects, such as how wwwxxyy caused the New Game screen to pop up. (IIMarckus' list of map digits)

Re: The effects of ????? (00)'s second type in Crystal

Posted by: Stackout
Date: 2013-09-19 04:15:45
What's the offset to the types array in Crystal?

Re: The effects of ????? (00)'s second type in Crystal

Posted by: TheZZAZZGlitch
Date: 2013-09-20 10:30:12
What's the offset to the types array in Crystal?


Species name pointers are located at offset 5097B. As usual, here's a list of where each index points to.

Index=#00 TypeStringPointer=$49B3
Index=#01 TypeStringPointer=$49BA
Index=#02 TypeStringPointer=$49C3
Index=#03 TypeStringPointer=$49CA
Index=#04 TypeStringPointer=$49FB
Index=#05 TypeStringPointer=$4A02
Index=#06 TypeStringPointer=$4A07
Index=#07 TypeStringPointer=$4A0C
Index=#08 TypeStringPointer=$4A10
Index=#09 TypeStringPointer=$4A16
Index=#0A TypeStringPointer=$49B3
Index=#0B TypeStringPointer=$49B3
Index=#0C TypeStringPointer=$49B3
Index=#0D TypeStringPointer=$49B3
Index=#0E TypeStringPointer=$49B3
Index=#0F TypeStringPointer=$49B3
Index=#10 TypeStringPointer=$49B3
Index=#11 TypeStringPointer=$49B3
Index=#12 TypeStringPointer=$49B3
Index=#13 TypeStringPointer=$49D1
Index=#14 TypeStringPointer=$49D5
Index=#15 TypeStringPointer=$49DA
Index=#16 TypeStringPointer=$49E0
Index=#17 TypeStringPointer=$49E6
Index=#18 TypeStringPointer=$49EF
Index=#19 TypeStringPointer=$49F7
Index=#1A TypeStringPointer=$4A1C
Index=#1B TypeStringPointer=$4A23
Index=#1C TypeStringPointer=$8E8D
Index=#1D TypeStringPointer=$8C91
Index=#1E TypeStringPointer=$8B80
Index=#1F TypeStringPointer=$8550
Index=#20 TypeStringPointer=$8688
Index=#21 TypeStringPointer=$9387
Index=#22 TypeStringPointer=$8D88
Index=#23 TypeStringPointer=$5086
Index=#24 TypeStringPointer=$8B85
Index=#25 TypeStringPointer=$8898
Index=#26 TypeStringPointer=$868D
Index=#27 TypeStringPointer=$8F50
Index=#28 TypeStringPointer=$888E
Index=#29 TypeStringPointer=$8E92
Index=#2A TypeStringPointer=$508D
Index=#2B TypeStringPointer=$E6E6
Index=#2C TypeStringPointer=$50E6
Index=#2D TypeStringPointer=$8885
Index=#2E TypeStringPointer=$8491
Index=#2F TypeStringPointer=$9650
Index=#30 TypeStringPointer=$9380
Index=#31 TypeStringPointer=$9184
Index=#32 TypeStringPointer=$8650
Index=#33 TypeStringPointer=$8091
Index=#34 TypeStringPointer=$9292
Index=#35 TypeStringPointer=$8450
Index=#36 TypeStringPointer=$848B
Index=#37 TypeStringPointer=$9382
Index=#38 TypeStringPointer=$8891
Index=#39 TypeStringPointer=$5082
Index=#3A TypeStringPointer=$928F
Index=#3B TypeStringPointer=$8298
Index=#3C TypeStringPointer=$8887
Index=#3D TypeStringPointer=$5082
Index=#3E TypeStringPointer=$8288
Index=#3F TypeStringPointer=$5084
Index=#40 TypeStringPointer=$9186
Index=#41 TypeStringPointer=$948E
Index=#42 TypeStringPointer=$838D
Index=#43 TypeStringPointer=$9150
Index=#44 TypeStringPointer=$828E
Index=#45 TypeStringPointer=$508A
Index=#46 TypeStringPointer=$8881
Index=#47 TypeStringPointer=$8391
Index=#48 TypeStringPointer=$8150
Index=#49 TypeStringPointer=$8694
Index=#4A TypeStringPointer=$8650
Index=#4B TypeStringPointer=$8E87
Index=#4C TypeStringPointer=$9392
Index=#4D TypeStringPointer=$9250
Index=#4E TypeStringPointer=$8493
Index=#4F TypeStringPointer=$8B84
Index=#50 TypeStringPointer=$8350
Index=#51 TypeStringPointer=$8091
Index=#52 TypeStringPointer=$8E86
Index=#53 TypeStringPointer=$508D
Index=#54 TypeStringPointer=$8083
Index=#55 TypeStringPointer=$8A91
Index=#56 TypeStringPointer=$2150
Index=#57 TypeStringPointer=$4A42
Index=#58 TypeStringPointer=$33FA
Index=#59 TypeStringPointer=$3DD2
Index=#5A TypeStringPointer=$064F
Index=#5B TypeStringPointer=$0900
Index=#5C TypeStringPointer=$2A09
Index=#5D TypeStringPointer=$6F66
Index=#5E TypeStringPointer=$7311
Index=#5F TypeStringPointer=$2AD0
Index=#60 TypeStringPointer=$1312
Index=#61 TypeStringPointer=$50FE
Index=#62 TypeStringPointer=$F920
Index=#63 TypeStringPointer=$A0C9
Index=#64 TypeStringPointer=$A54A
Index=#65 TypeStringPointer=$AA4A
Index=#66 TypeStringPointer=$564A
Index=#67 TypeStringPointer=$AFC6
Index=#68 TypeStringPointer=$B34A
Index=#69 TypeStringPointer=$B74A
Index=#6A TypeStringPointer=$BB4A
Index=#6B TypeStringPointer=$564A
Index=#6C TypeStringPointer=$56C6
Index=#6D TypeStringPointer=$C0C6
Index=#6E TypeStringPointer=$C54A
Index=#6F TypeStringPointer=$C94A
Index=#70 TypeStringPointer=$564A
Index=#71 TypeStringPointer=$CEC6
Index=#72 TypeStringPointer=$564A
Index=#73 TypeStringPointer=$56C6
Index=#74 TypeStringPointer=$D3C6
Index=#75 TypeStringPointer=$564A
Index=#76 TypeStringPointer=$D9C6
Index=#77 TypeStringPointer=$DE4A
Index=#78 TypeStringPointer=$564A
Index=#79 TypeStringPointer=$56C6
Index=#7A TypeStringPointer=$E4C6
Index=#7B TypeStringPointer=$564A
Index=#7C TypeStringPointer=$E8C6
Index=#7D TypeStringPointer=$ED4A
Index=#7E TypeStringPointer=$F14A
Index=#7F TypeStringPointer=$564A
Index=#80 TypeStringPointer=$49B3
Index=#81 TypeStringPointer=$49BA
Index=#82 TypeStringPointer=$49C3
Index=#83 TypeStringPointer=$49CA
Index=#84 TypeStringPointer=$49FB
Index=#85 TypeStringPointer=$4A02
Index=#86 TypeStringPointer=$4A07
Index=#87 TypeStringPointer=$4A0C
Index=#88 TypeStringPointer=$4A10
Index=#89 TypeStringPointer=$4A16
Index=#8A TypeStringPointer=$49B3
Index=#8B TypeStringPointer=$49B3
Index=#8C TypeStringPointer=$49B3
Index=#8D TypeStringPointer=$49B3
Index=#8E TypeStringPointer=$49B3
Index=#8F TypeStringPointer=$49B3
Index=#10 TypeStringPointer=$49B3
Index=#11 TypeStringPointer=$49B3
Index=#12 TypeStringPointer=$49B3
Index=#13 TypeStringPointer=$49D1
Index=#14 TypeStringPointer=$49D5
Index=#15 TypeStringPointer=$49DA
Index=#16 TypeStringPointer=$49E0
Index=#17 TypeStringPointer=$49E6
Index=#18 TypeStringPointer=$49EF
Index=#19 TypeStringPointer=$49F7
Index=#1A TypeStringPointer=$4A1C
Index=#1B TypeStringPointer=$4A23
Index=#1C TypeStringPointer=$8E8D
Index=#1D TypeStringPointer=$8C91
Index=#1E TypeStringPointer=$8B80
Index=#1F TypeStringPointer=$8550
Index=#20 TypeStringPointer=$8688
Index=#21 TypeStringPointer=$9387
Index=#22 TypeStringPointer=$8D88
Index=#23 TypeStringPointer=$5086
Index=#24 TypeStringPointer=$8B85
Index=#25 TypeStringPointer=$8898
Index=#26 TypeStringPointer=$868D
Index=#27 TypeStringPointer=$8F50
Index=#28 TypeStringPointer=$888E
Index=#29 TypeStringPointer=$8E92
Index=#2A TypeStringPointer=$508D
Index=#2B TypeStringPointer=$E6E6
Index=#2C TypeStringPointer=$50E6
Index=#2D TypeStringPointer=$8885
Index=#2E TypeStringPointer=$8491
Index=#2F TypeStringPointer=$9650
Index=#30 TypeStringPointer=$9380
Index=#31 TypeStringPointer=$9184
Index=#32 TypeStringPointer=$8650
Index=#33 TypeStringPointer=$8091
Index=#34 TypeStringPointer=$9292
Index=#35 TypeStringPointer=$8450
Index=#36 TypeStringPointer=$848B
Index=#37 TypeStringPointer=$9382
Index=#38 TypeStringPointer=$8891
Index=#39 TypeStringPointer=$5082
Index=#3A TypeStringPointer=$928F
Index=#3B TypeStringPointer=$8298
Index=#3C TypeStringPointer=$8887
Index=#3D TypeStringPointer=$5082
Index=#3E TypeStringPointer=$8288
Index=#3F TypeStringPointer=$5084
Index=#40 TypeStringPointer=$9186
Index=#41 TypeStringPointer=$948E
Index=#42 TypeStringPointer=$838D
Index=#43 TypeStringPointer=$9150
Index=#44 TypeStringPointer=$828E
Index=#45 TypeStringPointer=$508A
Index=#46 TypeStringPointer=$8881
Index=#47 TypeStringPointer=$8391
Index=#48 TypeStringPointer=$8150
Index=#49 TypeStringPointer=$8694
Index=#4A TypeStringPointer=$8650
Index=#4B TypeStringPointer=$8E87
Index=#4C TypeStringPointer=$9392
Index=#4D TypeStringPointer=$9250
Index=#4E TypeStringPointer=$8493
Index=#4F TypeStringPointer=$8B84
Index=#50 TypeStringPointer=$8350
Index=#51 TypeStringPointer=$8091
Index=#52 TypeStringPointer=$8E86
Index=#53 TypeStringPointer=$508D
Index=#54 TypeStringPointer=$8083
Index=#55 TypeStringPointer=$8A91
Index=#56 TypeStringPointer=$2150
Index=#57 TypeStringPointer=$4A42
Index=#58 TypeStringPointer=$33FA
Index=#59 TypeStringPointer=$3DD2
Index=#5A TypeStringPointer=$064F
Index=#5B TypeStringPointer=$0900
Index=#5C TypeStringPointer=$2A09
Index=#5D TypeStringPointer=$6F66
Index=#5E TypeStringPointer=$7311
Index=#5F TypeStringPointer=$2AD0
Index=#60 TypeStringPointer=$1312
Index=#61 TypeStringPointer=$50FE
Index=#62 TypeStringPointer=$F920
Index=#63 TypeStringPointer=$A0C9
Index=#64 TypeStringPointer=$A54A
Index=#65 TypeStringPointer=$AA4A
Index=#66 TypeStringPointer=$564A
Index=#67 TypeStringPointer=$AFC6
Index=#68 TypeStringPointer=$B34A
Index=#69 TypeStringPointer=$B74A
Index=#6A TypeStringPointer=$BB4A
Index=#6B TypeStringPointer=$564A
Index=#6C TypeStringPointer=$56C6
Index=#6D TypeStringPointer=$C0C6
Index=#6E TypeStringPointer=$C54A
Index=#6F TypeStringPointer=$C94A
Index=#70 TypeStringPointer=$564A
Index=#71 TypeStringPointer=$CEC6
Index=#72 TypeStringPointer=$564A
Index=#73 TypeStringPointer=$56C6
Index=#74 TypeStringPointer=$D3C6
Index=#75 TypeStringPointer=$564A
Index=#76 TypeStringPointer=$D9C6
Index=#77 TypeStringPointer=$DE4A
Index=#78 TypeStringPointer=$564A
Index=#79 TypeStringPointer=$56C6
Index=#7A TypeStringPointer=$E4C6
Index=#7B TypeStringPointer=$564A
Index=#7C TypeStringPointer=$E8C6
Index=#7D TypeStringPointer=$ED4A
Index=#7E TypeStringPointer=$F14A
Index=#7F TypeStringPointer=$564A
Index=#80 TypeStringPointer=$49B3
Index=#81 TypeStringPointer=$49BA
Index=#82 TypeStringPointer=$49C3
Index=#83 TypeStringPointer=$49CA
Index=#84 TypeStringPointer=$49FB
Index=#85 TypeStringPointer=$4A02
Index=#86 TypeStringPointer=$4A07
Index=#87 TypeStringPointer=$4A0C
Index=#88 TypeStringPointer=$4A10
Index=#89 TypeStringPointer=$4A16
Index=#8A TypeStringPointer=$49B3
Index=#8B TypeStringPointer=$49B3
Index=#8C TypeStringPointer=$49B3
Index=#8D TypeStringPointer=$49B3
Index=#8E TypeStringPointer=$49B3
Index=#8F TypeStringPointer=$49B3
Index=#90 TypeStringPointer=$49B3
Index=#91 TypeStringPointer=$49B3
Index=#92 TypeStringPointer=$49B3
Index=#93 TypeStringPointer=$49D1
Index=#94 TypeStringPointer=$49D5
Index=#95 TypeStringPointer=$49DA
Index=#96 TypeStringPointer=$49E0
Index=#97 TypeStringPointer=$49E6
Index=#98 TypeStringPointer=$49EF
Index=#99 TypeStringPointer=$49F7
Index=#9A TypeStringPointer=$4A1C
Index=#9B TypeStringPointer=$4A23
Index=#9C TypeStringPointer=$8E8D
Index=#9D TypeStringPointer=$8C91
Index=#9E TypeStringPointer=$8B80
Index=#9F TypeStringPointer=$8550
Index=#A0 TypeStringPointer=$8688
Index=#A1 TypeStringPointer=$9387
Index=#A2 TypeStringPointer=$8D88
Index=#A3 TypeStringPointer=$5086
Index=#A4 TypeStringPointer=$8B85
Index=#A5 TypeStringPointer=$8898
Index=#A6 TypeStringPointer=$868D
Index=#A7 TypeStringPointer=$8F50
Index=#A8 TypeStringPointer=$888E
Index=#A9 TypeStringPointer=$8E92
Index=#AA TypeStringPointer=$508D
Index=#AB TypeStringPointer=$E6E6
Index=#AC TypeStringPointer=$50E6
Index=#AD TypeStringPointer=$8885
Index=#AE TypeStringPointer=$8491
Index=#AF TypeStringPointer=$9650
Index=#B0 TypeStringPointer=$9380
Index=#B1 TypeStringPointer=$9184
Index=#B2 TypeStringPointer=$8650
Index=#B3 TypeStringPointer=$8091
Index=#B4 TypeStringPointer=$9292
Index=#B5 TypeStringPointer=$8450
Index=#B6 TypeStringPointer=$848B
Index=#B7 TypeStringPointer=$9382
Index=#B8 TypeStringPointer=$8891
Index=#B9 TypeStringPointer=$5082
Index=#BA TypeStringPointer=$928F
Index=#BB TypeStringPointer=$8298
Index=#BC TypeStringPointer=$8887
Index=#BD TypeStringPointer=$5082
Index=#BE TypeStringPointer=$8288
Index=#BF TypeStringPointer=$5084
Index=#C0 TypeStringPointer=$9186
Index=#C1 TypeStringPointer=$948E
Index=#C2 TypeStringPointer=$838D
Index=#C3 TypeStringPointer=$9150
Index=#C4 TypeStringPointer=$828E
Index=#C5 TypeStringPointer=$508A
Index=#C6 TypeStringPointer=$8881
Index=#C7 TypeStringPointer=$8391
Index=#C8 TypeStringPointer=$8150
Index=#C9 TypeStringPointer=$8694
Index=#CA TypeStringPointer=$8650
Index=#CB TypeStringPointer=$8E87
Index=#CC TypeStringPointer=$9392
Index=#CD TypeStringPointer=$9250
Index=#CE TypeStringPointer=$8493
Index=#CF TypeStringPointer=$8B84
Index=#D0 TypeStringPointer=$8350
Index=#D1 TypeStringPointer=$8091
Index=#D2 TypeStringPointer=$8E86
Index=#D3 TypeStringPointer=$508D
Index=#D4 TypeStringPointer=$8083
Index=#D5 TypeStringPointer=$8A91
Index=#D6 TypeStringPointer=$2150
Index=#D7 TypeStringPointer=$4A42
Index=#D8 TypeStringPointer=$33FA
Index=#D9 TypeStringPointer=$3DD2
Index=#DA TypeStringPointer=$064F
Index=#DB TypeStringPointer=$0900
Index=#DC TypeStringPointer=$2A09
Index=#DD TypeStringPointer=$6F66
Index=#DE TypeStringPointer=$7311
Index=#DF TypeStringPointer=$2AD0
Index=#E0 TypeStringPointer=$1312
Index=#E1 TypeStringPointer=$50FE
Index=#E2 TypeStringPointer=$F920
Index=#E3 TypeStringPointer=$A0C9
Index=#E4 TypeStringPointer=$A54A
Index=#E5 TypeStringPointer=$AA4A
Index=#E6 TypeStringPointer=$564A
Index=#E7 TypeStringPointer=$AFC6
Index=#E8 TypeStringPointer=$B34A
Index=#E9 TypeStringPointer=$B74A
Index=#EA TypeStringPointer=$BB4A
Index=#EB TypeStringPointer=$564A
Index=#EC TypeStringPointer=$56C6
Index=#ED TypeStringPointer=$C0C6
Index=#EE TypeStringPointer=$C54A
Index=#EF TypeStringPointer=$C94A
Index=#F0 TypeStringPointer=$564A
Index=#F1 TypeStringPointer=$CEC6
Index=#F2 TypeStringPointer=$564A
Index=#F3 TypeStringPointer=$56C6
Index=#F4 TypeStringPointer=$D3C6
Index=#F5 TypeStringPointer=$564A
Index=#F6 TypeStringPointer=$D9C6
Index=#F7 TypeStringPointer=$DE4A
Index=#F8 TypeStringPointer=$564A
Index=#F9 TypeStringPointer=$56C6
Index=#FA TypeStringPointer=$E4C6
Index=#FB TypeStringPointer=$564A
Index=#FC TypeStringPointer=$E8C6
Index=#FD TypeStringPointer=$ED4A
Index=#FE TypeStringPointer=$F14A
Index=#FF TypeStringPointer=$564A


Because of Crystal's simplistic pointer arithmetic, type $80 is actually the same as $00, $81 is $01, etc.

2) Where does glitch type 50h or ???? (00)'s second type get its name from? It seems to depend on the area.


The glitch type 0x50's text is (wrongly) pointing to $8350, which is in the middle of VRAM, the memory region where Gameboy stores all currently used graphics. This is why this text changes depending on the location.

There seems to be a buffer overflow of some sort as too much memory is written for the name of its second type and then on VBA-RR v24 svn422, map corruption can occur in certain areas like Pokémon Centers.


That's right. The game does not control how much text has been written, and while trying to display an incredibly long move type, overwrites several important addresses. The map corruption is a result of overwriting address $C84E.

What are the range of memory addresses we can manipulate? Could we do things like activating the GS Ball event flag (like Paco81 asked)? Does this glitch's map corruption have speedrunning potential, or is the 27 Pokémon method in Gold/Silver the only viable way?


The corruption starts at address $C5E1. In theory, the possible length of corruption is unlimited. However, after writing about 1000 bytes, the game crashes. And the bytes we can write are severely restricted, because the text printing routine is programmed to change all unprintable characters to question marks (0xE6).

Is "Missingning" (map corruption through ????? [00]) normal behavior? It doesn't work on BGB, which is strange.


The whole overflow behavior still happens in BGB. However, when it actually works right, BGB always crashes for some reason. Either VBA has a bug that causes the game not to crash, or BGB has a bug that causes the game to crash.

Re: The effects of ????? (00)'s second type in Crystal

Posted by: krynxe
Date: 2013-09-26 02:58:23
So please correct me if I'm interpreting this completely wrong, and apologies for my ignorance in advanced~
Bytes are taken from $8350 and are output starting at 'some value'($C5E1?) with intent to be interpreted as text for the Pokemon's second type. Due to no end flag existing, these data will overflow and continue to $C84E in which these values (limited to those that COULD be interpreted as text, otherwise outputting 0xE6) are instead interpreted as part of the map.

Also, some questions for my own comprehension before I go toy with this in a debugger:
Species name pointers are located at offset 5097B. As usual, here's a list of where each index points to.

Why do the index for the types point to such arbitrary values after $1B? Are they used for something, and/or may another similar glitch move exist ($1C-$7F) that would theoretically point to a more desirable location rather than the VRAM thus allowing us to output more consistent values to $C5E1 and more directly control the effects of the overflow?

The glitch type 0x50's text is (wrongly) pointing to $8350, which is in the middle of VRAM, the memory region where Gameboy stores all currently used graphics. This is why this text changes depending on the location.

Are the bytes located at $8350 tile-based, map-based, screen-based, or what? As in, do they change based on what map you've loaded, or what's currently on screen?

The game does not control how much text has been written, and while trying to display an incredibly long move type, overwrites several important addresses

The corruption starts at address $C5E1. In theory, the possible length of corruption is unlimited. However, after writing about 1000 bytes, the game crashes.

Is this the primary reason for games crashing when doing this glitch? Since the game does not control how much text has been written, must the game meet a return value from $8350 (0xFF?) otherwise after ~1000 bytes the game crashes?

And the bytes we can write are severely restricted, because the text printing routine is programmed to change all unprintable characters to question marks (0xE6).

Are the RBY letters parallel to the GSC ones in terms of hex? (as seen in the biglist, 0xE6 is ? in RBY) Also, how does the map interpret 0xE6? Other bytes?

Thanks for any help!

Re: The effects of ????? (00)'s second type in Crystal

Posted by: Torchickens
Date: 2013-09-26 11:50:49

Are the RBY letters parallel to the GSC ones in terms of hex? (as seen in the biglist, 0xE6 is ? in RBY) Also, how does the map interpret 0xE6? Other bytes?

Thanks for any help!


The characters in GSC (mostly) have the same index numbers. The alphabet and numbers are the same, at least.

From Matthew Robinson's code archive for Gold/Silver:

50 - NULL (End of Name REQUIRED Where It Is Used!)   
60 - BOLD A (Not Available On Name Screen)   
61 - BOLD B ( " )   
72 - BOLD P ( " )   
80 - A   
81 - B   
82 - C   
83 - D   
84 - E   
85 - F   
86 - G   
87 - H   
88 - I   
89 - J   
8A - K   
8B - L   
8C - M   
8D - N   
8E - O   
8F - P   
90 - Q   
91 - R   
92 - S   
93 - T   
94 - U   
95 - V   
96 - W   
97 - X   
98 - Y   
99 - Z   
9A - (   
9B - )   
9C - :   
9D - ;   
9E - [   
9F - ]   
A0 - a   
A1 - b   
A2 - c   
A3 - d   
A4 - e   
A5 - f   
A6 - g   
A7 - h   
A8 - i   
A9 - j   
AA - k   
AB - l   
AC - m   
AD - n   
AE - o   
AF - p   
B0 - q   
B1 - r   
B2 - s   
B3 - t   
B4 - u   
B5 - v   
B6 - w   
B7 - x   
B8 - y   
B9 - z   
BA - T   
BB - 'd   
BC - 'l   
BD - 's   
BE - 't   
BF - 'v   
E1 - PK   
E2 - MN   
E4 - 'r   
E5 - 'm   
E6 - ?   
E7 - !   
EF - Male Symbol   
F0 - Currency Symbol (P with Horizontal Slashses)   
F1 - x (Multiply)   
F2 - . (Period)   
F3 - / (Division)   
F4 - ,(Comma)   
F5 - Female Symbol   
F6 - 0   
F7 - 1   
F8 - 2   
F9 - 3   
FA - 4   
FB - 5   
FC - 6   
FD - 7   
FE - 8   
FF - 9