<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://projectpokemon.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xfr</id>
	<title>ProjectPokemon Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://projectpokemon.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xfr"/>
	<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/Special:Contributions/Xfr"/>
	<updated>2026-05-07T17:26:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4312</id>
		<title>GTS protocol</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4312"/>
		<updated>2011-06-05T03:59:10Z</updated>

		<summary type="html">&lt;p&gt;Xfr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Communication with the GTS is done over regular HTTP with http://gamestats2.gs.nintendowifi.net/.  The same protocol is used for all five Gen IV games.&lt;br /&gt;
&lt;br /&gt;
==HTTP headers==&lt;br /&gt;
&lt;br /&gt;
The games don&#039;t seem to care about these at all.  The GTS sends back a bunch of boilerplate response headers, but the game happily accepts a response with only a Content-Length.&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
&lt;br /&gt;
All requests to the server are GET requests of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; followed by &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;. The hash variable in the latter, is a hash of the string returned by the former, as described bellow.&lt;br /&gt;
&lt;br /&gt;
===pid===&lt;br /&gt;
&lt;br /&gt;
The pid is an unsigned 32-bit integer that appears to uniquely identify a game cartridge. Although this has not been confirmed entirely:&lt;br /&gt;
Your PID is generated when you get your friendcode for the first time and is set to: friendcode &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
When you change the device and are forced to change your friendcode with it, your PID doesn&#039;t change but you get a new friendcode. Your new Friend Code appears to be set by appending a random byte (likely sent from Nintendo&#039;s servers) to the end of your PID. For example, nicholas&#039;s Soul Silver PID is 258303618 (0x8266650f)and his Friend Code is 4297 5503 3218 (0xf8266650f64) taking endianness into account.&lt;br /&gt;
&lt;br /&gt;
===Challenge/response===&lt;br /&gt;
&lt;br /&gt;
Before each &amp;quot;real&amp;quot; request, the game sends a request of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; and the server responds with a 32-byte challenge token. The game computes &amp;lt;code&amp;gt;sha1(&amp;quot;sAdeqWo3voLeC5r16DYv&amp;quot; + token)&amp;lt;/code&amp;gt; and uses that as the &amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt; value which it sends to the server. The &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt; parameter is encrypted, as explained further down.&lt;br /&gt;
&lt;br /&gt;
For 5th gen GTS, the hash is instead, generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot; + token)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is, each request looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with &amp;lt;var&amp;gt;token&amp;lt;/var&amp;gt;&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;sha1(...)&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with payload&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&lt;br /&gt;
The data sent to the server consists of a &#039;&#039;&#039;checksum&#039;&#039;&#039;, your &#039;&#039;&#039;pid&#039;&#039;&#039;, and a &#039;&#039;&#039;payload&#039;&#039;&#039;. The 5th gen GTS also adds the length of the payload, after the pid.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the server must append to all its responses a footer generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;+urlsafe_base64(response)+&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Checksum===&lt;br /&gt;
&lt;br /&gt;
The checksum is a 32-bit integer, computed by simply taking the sum of every byte of the pid and payload.&lt;br /&gt;
&lt;br /&gt;
It is the first four bytes of the data, xor-ed with &amp;lt;code&amp;gt;0x4a3b2c1d&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x2db842b2&amp;lt;/code&amp;gt; for 5th gen) and packed in network byte order (big-endian).&lt;br /&gt;
&lt;br /&gt;
===Payload===&lt;br /&gt;
The pid and payload are encrypted with a [http://en.wikipedia.org/wiki/Stream_cipher stream cipher] in for the 4th gen protocol.&lt;br /&gt;
&lt;br /&gt;
This encryption algorithm, like others used in the game, uses a [http://en.wikipedia.org/wiki/Linear_congruential_generator Linear Congruential Generator] (not a very strong choice). The multiplicative constant is &amp;lt;code&amp;gt;0x45&amp;lt;/code&amp;gt;, and the additive constant is &amp;lt;code&amp;gt;0x1111&amp;lt;/code&amp;gt;. It appears that the game uses a signed dword to store the seed, which doesn&#039;t really matter; it shouldn&#039;t affect anything. (It means that the modulus is effectively &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
 GRNG[n+1] = (GRNG[n] * 0x45 + 0x1111) &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
The GRNG is seeded with the &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt;, like so:&lt;br /&gt;
&lt;br /&gt;
 GRNG[0] = &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; | (&amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; &amp;lt;&amp;lt; 16)&lt;br /&gt;
&lt;br /&gt;
The keystream is composed of the lower byte of the high word of successive GRNG values.&lt;br /&gt;
&lt;br /&gt;
 keystream[n] = (GRNG[n] &amp;gt;&amp;gt; 16) &amp;amp; 0xff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the plaintext to get the ciphertext. &amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the ciphertext to get the plaintext.&lt;br /&gt;
&lt;br /&gt;
The entire data string is then encoded with [http://en.wikipedia.org/wiki/Base64#URL_applications urlsafe-base64].&lt;br /&gt;
&lt;br /&gt;
==Conversation==&lt;br /&gt;
&lt;br /&gt;
The first request the game makes is to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/info.asp&amp;lt;/code&amp;gt;. The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
Platinum, Heart Gold, and Soul Silver will then make a request to &amp;lt;code&amp;gt;/pokemondpds/common/setProfile.asp&amp;lt;/code&amp;gt;.  The server responds with eight NULs (0x00000000 0x00000000).&lt;br /&gt;
&lt;br /&gt;
After the above step(s) or &#039;&#039;&#039;performing any of the tasks below&#039;&#039;&#039; other than searching, the game makes a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/result.asp&amp;lt;/code&amp;gt;.  If the game has had a Pokémon sent to it via a trade, the server responds with the entire encrypted [[Pokemon NDS Structure|Pokémon save struct]].  Otherwise, if there is a Pokémon deposited in the GTS, it responds with 0x0004; if not, it responds with 0x0005.&lt;br /&gt;
&lt;br /&gt;
===Receiving a traded Pokémon===&lt;br /&gt;
&lt;br /&gt;
If the game receives a Pokémon from a successful trade as a response from &amp;lt;code&amp;gt;result.asp&amp;lt;/code&amp;gt;, it next requests &amp;lt;code&amp;gt;/pokemondpds/worldexchange/delete.asp&amp;lt;/code&amp;gt;.  The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
====A note on sendpkm.py====&lt;br /&gt;
&lt;br /&gt;
After doing the above, some Platinum, Heart Gold, and Soul Silver games will report a communication error and dump the player back to the title screen.  The Pokémon is still successfully received.  At least one person with HG/SS has received a Pokémon from a fake server without getting the error, and Diamond/Pearl have never been reported to have the problem.&lt;br /&gt;
&lt;br /&gt;
===Depositing a Pokémon===&lt;br /&gt;
&lt;br /&gt;
Pokémon are offered on the GTS by requesting &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post.asp&amp;lt;/code&amp;gt;. If the Pokémon is rejected by the server, the response is 0x000c; otherwise, if the deposit is successful, 0x0001. Note that in generation 5, some tests are performed on a pokémon before it is deposited. If the pokémon is rejected at this stage (a problem was detected or one of the OT name or nickname is inappropriate) it is NOT sent to the GTS and error 13267 is displayed.&lt;br /&gt;
&lt;br /&gt;
The game then saves. After the save is complete, it issues a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post_finish.asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the sent data is 444 bytes long as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| Checksum (sum of all bytes xor 0x2db842b2)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x08&lt;br /&gt;
| pid&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09-0x0A&lt;br /&gt;
| Data length (minus the 12 bytes of header)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0xE8&lt;br /&gt;
| Encrypted [[Pokemon Black/White NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xE9-0xF7&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8-0x9&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFA&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFB&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFC-0xFD&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFE&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x100&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x101&lt;br /&gt;
| Unknown / Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x102&lt;br /&gt;
| Trainer gender&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x103&lt;br /&gt;
| Trainer nature&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x104-0x107&lt;br /&gt;
| Always 0?&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x108-0x117&lt;br /&gt;
| Timestamp placeholder, always 0 (set by server)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x118-0x119&lt;br /&gt;
| Trainer ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11A-0x11B&lt;br /&gt;
| Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11C-0x12B&lt;br /&gt;
| OT Name (Unicode, must end with 0xFFFF)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12C&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12D&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12E&lt;br /&gt;
| [[#Trainer Class|Trainer class/sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12F&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x130&lt;br /&gt;
| Game version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x131&lt;br /&gt;
| Region/language&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x132&lt;br /&gt;
| &#039;&#039;&#039;Unknown&#039;&#039;&#039; (0 to 8)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x133&lt;br /&gt;
| Unlocked floors in Unity Tower&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x134-0x137&lt;br /&gt;
| Unused&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x138-0x1B7&lt;br /&gt;
| Signature of pokémon struct&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B8-0x1BB&lt;br /&gt;
| Terminator (0x80000000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In generation 4, the sent data is 296 bytes long and as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0xEF&lt;br /&gt;
| Encrypted [[Pokemon NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF0-0xF1&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF2&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF3&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF4-Fx05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF6&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF7&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF9-0x109&lt;br /&gt;
| Zero / Timestamps and PID placeholders&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x110-0x11F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x120-0x121&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x122&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x123&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x124&lt;br /&gt;
| [[#Trainer Class|Trainer&#039;s Sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x125&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x126&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x127&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Retrieving the deposited Pokémon===&lt;br /&gt;
&lt;br /&gt;
Checking on the deposited Pokémon is apparently done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/get.asp&amp;lt;/code&amp;gt;.  The response appears to be a [[Pokemon NDS Structure|Pokémon save struct]].&lt;br /&gt;
&lt;br /&gt;
Retrieving the deposited Pokémon is done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/return.asp&amp;lt;/code&amp;gt;.  The response is merely 0x0001; the actual Pokémon data is taken from the &amp;lt;code&amp;gt;get.asp&amp;lt;/code&amp;gt; request.&lt;br /&gt;
&lt;br /&gt;
===Searching===&lt;br /&gt;
&lt;br /&gt;
Searching is done through &amp;lt;code&amp;gt;/pokemondpds/worldexchange/search.asp&amp;lt;/code&amp;gt;.  The sent data is either 15 or 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
The server responds with a full 292-byte Pokémon struct for each result.  If there are &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; results, the response will be 292 * &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; bytes long.  If there are no results, the server will give an empty response (0 bytes).&lt;br /&gt;
&lt;br /&gt;
==Pokémon struct==&lt;br /&gt;
&lt;br /&gt;
The Pokémon data for the Generation IV GTS is 292 bytes—56 bytes larger than a party Pokémon struct. The extra 56 bytes are GTS-specific data, such as the player&#039;s name &amp;amp; country, and what Pokémon they are requesting. In Generation IV, the trainer name is encoded with the Pokémon character table, while in Generation V, the trainer name is Unicode encoded.&lt;br /&gt;
&lt;br /&gt;
They are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Generation IV Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| Timestamp - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| Timestamp - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x2F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30-0x31&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| [[#Trainer Class|Trainer&#039;s Sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data for the Generation V GTS is 296 bytes and adds the trainer&#039;s secret ID, an additional two unknown bytes at the end, and shifts the position of the trainer name to after the trainer and secret IDs.&lt;br /&gt;
&lt;br /&gt;
=== Generation V Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x21&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22-0x23&lt;br /&gt;
| Trainer&#039;s Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x33&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x39&lt;br /&gt;
| [[Pokemon Black/White NDS Structure#Original Language|Language]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3A-0x3B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pokémon Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Female&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Either/neither&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trainer Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Female&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Timestamp Format ===&lt;br /&gt;
The timestamps are set by the server, and are always PST (UTC-8).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Year&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Month&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Day&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Hour&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Minute&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Second&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trainer Class ===&lt;br /&gt;
(for generation 5)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Class&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Youngster&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Ace Trainer&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Pokémon Ranger&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Pokémon Breeder&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Researcher&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Hiker&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Skinhead&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Day-Care student&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Lass&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| Ace Trainer (female)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0a&lt;br /&gt;
| Pokémon Ranger (female)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0b&lt;br /&gt;
| Pokémon Breeder (female)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0c&lt;br /&gt;
| Researcher (female)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0d&lt;br /&gt;
| Parasol Lady&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0e&lt;br /&gt;
| Nurse&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0f&lt;br /&gt;
| Day-Care student (female)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Game Version ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| Diamond&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Pearl&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C&lt;br /&gt;
| Platinum&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| HeartGold&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| SoulSilver&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| Black&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| White&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4208</id>
		<title>GTS protocol</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4208"/>
		<updated>2011-04-19T18:24:18Z</updated>

		<summary type="html">&lt;p&gt;Xfr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Communication with the GTS is done over regular HTTP with http://gamestats2.gs.nintendowifi.net/.  The same protocol is used for all five Gen IV games.&lt;br /&gt;
&lt;br /&gt;
==HTTP headers==&lt;br /&gt;
&lt;br /&gt;
The games don&#039;t seem to care about these at all.  The GTS sends back a bunch of boilerplate response headers, but the game happily accepts a response with only a Content-Length.&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
&lt;br /&gt;
All requests to the server are GET requests of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; followed by &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;. The hash variable in the latter, is a hash of the string returned by the former, as described bellow.&lt;br /&gt;
&lt;br /&gt;
===pid===&lt;br /&gt;
&lt;br /&gt;
The pid is an unsigned 32-bit integer that appears to uniquely identify a game cartridge. Although this has not been confirmed entirely:&lt;br /&gt;
Your PID is generated when you get your friendcode for the first time and is set to: friendcode &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
When you change the device and are forced to change your friendcode with it, your PID doesn&#039;t change but you get a new friendcode. Your new Friend Code appears to be set by appending a random byte (likely sent from Nintendo&#039;s servers) to the end of your PID. For example, nicholas&#039;s Soul Silver PID is 258303618 (0x8266650f)and his Friend Code is 4297 5503 3218 (0xf8266650f64) taking endianness into account.&lt;br /&gt;
&lt;br /&gt;
===Challenge/response===&lt;br /&gt;
&lt;br /&gt;
Before each &amp;quot;real&amp;quot; request, the game sends a request of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; and the server responds with a 32-byte challenge token. The game computes &amp;lt;code&amp;gt;sha1(&amp;quot;sAdeqWo3voLeC5r16DYv&amp;quot; + token)&amp;lt;/code&amp;gt; and uses that as the &amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt; value which it sends to the server. The &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt; parameter is encrypted, as explained further down.&lt;br /&gt;
&lt;br /&gt;
For 5th gen GTS, the hash is instead, generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot; + token)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is, each request looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with &amp;lt;var&amp;gt;token&amp;lt;/var&amp;gt;&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;sha1(...)&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with payload&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&lt;br /&gt;
The data sent to the server consists of a &#039;&#039;&#039;checksum&#039;&#039;&#039;, your &#039;&#039;&#039;pid&#039;&#039;&#039;, and a &#039;&#039;&#039;payload&#039;&#039;&#039;. The 5th gen GTS also adds the length of the payload, after the pid.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the server must append to all its responses a footer generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;+urlsafe_base64(response)+&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Checksum===&lt;br /&gt;
&lt;br /&gt;
The checksum is a 32-bit integer, computed by simply taking the sum of every byte of the pid and payload.&lt;br /&gt;
&lt;br /&gt;
It is the first four bytes of the data, xor-ed with &amp;lt;code&amp;gt;0x4a3b2c1d&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x2db842b2&amp;lt;/code&amp;gt; for 5th gen) and packed in network byte order (big-endian).&lt;br /&gt;
&lt;br /&gt;
===Payload===&lt;br /&gt;
The pid and payload are encrypted with a [http://en.wikipedia.org/wiki/Stream_cipher stream cipher] in for the 4th gen protocol.&lt;br /&gt;
&lt;br /&gt;
This encryption algorithm, like others used in the game, uses a [http://en.wikipedia.org/wiki/Linear_congruential_generator Linear Congruential Generator] (not a very strong choice). The multiplicative constant is &amp;lt;code&amp;gt;0x45&amp;lt;/code&amp;gt;, and the additive constant is &amp;lt;code&amp;gt;0x1111&amp;lt;/code&amp;gt;. It appears that the game uses a signed dword to store the seed, which doesn&#039;t really matter; it shouldn&#039;t affect anything. (It means that the modulus is effectively &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
 GRNG[n+1] = (GRNG[n] * 0x45 + 0x1111) &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
The GRNG is seeded with the &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt;, like so:&lt;br /&gt;
&lt;br /&gt;
 GRNG[0] = &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; | (&amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; &amp;lt;&amp;lt; 16)&lt;br /&gt;
&lt;br /&gt;
The keystream is composed of the lower byte of the high word of successive GRNG values.&lt;br /&gt;
&lt;br /&gt;
 keystream[n] = (GRNG[n] &amp;gt;&amp;gt; 16) &amp;amp; 0xff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the plaintext to get the ciphertext. &amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the ciphertext to get the plaintext.&lt;br /&gt;
&lt;br /&gt;
The entire data string is then encoded with [http://en.wikipedia.org/wiki/Base64#URL_applications urlsafe-base64].&lt;br /&gt;
&lt;br /&gt;
==Conversation==&lt;br /&gt;
&lt;br /&gt;
The first request the game makes is to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/info.asp&amp;lt;/code&amp;gt;. The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
Platinum, Heart Gold, and Soul Silver will then make a request to &amp;lt;code&amp;gt;/pokemondpds/common/setProfile.asp&amp;lt;/code&amp;gt;.  The server responds with eight NULs (0x00000000 0x00000000).&lt;br /&gt;
&lt;br /&gt;
After the above step(s) or &#039;&#039;&#039;performing any of the tasks below&#039;&#039;&#039; other than searching, the game makes a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/result.asp&amp;lt;/code&amp;gt;.  If the game has had a Pokémon sent to it via a trade, the server responds with the entire encrypted [[Pokemon NDS Structure|Pokémon save struct]].  Otherwise, if there is a Pokémon deposited in the GTS, it responds with 0x0004; if not, it responds with 0x0005.&lt;br /&gt;
&lt;br /&gt;
===Receiving a traded Pokémon===&lt;br /&gt;
&lt;br /&gt;
If the game receives a Pokémon from a successful trade as a response from &amp;lt;code&amp;gt;result.asp&amp;lt;/code&amp;gt;, it next requests &amp;lt;code&amp;gt;/pokemondpds/worldexchange/delete.asp&amp;lt;/code&amp;gt;.  The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
====A note on sendpkm.py====&lt;br /&gt;
&lt;br /&gt;
After doing the above, some Platinum, Heart Gold, and Soul Silver games will report a communication error and dump the player back to the title screen.  The Pokémon is still successfully received.  At least one person with HG/SS has received a Pokémon from a fake server without getting the error, and Diamond/Pearl have never been reported to have the problem.&lt;br /&gt;
&lt;br /&gt;
===Depositing a Pokémon===&lt;br /&gt;
&lt;br /&gt;
Pokémon are offered on the GTS by requesting &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post.asp&amp;lt;/code&amp;gt;.  The sent data is 300 bytes long, and includes the Pokémon struct. If the Pokémon is rejected by the server, the response is 0x000c; otherwise, if the deposit is successful, 0x0001.&lt;br /&gt;
&lt;br /&gt;
The game then saves. After the save is complete, it issues a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post_finish.asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the sent data is 444 bytes long and as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| Checksum (sum of all bytes xor 0x2db842b2)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x08&lt;br /&gt;
| pid&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09-0x0A&lt;br /&gt;
| Data length (minus the 12 bytes of header)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0xE8&lt;br /&gt;
| Encrypted [[Pokemon Black/White NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xE9-0xF7&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8-0x9&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFA&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFB&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFC-0xFD&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFE&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x100&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x101&lt;br /&gt;
| Unknown / Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x102&lt;br /&gt;
| Trainer gender&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x103&lt;br /&gt;
| Trainer nature&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x104-0x107&lt;br /&gt;
| Always 0?&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x108-0x117&lt;br /&gt;
| Timestamp placeholder, always 0 (set by server)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x118-0x119&lt;br /&gt;
| Trainer ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11A-0x11B&lt;br /&gt;
| Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11C-0x12B&lt;br /&gt;
| OT Name (Unicode, must end with 0xFFFF)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12C&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12D&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12E&lt;br /&gt;
| [[#Trainer Class|Trainer class/sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12F&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x130&lt;br /&gt;
| Game version&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x131&lt;br /&gt;
| Region/language&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x132-0x137&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x138-0x1B7&lt;br /&gt;
| Mystery data (encrypted?)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B8-0x1BB&lt;br /&gt;
| Terminator (0x80000000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Retrieving the deposited Pokémon===&lt;br /&gt;
&lt;br /&gt;
Checking on the deposited Pokémon is apparently done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/get.asp&amp;lt;/code&amp;gt;.  The response appears to be a [[Pokemon NDS Structure|Pokémon save struct]].&lt;br /&gt;
&lt;br /&gt;
Retrieving the deposited Pokémon is done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/return.asp&amp;lt;/code&amp;gt;.  The response is merely 0x0001; the actual Pokémon data is taken from the &amp;lt;code&amp;gt;get.asp&amp;lt;/code&amp;gt; request.&lt;br /&gt;
&lt;br /&gt;
===Searching===&lt;br /&gt;
&lt;br /&gt;
Searching is done through &amp;lt;code&amp;gt;/pokemondpds/worldexchange/search.asp&amp;lt;/code&amp;gt;.  The sent data is either 15 or 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
The server responds with a full 292-byte Pokémon struct for each result.  If there are &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; results, the response will be 292 * &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; bytes long.  If there are no results, the server will give an empty response (0 bytes).&lt;br /&gt;
&lt;br /&gt;
==Pokémon struct==&lt;br /&gt;
&lt;br /&gt;
The Pokémon data for the Generation IV GTS is 292 bytes—56 bytes larger than a party Pokémon struct. The extra 56 bytes are GTS-specific data, such as the player&#039;s name &amp;amp; country, and what Pokémon they are requesting. In Generation IV, the trainer name is encoded with the Pokémon character table, while in Generation V, the trainer name is Unicode encoded.&lt;br /&gt;
&lt;br /&gt;
They are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Generation IV Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| Timestamp - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| Timestamp - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x2F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30-0x31&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| [[#Trainer Class|Trainer&#039;s Sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data for the Generation V GTS is 296 bytes and adds the trainer&#039;s secret ID, an additional two unknown bytes at the end, and shifts the position of the trainer name to after the trainer and secret IDs.&lt;br /&gt;
&lt;br /&gt;
=== Generation V Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x21&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22-0x23&lt;br /&gt;
| Trainer&#039;s Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x33&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x39&lt;br /&gt;
| [[Pokemon Black/White NDS Structure#Original Language|Language]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3A-0x3B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pokémon Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Female&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Either/neither&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trainer Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Female&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Timestamp Format ===&lt;br /&gt;
The timestamps are set by the server, and are always PST (UTC-8).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Year&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Month&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Day&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Hour&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Minute&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Second&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trainer Class ===&lt;br /&gt;
(for generation 5)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Class&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Youngster&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Ace Trainer&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Pokémon Ranger&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Pokémon Breeder&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Researcher&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Hiker&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Skinhead&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Day-Care student&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Lass&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| Ace Trainer (female)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0a&lt;br /&gt;
| Pokémon Ranger (female)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0b&lt;br /&gt;
| Pokémon Breeder (female)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0c&lt;br /&gt;
| Researcher (female)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0d&lt;br /&gt;
| Parasol Lady&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0e&lt;br /&gt;
| Nurse&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0f&lt;br /&gt;
| Day-Care student (female)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Game Version ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| Diamond&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Pearl&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C&lt;br /&gt;
| Platinum&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| HeartGold&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| SoulSilver&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| Black&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| White&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4207</id>
		<title>GTS protocol</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4207"/>
		<updated>2011-04-19T17:00:08Z</updated>

		<summary type="html">&lt;p&gt;Xfr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Communication with the GTS is done over regular HTTP with http://gamestats2.gs.nintendowifi.net/.  The same protocol is used for all five Gen IV games.&lt;br /&gt;
&lt;br /&gt;
==HTTP headers==&lt;br /&gt;
&lt;br /&gt;
The games don&#039;t seem to care about these at all.  The GTS sends back a bunch of boilerplate response headers, but the game happily accepts a response with only a Content-Length.&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
&lt;br /&gt;
All requests to the server are GET requests of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; followed by &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;. The hash variable in the latter, is a hash of the string returned by the former, as described bellow.&lt;br /&gt;
&lt;br /&gt;
===pid===&lt;br /&gt;
&lt;br /&gt;
The pid is an unsigned 32-bit integer that appears to uniquely identify a game cartridge. Although this has not been confirmed entirely:&lt;br /&gt;
Your PID is generated when you get your friendcode for the first time and is set to: friendcode &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
When you change the device and are forced to change your friendcode with it, your PID doesn&#039;t change but you get a new friendcode. Your new Friend Code appears to be set by appending a random byte (likely sent from Nintendo&#039;s servers) to the end of your PID. For example, nicholas&#039;s Soul Silver PID is 258303618 (0x8266650f)and his Friend Code is 4297 5503 3218 (0xf8266650f64) taking endianness into account.&lt;br /&gt;
&lt;br /&gt;
===Challenge/response===&lt;br /&gt;
&lt;br /&gt;
Before each &amp;quot;real&amp;quot; request, the game sends a request of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; and the server responds with a 32-byte challenge token. The game computes &amp;lt;code&amp;gt;sha1(&amp;quot;sAdeqWo3voLeC5r16DYv&amp;quot; + token)&amp;lt;/code&amp;gt; and uses that as the &amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt; value which it sends to the server. The &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt; parameter is encrypted, as explained further down.&lt;br /&gt;
&lt;br /&gt;
For 5th gen GTS, the hash is instead, generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot; + token)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is, each request looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with &amp;lt;var&amp;gt;token&amp;lt;/var&amp;gt;&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;sha1(...)&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with payload&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&lt;br /&gt;
The data sent to the server consists of a &#039;&#039;&#039;checksum&#039;&#039;&#039;, your &#039;&#039;&#039;pid&#039;&#039;&#039;, and a &#039;&#039;&#039;payload&#039;&#039;&#039;. The 5th gen GTS also adds the length of the payload, after the pid.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the server must append to all its responses a footer generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;+urlsafe_base64(response)+&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Checksum===&lt;br /&gt;
&lt;br /&gt;
The checksum is a 32-bit integer, computed by simply taking the sum of every byte of the pid and payload.&lt;br /&gt;
&lt;br /&gt;
It is the first four bytes of the data, xor-ed with &amp;lt;code&amp;gt;0x4a3b2c1d&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x2db842b2&amp;lt;/code&amp;gt; for 5th gen) and packed in network byte order (big-endian).&lt;br /&gt;
&lt;br /&gt;
===Payload===&lt;br /&gt;
The pid and payload are encrypted with a [http://en.wikipedia.org/wiki/Stream_cipher stream cipher] in for the 4th gen protocol.&lt;br /&gt;
&lt;br /&gt;
This encryption algorithm, like others used in the game, uses a [http://en.wikipedia.org/wiki/Linear_congruential_generator Linear Congruential Generator] (not a very strong choice). The multiplicative constant is &amp;lt;code&amp;gt;0x45&amp;lt;/code&amp;gt;, and the additive constant is &amp;lt;code&amp;gt;0x1111&amp;lt;/code&amp;gt;. It appears that the game uses a signed dword to store the seed, which doesn&#039;t really matter; it shouldn&#039;t affect anything. (It means that the modulus is effectively &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
 GRNG[n+1] = (GRNG[n] * 0x45 + 0x1111) &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
The GRNG is seeded with the &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt;, like so:&lt;br /&gt;
&lt;br /&gt;
 GRNG[0] = &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; | (&amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; &amp;lt;&amp;lt; 16)&lt;br /&gt;
&lt;br /&gt;
The keystream is composed of the lower byte of the high word of successive GRNG values.&lt;br /&gt;
&lt;br /&gt;
 keystream[n] = (GRNG[n] &amp;gt;&amp;gt; 16) &amp;amp; 0xff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the plaintext to get the ciphertext. &amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the ciphertext to get the plaintext.&lt;br /&gt;
&lt;br /&gt;
The entire data string is then encoded with [http://en.wikipedia.org/wiki/Base64#URL_applications urlsafe-base64].&lt;br /&gt;
&lt;br /&gt;
==Conversation==&lt;br /&gt;
&lt;br /&gt;
The first request the game makes is to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/info.asp&amp;lt;/code&amp;gt;. The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
Platinum, Heart Gold, and Soul Silver will then make a request to &amp;lt;code&amp;gt;/pokemondpds/common/setProfile.asp&amp;lt;/code&amp;gt;.  The server responds with eight NULs (0x00000000 0x00000000).&lt;br /&gt;
&lt;br /&gt;
After the above step(s) or &#039;&#039;&#039;performing any of the tasks below&#039;&#039;&#039; other than searching, the game makes a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/result.asp&amp;lt;/code&amp;gt;.  If the game has had a Pokémon sent to it via a trade, the server responds with the entire encrypted [[Pokemon NDS Structure|Pokémon save struct]].  Otherwise, if there is a Pokémon deposited in the GTS, it responds with 0x0004; if not, it responds with 0x0005.&lt;br /&gt;
&lt;br /&gt;
===Receiving a traded Pokémon===&lt;br /&gt;
&lt;br /&gt;
If the game receives a Pokémon from a successful trade as a response from &amp;lt;code&amp;gt;result.asp&amp;lt;/code&amp;gt;, it next requests &amp;lt;code&amp;gt;/pokemondpds/worldexchange/delete.asp&amp;lt;/code&amp;gt;.  The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
====A note on sendpkm.py====&lt;br /&gt;
&lt;br /&gt;
After doing the above, some Platinum, Heart Gold, and Soul Silver games will report a communication error and dump the player back to the title screen.  The Pokémon is still successfully received.  At least one person with HG/SS has received a Pokémon from a fake server without getting the error, and Diamond/Pearl have never been reported to have the problem.&lt;br /&gt;
&lt;br /&gt;
===Depositing a Pokémon===&lt;br /&gt;
&lt;br /&gt;
Pokémon are offered on the GTS by requesting &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post.asp&amp;lt;/code&amp;gt;.  The sent data is 300 bytes long, and includes the Pokémon struct. If the Pokémon is rejected by the server, the response is 0x000c; otherwise, if the deposit is successful, 0x0001.&lt;br /&gt;
&lt;br /&gt;
The game then saves. After the save is complete, it issues a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post_finish.asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the sent data is 444 bytes long and as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| Checksum (sum of all bytes xor 0x2db842b2)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x08&lt;br /&gt;
| pid&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09-0x0A&lt;br /&gt;
| Data length (minus the 12 bytes of header)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0xE8&lt;br /&gt;
| Encrypted [[Pokemon Black/White NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xE9-0xF7&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8-0x9&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFA&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFB&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFC-0xFD&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFE&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x100&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x101&lt;br /&gt;
| Unknown / Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x102&lt;br /&gt;
| Trainer gender&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x103&lt;br /&gt;
| Trainer nature&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x104-0x107&lt;br /&gt;
| Always 0?&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x108-0x117&lt;br /&gt;
| Timestamp placeholder, always 0 (set by server)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x118-0x119&lt;br /&gt;
| Trainer ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11A-0x11B&lt;br /&gt;
| Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11C-0x12B&lt;br /&gt;
| OT Name (Unicode, must end with 0xFFFF)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12C&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12D&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12E&lt;br /&gt;
| [[#Trainer Class|Trainer class/sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12F&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x130&lt;br /&gt;
| Game version&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x131&lt;br /&gt;
| Region/language&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x132-0x137&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x138-0x1B7&lt;br /&gt;
| Mystery data (encrypted?)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B8-0x1BB&lt;br /&gt;
| Terminator (0x80000000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Retrieving the deposited Pokémon===&lt;br /&gt;
&lt;br /&gt;
Checking on the deposited Pokémon is apparently done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/get.asp&amp;lt;/code&amp;gt;.  The response appears to be a [[Pokemon NDS Structure|Pokémon save struct]].&lt;br /&gt;
&lt;br /&gt;
Retrieving the deposited Pokémon is done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/return.asp&amp;lt;/code&amp;gt;.  The response is merely 0x0001; the actual Pokémon data is taken from the &amp;lt;code&amp;gt;get.asp&amp;lt;/code&amp;gt; request.&lt;br /&gt;
&lt;br /&gt;
===Searching===&lt;br /&gt;
&lt;br /&gt;
Searching is done through &amp;lt;code&amp;gt;/pokemondpds/worldexchange/search.asp&amp;lt;/code&amp;gt;.  The sent data is either 15 or 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
The server responds with a full 292-byte Pokémon struct for each result.  If there are &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; results, the response will be 292 * &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; bytes long.  If there are no results, the server will give an empty response (0 bytes).&lt;br /&gt;
&lt;br /&gt;
==Pokémon struct==&lt;br /&gt;
&lt;br /&gt;
The Pokémon data for the Generation IV GTS is 292 bytes—56 bytes larger than a party Pokémon struct. The extra 56 bytes are GTS-specific data, such as the player&#039;s name &amp;amp; country, and what Pokémon they are requesting. In Generation IV, the trainer name is encoded with the Pokémon character table, while in Generation V, the trainer name is Unicode encoded.&lt;br /&gt;
&lt;br /&gt;
They are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Generation IV Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| Timestamp - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| Timestamp - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x2F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30-0x31&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| [[#Trainer Class|Trainer&#039;s Sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data for the Generation V GTS is 296 bytes and adds the trainer&#039;s secret ID, an additional two unknown bytes at the end, and shifts the position of the trainer name to after the trainer and secret IDs.&lt;br /&gt;
&lt;br /&gt;
=== Generation V Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x21&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22-0x23&lt;br /&gt;
| Trainer&#039;s Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x33&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x39&lt;br /&gt;
| [[Pokemon Black/White NDS Structure#Original Language|Language]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3A-0x3B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pokémon Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Female&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Either/neither&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trainer Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Female&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Timestamp Format ===&lt;br /&gt;
The timestamps are set by the server, and are always PST (UTC-8).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Year&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Month&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Day&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Hour&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Minute&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Second&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trainer Class ===&lt;br /&gt;
(for generation 5)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Class&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Youngster / Lass&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Ace Trainer&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Pokémon Ranger&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Pokémon Breeder&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Researcher&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Hiker / Parasol Lady&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Skinhead / Nurse&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Day-Care student&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Game Version ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| Diamond&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Pearl&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C&lt;br /&gt;
| Platinum&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| HeartGold&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| SoulSilver&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| Black&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| White&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4206</id>
		<title>GTS protocol</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4206"/>
		<updated>2011-04-19T14:46:14Z</updated>

		<summary type="html">&lt;p&gt;Xfr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Communication with the GTS is done over regular HTTP with http://gamestats2.gs.nintendowifi.net/.  The same protocol is used for all five Gen IV games.&lt;br /&gt;
&lt;br /&gt;
==HTTP headers==&lt;br /&gt;
&lt;br /&gt;
The games don&#039;t seem to care about these at all.  The GTS sends back a bunch of boilerplate response headers, but the game happily accepts a response with only a Content-Length.&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
&lt;br /&gt;
All requests to the server are GET requests of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; followed by &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;. The hash variable in the latter, is a hash of the string returned by the former, as described bellow.&lt;br /&gt;
&lt;br /&gt;
===pid===&lt;br /&gt;
&lt;br /&gt;
The pid is an unsigned 32-bit integer that appears to uniquely identify a game cartridge. Although this has not been confirmed entirely:&lt;br /&gt;
Your PID is generated when you get your friendcode for the first time and is set to: friendcode &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
When you change the device and are forced to change your friendcode with it, your PID doesn&#039;t change but you get a new friendcode. Your new Friend Code appears to be set by appending a random byte (likely sent from Nintendo&#039;s servers) to the end of your PID. For example, nicholas&#039;s Soul Silver PID is 258303618 (0x8266650f)and his Friend Code is 4297 5503 3218 (0xf8266650f64) taking endianness into account.&lt;br /&gt;
&lt;br /&gt;
===Challenge/response===&lt;br /&gt;
&lt;br /&gt;
Before each &amp;quot;real&amp;quot; request, the game sends a request of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; and the server responds with a 32-byte challenge token. The game computes &amp;lt;code&amp;gt;sha1(&amp;quot;sAdeqWo3voLeC5r16DYv&amp;quot; + token)&amp;lt;/code&amp;gt; and uses that as the &amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt; value which it sends to the server. The &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt; parameter is encrypted, as explained further down.&lt;br /&gt;
&lt;br /&gt;
For 5th gen GTS, the hash is instead, generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot; + token)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is, each request looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with &amp;lt;var&amp;gt;token&amp;lt;/var&amp;gt;&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;sha1(...)&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with payload&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&lt;br /&gt;
The data sent to the server consists of a &#039;&#039;&#039;checksum&#039;&#039;&#039;, your &#039;&#039;&#039;pid&#039;&#039;&#039;, and a &#039;&#039;&#039;payload&#039;&#039;&#039;. The 5th gen GTS also adds the length of the payload, after the pid.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the server must append to all its responses a footer generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;+urlsafe_base64(response)+&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Checksum===&lt;br /&gt;
&lt;br /&gt;
The checksum is a 32-bit integer, computed by simply taking the sum of every byte of the pid and payload.&lt;br /&gt;
&lt;br /&gt;
It is the first four bytes of the data, xor-ed with &amp;lt;code&amp;gt;0x4a3b2c1d&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x2db842b2&amp;lt;/code&amp;gt; for 5th gen) and packed in network byte order (big-endian).&lt;br /&gt;
&lt;br /&gt;
===Payload===&lt;br /&gt;
The pid and payload are encrypted with a [http://en.wikipedia.org/wiki/Stream_cipher stream cipher] in for the 4th gen protocol.&lt;br /&gt;
&lt;br /&gt;
This encryption algorithm, like others used in the game, uses a [http://en.wikipedia.org/wiki/Linear_congruential_generator Linear Congruential Generator] (not a very strong choice). The multiplicative constant is &amp;lt;code&amp;gt;0x45&amp;lt;/code&amp;gt;, and the additive constant is &amp;lt;code&amp;gt;0x1111&amp;lt;/code&amp;gt;. It appears that the game uses a signed dword to store the seed, which doesn&#039;t really matter; it shouldn&#039;t affect anything. (It means that the modulus is effectively &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
 GRNG[n+1] = (GRNG[n] * 0x45 + 0x1111) &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
The GRNG is seeded with the &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt;, like so:&lt;br /&gt;
&lt;br /&gt;
 GRNG[0] = &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; | (&amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; &amp;lt;&amp;lt; 16)&lt;br /&gt;
&lt;br /&gt;
The keystream is composed of the lower byte of the high word of successive GRNG values.&lt;br /&gt;
&lt;br /&gt;
 keystream[n] = (GRNG[n] &amp;gt;&amp;gt; 16) &amp;amp; 0xff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the plaintext to get the ciphertext. &amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the ciphertext to get the plaintext.&lt;br /&gt;
&lt;br /&gt;
The entire data string is then encoded with [http://en.wikipedia.org/wiki/Base64#URL_applications urlsafe-base64].&lt;br /&gt;
&lt;br /&gt;
==Conversation==&lt;br /&gt;
&lt;br /&gt;
The first request the game makes is to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/info.asp&amp;lt;/code&amp;gt;. The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
Platinum, Heart Gold, and Soul Silver will then make a request to &amp;lt;code&amp;gt;/pokemondpds/common/setProfile.asp&amp;lt;/code&amp;gt;.  The server responds with eight NULs (0x00000000 0x00000000).&lt;br /&gt;
&lt;br /&gt;
After the above step(s) or &#039;&#039;&#039;performing any of the tasks below&#039;&#039;&#039; other than searching, the game makes a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/result.asp&amp;lt;/code&amp;gt;.  If the game has had a Pokémon sent to it via a trade, the server responds with the entire encrypted [[Pokemon NDS Structure|Pokémon save struct]].  Otherwise, if there is a Pokémon deposited in the GTS, it responds with 0x0004; if not, it responds with 0x0005.&lt;br /&gt;
&lt;br /&gt;
===Receiving a traded Pokémon===&lt;br /&gt;
&lt;br /&gt;
If the game receives a Pokémon from a successful trade as a response from &amp;lt;code&amp;gt;result.asp&amp;lt;/code&amp;gt;, it next requests &amp;lt;code&amp;gt;/pokemondpds/worldexchange/delete.asp&amp;lt;/code&amp;gt;.  The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
====A note on sendpkm.py====&lt;br /&gt;
&lt;br /&gt;
After doing the above, some Platinum, Heart Gold, and Soul Silver games will report a communication error and dump the player back to the title screen.  The Pokémon is still successfully received.  At least one person with HG/SS has received a Pokémon from a fake server without getting the error, and Diamond/Pearl have never been reported to have the problem.&lt;br /&gt;
&lt;br /&gt;
===Depositing a Pokémon===&lt;br /&gt;
&lt;br /&gt;
Pokémon are offered on the GTS by requesting &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post.asp&amp;lt;/code&amp;gt;.  The sent data is 300 bytes long, and includes the Pokémon struct. If the Pokémon is rejected by the server, the response is 0x000c; otherwise, if the deposit is successful, 0x0001.&lt;br /&gt;
&lt;br /&gt;
The game then saves. After the save is complete, it issues a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post_finish.asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the sent data is 444 bytes long and as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| Checksum (sum of all bytes xor 0x2db842b2)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x08&lt;br /&gt;
| pid&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09-0x0A&lt;br /&gt;
| Data length (minus the 12 bytes of header)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0xE8&lt;br /&gt;
| Encrypted [[Pokemon Black/White NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xE9-0xF7&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8-0x9&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFA&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFB&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFC-0xFD&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFE&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x100-0x102&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x103&lt;br /&gt;
| Unknown / seems to be 0x02?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x104-0x107&lt;br /&gt;
| Always 0?&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x108-0x117&lt;br /&gt;
| Timestamp placeholder, always 0 (set by server)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x118-0x119&lt;br /&gt;
| Trainer ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11A-0x11B&lt;br /&gt;
| Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11C-0x12B&lt;br /&gt;
| OT Name (Unicode, must end with 0xFFFF)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12C&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12D&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12E&lt;br /&gt;
| [[#Trainer Class|Trainer class/sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12F&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x130&lt;br /&gt;
| Game version&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x131&lt;br /&gt;
| Region/language&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x132-0x137&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x138-0x1B7&lt;br /&gt;
| Mystery data (encrypted?)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B8-0x1BB&lt;br /&gt;
| Terminator (0x80000000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Retrieving the deposited Pokémon===&lt;br /&gt;
&lt;br /&gt;
Checking on the deposited Pokémon is apparently done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/get.asp&amp;lt;/code&amp;gt;.  The response appears to be a [[Pokemon NDS Structure|Pokémon save struct]].&lt;br /&gt;
&lt;br /&gt;
Retrieving the deposited Pokémon is done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/return.asp&amp;lt;/code&amp;gt;.  The response is merely 0x0001; the actual Pokémon data is taken from the &amp;lt;code&amp;gt;get.asp&amp;lt;/code&amp;gt; request.&lt;br /&gt;
&lt;br /&gt;
===Searching===&lt;br /&gt;
&lt;br /&gt;
Searching is done through &amp;lt;code&amp;gt;/pokemondpds/worldexchange/search.asp&amp;lt;/code&amp;gt;.  The sent data is either 15 or 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
The server responds with a full 292-byte Pokémon struct for each result.  If there are &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; results, the response will be 292 * &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; bytes long.  If there are no results, the server will give an empty response (0 bytes).&lt;br /&gt;
&lt;br /&gt;
==Pokémon struct==&lt;br /&gt;
&lt;br /&gt;
The Pokémon data for the Generation IV GTS is 292 bytes—56 bytes larger than a party Pokémon struct. The extra 56 bytes are GTS-specific data, such as the player&#039;s name &amp;amp; country, and what Pokémon they are requesting. In Generation IV, the trainer name is encoded with the Pokémon character table, while in Generation V, the trainer name is Unicode encoded.&lt;br /&gt;
&lt;br /&gt;
They are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Generation IV Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| Timestamp - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| Timestamp - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x2F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30-0x31&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| [[#Trainer Class|Trainer&#039;s Sprite]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data for the Generation V GTS is 296 bytes and adds the trainer&#039;s secret ID, an additional two unknown bytes at the end, and shifts the position of the trainer name to after the trainer and secret IDs.&lt;br /&gt;
&lt;br /&gt;
=== Generation V Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x21&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22-0x23&lt;br /&gt;
| Trainer&#039;s Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x33&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x39&lt;br /&gt;
| [[Pokemon Black/White NDS Structure#Original Language|Language]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3A-0x3B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pokémon Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Female&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Either/neither&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trainer Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Female&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Timestamp Format ===&lt;br /&gt;
The timestamps are set by the server, and are always PST (UTC-8).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Year&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Month&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Day&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Hour&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Minute&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Second&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Trainer Class ===&lt;br /&gt;
(for generation 5)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Class&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Youngster / Lass&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Ace Trainer&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Pokémon Ranger&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Pokémon Breeder&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Researcher&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Hiker / Parasol Lady&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Skinhead / Nurse&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Day-Care student&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Game Version ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| Diamond&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Pearl&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C&lt;br /&gt;
| Platinum&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| HeartGold&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| SoulSilver&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| Black&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| White&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=Pokemon_Black/White_Save_Structure&amp;diff=4162</id>
		<title>Pokemon Black/White Save Structure</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=Pokemon_Black/White_Save_Structure&amp;diff=4162"/>
		<updated>2011-04-13T00:53:21Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Added information on encoding of nickname and OT name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pokémon in the games Pokémon [[Pokémon Black|Black]] and [[Pokemon White|White]] are stored in a 136 byte or 220 byte structures.  All unencrypted values are stored in [[little-endian|little-endian]] format.  The game encrypts the data when it is stored in the [[Pokémon NDS Save File Structure|save file]].  Party Pokémon have additional values to hold current battle stats and conditions.  The information below describes the Pokémon data format.&lt;br /&gt;
&lt;br /&gt;
== Checksum ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Placeholder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Block Shuffling ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Placeholder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Encryption ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Placeholder&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unencrypted bytes ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x03&lt;br /&gt;
| [[Personality value]] (Also known as the [[PID]])&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| &#039;&#039;Unused&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06-0x07&lt;br /&gt;
| Checksum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Encrypted bytes ==&lt;br /&gt;
=== Block A ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08-0x09 &lt;br /&gt;
| [[Nationaldex|National Pokédex ID]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A-0x0B &lt;br /&gt;
| [[item index|Held Item]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x0D&lt;br /&gt;
| [[Original Trainer|OT ID]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0E-0x0F &lt;br /&gt;
| [[Original Trainer|OT Secret ID]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10-0x13&lt;br /&gt;
| [[Experience Points|Experience points]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| Friendship (Steps to Hatch if an egg)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| [[Ability]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x16&lt;br /&gt;
| [[#Markings|Markings]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x17&lt;br /&gt;
| [[#Original Language|Original Language]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x18&lt;br /&gt;
| [[Effort Values#Hit Points|HP Effort Value]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x19&lt;br /&gt;
| [[Effort Values#Attack Points|Attack Effort Value]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1A&lt;br /&gt;
| [[Effort Values#Defense Points|Defense Effort Value]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B&lt;br /&gt;
| [[Effort Values#Speed Points|Speed Effort Value]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C&lt;br /&gt;
| [[Effort Values#Special Attack Points|SP Attack Effort Value]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1D&lt;br /&gt;
| [[Effort Values#Special Defense Points|SP Defense Effort Value]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1E&lt;br /&gt;
| [[Contest Stats#Cool|Cool Contest Value]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1F&lt;br /&gt;
| [[Contest Stats#Beauty|Beauty Contest Value]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20&lt;br /&gt;
| [[Contest Stats#Cute|Cute Contest Value]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x21&lt;br /&gt;
| [[Contest Stats#Smart|Smart Contest Value]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22&lt;br /&gt;
| [[Contest Stats#Tough|Tough Contest Value]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x23&lt;br /&gt;
| [[Contest Stats#Sheen|Sheen Contest Value]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x25&lt;br /&gt;
| [[#Sinnoh Ribbon Set 1|Sinnoh Ribbon Set 1]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26-0x27&lt;br /&gt;
| [[#Sinnoh Ribbon Set 2|Sinnoh Ribbon Set 2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block B ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x28-0x29&lt;br /&gt;
| [[Pokemon Moves|Move 1 ID]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x2A-0x2B&lt;br /&gt;
| [[Pokemon Moves|Move 2 ID]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x2C-0x2D&lt;br /&gt;
| [[Pokemon Moves|Move 3 ID]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x2E-0x2F&lt;br /&gt;
| [[Pokemon Moves|Move 4 ID]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30&lt;br /&gt;
| [[Pokemon Moves#Power Points|Move 1 Current PP]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x31&lt;br /&gt;
| [[Pokemon Moves#Power Points|Move 2 Current PP]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| [[Pokemon Moves#Power Points|Move 3 Current PP]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| [[Pokemon Moves#Power Points|Move 4 Current PP]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34-0x37&lt;br /&gt;
| [[Pokemon Moves#Power Points|Move PP Ups]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38-0x3B&lt;br /&gt;
| Bits 0-29 - [[Individual Values]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Individual Values#Hit Points|HP]] ( [0-31] &amp;lt;&amp;lt; 0 )&amp;lt;br&amp;gt;&lt;br /&gt;
[[Individual Values#Attack Points|Attack]] ( [0-31] &amp;lt;&amp;lt; 5 )&amp;lt;br&amp;gt;&lt;br /&gt;
[[Individual Values#Defense Points|Defense]] ( [0-31] &amp;lt;&amp;lt; 10 )&amp;lt;br&amp;gt;&lt;br /&gt;
[[Individual Values#Speed Points|Speed]] ( [0-31] &amp;lt;&amp;lt; 15 )&amp;lt;br&amp;gt;&lt;br /&gt;
[[Individual Values#Special Attack Points|SP Attack]] ( [0-31] &amp;lt;&amp;lt; 20 )&amp;lt;br&amp;gt;&lt;br /&gt;
[[Individual Values#Special Defense Points|SP Defense]] ( [0-31] &amp;lt;&amp;lt; 25 )&amp;lt;br&amp;gt;&lt;br /&gt;
Bit 30 - IsEgg Flag&amp;lt;br&amp;gt;Bit 31 - IsNicknamed Flag&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C-0x3D&lt;br /&gt;
| [[#Hoenn Ribbon Set 1|Hoenn Ribbon Set 1]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E-0x3F&lt;br /&gt;
| [[#Hoenn Ribbon Set 2|Hoenn Ribbon Set 2]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x40&lt;br /&gt;
| Bit 0 - Fateful Encounter Flag&amp;lt;br&amp;gt;Bit 1 - Female&amp;lt;br&amp;gt;Bit 2 - Genderless&amp;lt;br&amp;gt;Bit 3-7 - [[#Alternate Forms|Alternate Forms]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x41 &lt;br /&gt;
| Nature&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x42&lt;br /&gt;
| HasDreamWorldAbility Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x43&lt;br /&gt;
| &#039;&#039;Unused&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x44-0x45&lt;br /&gt;
| &#039;&#039;Deleted / Unused&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x46-0x47&lt;br /&gt;
| &#039;&#039;Deleted / Unused&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block C ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x48-0x5D&lt;br /&gt;
| [[#Nickname and OT Name|Nickname]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x5E&lt;br /&gt;
| &#039;&#039;Unused&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x5F&lt;br /&gt;
| [[Pokemon Hometown|Hometown]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60-0x61&lt;br /&gt;
| [[#Sinnoh Ribbon Set 3|Sinnoh Ribbon Set 3]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x62-0x63&lt;br /&gt;
| [[#Sinnoh Ribbon Set 4|Sinnoh Ribbon Set 4]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x64-0x67&lt;br /&gt;
| &#039;&#039;Unused&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block D ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x68-0x77 &lt;br /&gt;
| [[#Nickname and OT Name|OT Name]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x78-0x7A &lt;br /&gt;
| Date Egg Received&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x7B-0x7D&lt;br /&gt;
| Date Met&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x7E-0x7F&lt;br /&gt;
| Egg [[Pokemon NDS Locations|Location]] (Diamond/Pearl)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x80-0x81&lt;br /&gt;
| Met At [[Pokemon NDS Locations|Location]] (Diamond/Pearl)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x82&lt;br /&gt;
| [[Pokerus|Pokérus]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x83&lt;br /&gt;
| [http://projectpokemon.org/wiki/List_of_Diamond,_Pearl,_Platinum,_HeartGold_and_SoulSilver_Items_by_Index_Number#Balls Poké Ball]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x84&lt;br /&gt;
| Bit 0-6 - Met At Level&amp;lt;br&amp;gt;Bit 7 - Female OT Gender&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x85&lt;br /&gt;
| [[#Encounter Types|Encounter Type]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x86&lt;br /&gt;
| &#039;&#039;Unused&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x87&lt;br /&gt;
| &#039;&#039;Unused&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Battle Stats ==&lt;br /&gt;
&lt;br /&gt;
The battle stats are encrypted in the same manner, however the seed is not the checksum, it is the PID.&lt;br /&gt;
&lt;br /&gt;
=== Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x88&lt;br /&gt;
| Bits 0-2 - Asleep (0-7 rounds)&amp;lt;br&amp;gt;Bit 3 - Poisoned&amp;lt;br&amp;gt;Bit 4 - Burned&amp;lt;br&amp;gt;Bit 5 - Frozen&amp;lt;br&amp;gt;Bit 6 - Paralyzed&amp;lt;br&amp;gt;Bit 7 - Toxic&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x89&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - Flags - Max Value 0xF0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x8A-0x8B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039;&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x8C&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x8D&lt;br /&gt;
| Capsule Index (Seals)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x8E-0x8F&lt;br /&gt;
| Current HP&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x90-0x91&lt;br /&gt;
| Max HP&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x92-0x93&lt;br /&gt;
| Attack&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x94-0x95&lt;br /&gt;
| Defense&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x96-0x97&lt;br /&gt;
| Speed&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x98-0x99&lt;br /&gt;
| Special Attack&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x9A-0x9B&lt;br /&gt;
| Special Defense&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x9C-0xD3&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - Contains Trash Data&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xD4-0xDB&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - all 0s?&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Original Language ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Language&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1&lt;br /&gt;
| 日本語 (Japan)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x2&lt;br /&gt;
| English (US/UK/AU)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3&lt;br /&gt;
| Français (France/Québec)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Italiano (Italy)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x5&lt;br /&gt;
| Deutsch (Germany)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x7&lt;br /&gt;
| Español (Spain/Latin Americas)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x8&lt;br /&gt;
| 한국어 (South Korea)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Markings ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Marking&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Circle&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Triangle&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Square&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Heart&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10&lt;br /&gt;
| Star&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20&lt;br /&gt;
| Diamond&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Alternate Forms ==&lt;br /&gt;
Alternate forms are stored at offset 0x40 of the Pokemon structure.  Each form follows the pattern of &#039;&#039;index &amp;lt;&amp;lt; 3&#039;&#039; where index starts at zero for the main form.&lt;br /&gt;
&lt;br /&gt;
=== Unown&#039;s Forms ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| A&lt;br /&gt;
| 0x38&lt;br /&gt;
| H&lt;br /&gt;
| 0x70&lt;br /&gt;
| O&lt;br /&gt;
| 0xA8&lt;br /&gt;
| V&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| B&lt;br /&gt;
| 0x40&lt;br /&gt;
| I&lt;br /&gt;
| 0x78&lt;br /&gt;
| P&lt;br /&gt;
| 0xB0&lt;br /&gt;
| W&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10&lt;br /&gt;
| C&lt;br /&gt;
| 0x48&lt;br /&gt;
| J&lt;br /&gt;
| 0x80&lt;br /&gt;
| Q&lt;br /&gt;
| 0xB8&lt;br /&gt;
| X&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x18&lt;br /&gt;
| D&lt;br /&gt;
| 0x50&lt;br /&gt;
| K&lt;br /&gt;
| 0x88&lt;br /&gt;
| R&lt;br /&gt;
| 0xC0&lt;br /&gt;
| Y&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20&lt;br /&gt;
| E&lt;br /&gt;
| 0x58&lt;br /&gt;
| L&lt;br /&gt;
| 0x90&lt;br /&gt;
| S&lt;br /&gt;
| 0xC8&lt;br /&gt;
| Z&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x28&lt;br /&gt;
| F&lt;br /&gt;
| 0x60&lt;br /&gt;
| M&lt;br /&gt;
| 0x98&lt;br /&gt;
| T&lt;br /&gt;
| 0xD0&lt;br /&gt;
| !&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30&lt;br /&gt;
| G&lt;br /&gt;
| 0x68&lt;br /&gt;
| N&lt;br /&gt;
| 0xA0&lt;br /&gt;
| U&lt;br /&gt;
| 0xD8&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Deoxy&#039;s Forms ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Normal&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Attack&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10&lt;br /&gt;
| Defense&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x18&lt;br /&gt;
| Speed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Burmy&#039;s &amp;amp; Wormadam&#039;s Forms ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Plant&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Sandy&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10&lt;br /&gt;
| Trash&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shellos&#039; &amp;amp; Gastrodon&#039;s Forms ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| West&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| East&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Rotom&#039;s Forms ===&lt;br /&gt;
Rotom&#039;s alternate forms will only be displayed in Pokemon Platinum.  Rotom may be traded between Diamond, Pearl, and Platinum without losing the alternate form.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Normal&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Heat&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10&lt;br /&gt;
| Wash&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x18&lt;br /&gt;
| Frost&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20&lt;br /&gt;
| Fan&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x28&lt;br /&gt;
| Cut&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Giratina&#039;s Forms ===&lt;br /&gt;
Giratina&#039;s Origin form will only be displayed in Pokemon Platinum.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Altered&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Origin&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shaymin&#039;s Forms ===&lt;br /&gt;
Shaymin&#039;s Sky form will only be displayed in Pokemon Platinum.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Land&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Sky&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Arceus&#039; Forms ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
! Bit&lt;br /&gt;
! Form&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Normal&lt;br /&gt;
| 0x30&lt;br /&gt;
| Insect&lt;br /&gt;
| 0x60&lt;br /&gt;
| Zap&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Fist&lt;br /&gt;
| 0x38&lt;br /&gt;
| Spooky&lt;br /&gt;
| 0x68&lt;br /&gt;
| Mind&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x10&lt;br /&gt;
| Sky&lt;br /&gt;
| 0x40&lt;br /&gt;
| Iron&lt;br /&gt;
| 0x70&lt;br /&gt;
| Icicle&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x18&lt;br /&gt;
| Toxic&lt;br /&gt;
| 0x48&lt;br /&gt;
| Flame&lt;br /&gt;
| 0x78&lt;br /&gt;
| Draco&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20&lt;br /&gt;
| Earth&lt;br /&gt;
| 0x50&lt;br /&gt;
| Splash&lt;br /&gt;
| 0x80&lt;br /&gt;
| Dread&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x28&lt;br /&gt;
| Stone&lt;br /&gt;
| 0x58&lt;br /&gt;
| Meadow&lt;br /&gt;
| 0x4C&lt;br /&gt;
| Curse&lt;br /&gt;
|}&lt;br /&gt;
== Nickname and OT Name ==&lt;br /&gt;
&lt;br /&gt;
Since generation 5, the nickname and OT name are encoded with Unicode instead of a &lt;br /&gt;
game-specific character map. However, there are some exceptions, which are listed&lt;br /&gt;
below. Note that unlike generation 4, the last two bytes are always 0xFFFF, even&lt;br /&gt;
if there already was a terminator before. There are no trash bytes in generation 5&lt;br /&gt;
pokemon but the Poké Transfer will keep existing trash bytes (except the last two)&lt;br /&gt;
even if the pokemon evolves in generation 5.&lt;br /&gt;
&lt;br /&gt;
=== Characters that can be replaced in Unicode ===&lt;br /&gt;
In the game, those are half-width versions of existing Unicode characters used&lt;br /&gt;
in non-japanese versions with long name support.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Original character&lt;br /&gt;
! Unicode index&lt;br /&gt;
! Replace with&lt;br /&gt;
! Unicode index&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑽&lt;br /&gt;
| 0x247d&lt;br /&gt;
| ☂&lt;br /&gt;
| 0x2602&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑻&lt;br /&gt;
| 0x247b&lt;br /&gt;
| ☁&lt;br /&gt;
| 0x2601&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑺&lt;br /&gt;
| 0x247a&lt;br /&gt;
| ☀&lt;br /&gt;
| 0x2600&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑹&lt;br /&gt;
| 0x2479&lt;br /&gt;
| ♪&lt;br /&gt;
| 0x266a&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑸&lt;br /&gt;
| 0x2478&lt;br /&gt;
| ◇&lt;br /&gt;
| 0x25c7&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑷&lt;br /&gt;
| 0x2477&lt;br /&gt;
| △&lt;br /&gt;
| 0x25b3&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑶&lt;br /&gt;
| 0x2476&lt;br /&gt;
| □&lt;br /&gt;
| 0x25a1&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑵&lt;br /&gt;
| 0x2475&lt;br /&gt;
| ○&lt;br /&gt;
| 0x25cb&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑴&lt;br /&gt;
| 0x2474&lt;br /&gt;
| ◎&lt;br /&gt;
| 0x25ce&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑳&lt;br /&gt;
| 0x2473&lt;br /&gt;
| ★&lt;br /&gt;
| 0x2605&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑲&lt;br /&gt;
| 0x2472&lt;br /&gt;
| ♦&lt;br /&gt;
| 0x2666&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑱&lt;br /&gt;
| 0x2471&lt;br /&gt;
| ♥&lt;br /&gt;
| 0x2665&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑰&lt;br /&gt;
| 0x2470&lt;br /&gt;
| ♣&lt;br /&gt;
| 0x2663&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑯&lt;br /&gt;
| 0x246f&lt;br /&gt;
| ♠&lt;br /&gt;
| 0x2660&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑮&lt;br /&gt;
| 0x246e&lt;br /&gt;
| ♀&lt;br /&gt;
| 0x2640&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑭&lt;br /&gt;
| 0x246d&lt;br /&gt;
| ♂&lt;br /&gt;
| 0x2642&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑬&lt;br /&gt;
| 0x246c&lt;br /&gt;
| …&lt;br /&gt;
| 0x2026&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑨&lt;br /&gt;
| 0x2468&lt;br /&gt;
| ÷&lt;br /&gt;
| 0xf7&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑧&lt;br /&gt;
| 0x2467&lt;br /&gt;
| ×&lt;br /&gt;
| 0xd7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Pokémon exclusive characters ===&lt;br /&gt;
Some game-exclusive characters do not exist in Unicode and should be replaced with bitmaps.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Original character&lt;br /&gt;
! Unicode index&lt;br /&gt;
! Pokémon exclusive&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| $&lt;br /&gt;
| 0x24&lt;br /&gt;
| [[File:gen5_unicode_36.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⇒&lt;br /&gt;
| 0x21d2&lt;br /&gt;
| [[File:gen5_unicode_8658.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⇔&lt;br /&gt;
| 0x21d4&lt;br /&gt;
| [[File:gen5_unicode_8660.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ∀&lt;br /&gt;
| 0x2200&lt;br /&gt;
| [[File:gen5_unicode_8704.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ∃&lt;br /&gt;
| 0x2203&lt;br /&gt;
| [[File:gen5_unicode_8707.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ∧&lt;br /&gt;
| 0x2227&lt;br /&gt;
| [[File:gen5_unicode_8743.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ∨&lt;br /&gt;
| 0x2228&lt;br /&gt;
| [[File:gen5_unicode_8744.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ①&lt;br /&gt;
| 0x2460&lt;br /&gt;
| [[File:gen5_unicode_9312.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ②&lt;br /&gt;
| 0x2461&lt;br /&gt;
| [[File:gen5_unicode_8744.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ③&lt;br /&gt;
| 0x2462&lt;br /&gt;
| [[File:9314.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ④&lt;br /&gt;
| 0x2463&lt;br /&gt;
| [[File:gen5_unicode_8658.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑤&lt;br /&gt;
| 0x2464&lt;br /&gt;
| [[File:gen5_unicode_8660.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑥&lt;br /&gt;
| 0x2465&lt;br /&gt;
| [[File:gen5_unicode_8704.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑦&lt;br /&gt;
| 0x2466&lt;br /&gt;
| [[File:gen5_unicode_8707.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑩&lt;br /&gt;
| 0x2469&lt;br /&gt;
| [[File:gen5_unicode_9321.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑪&lt;br /&gt;
| 0x246a&lt;br /&gt;
| [[File:gen5_unicode_9322.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑫&lt;br /&gt;
| 0x246b&lt;br /&gt;
| [[File:9323.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑾&lt;br /&gt;
| 0x247e&lt;br /&gt;
| [[File:gen5_unicode_9312.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⑿&lt;br /&gt;
| 0x247f&lt;br /&gt;
| [[File:gen5_unicode_9343.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒀&lt;br /&gt;
| 0x2480&lt;br /&gt;
| [[File:gen5_unicode_9344.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒁&lt;br /&gt;
| 0x2481&lt;br /&gt;
| [[File:9345.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒂&lt;br /&gt;
| 0x2482&lt;br /&gt;
| [[File:gen5_unicode_9346.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒃&lt;br /&gt;
| 0x2483&lt;br /&gt;
| [[File:gen5_unicode_9347.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒄&lt;br /&gt;
| 0x2484&lt;br /&gt;
| [[File:gen5_unicode_9348.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒅&lt;br /&gt;
| 0x2485&lt;br /&gt;
| [[File:9349.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒆&lt;br /&gt;
| 0x2486&lt;br /&gt;
| [[File:gen5_unicode_9350.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ⒇&lt;br /&gt;
| 0x2487&lt;br /&gt;
| [[File:gen5_unicode_9351.png]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| ￢&lt;br /&gt;
| 0xffe2&lt;br /&gt;
| [[File:9314.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Encounter Types ==&lt;br /&gt;
&lt;br /&gt;
Encounter types are not used in Black and White. Pokeshifted Pokemon keep their Encounter Type hex.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0&lt;br /&gt;
| Pal Park, Egg, Hatched, Special Event&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x2&lt;br /&gt;
| Tall Grass&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Dialga/Palkia In-Game Event&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x5&lt;br /&gt;
| Cave, Hall of Origin&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x7&lt;br /&gt;
| Surfing, Fishing&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x9&lt;br /&gt;
| Building&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xA&lt;br /&gt;
| Great Marsh (Safari Zone)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xC&lt;br /&gt;
| Starter, Fossil, Gift (Eevee)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Ribbons ==&lt;br /&gt;
Diamond, Pearl, and Platinum store the ribbon information as [[Bitfields|bitfields]] in 1-byte words.  Given below are the bytewise representation of the ribbon bitfields.&lt;br /&gt;
&lt;br /&gt;
=== Sinnoh Ribbon Set 1 ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x01&lt;br /&gt;
| Sinnoh Champ Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x02&lt;br /&gt;
| Ability Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x04&lt;br /&gt;
| Great Ability Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x08&lt;br /&gt;
| Double Ability Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x10&lt;br /&gt;
| Multi Ability Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x20&lt;br /&gt;
| Pair Ability Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x40&lt;br /&gt;
| World Ability Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24 &amp;amp; 0x80&lt;br /&gt;
| Alert Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x01&lt;br /&gt;
| Shock Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x02&lt;br /&gt;
| Downcast Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x04&lt;br /&gt;
| Careless Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x08&lt;br /&gt;
| Relax Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x10&lt;br /&gt;
| Snooze Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x20&lt;br /&gt;
| Smile Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x40&lt;br /&gt;
| Gorgeous Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x25 &amp;amp; 0x80&lt;br /&gt;
| Royal Ribbon&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sinnoh Ribbon Set 2 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x01&lt;br /&gt;
| Gorgeous Royal Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x02&lt;br /&gt;
| Footprint Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x04&lt;br /&gt;
| Record Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x08&lt;br /&gt;
| History Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x10&lt;br /&gt;
| Legend Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x20&lt;br /&gt;
| Red Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x40&lt;br /&gt;
| Green Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x26 &amp;amp; 0x80&lt;br /&gt;
| Blue Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x27 &amp;amp; 0x01&lt;br /&gt;
| Festival Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x27 &amp;amp; 0x02&lt;br /&gt;
| Carnival Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x27 &amp;amp; 0x04&lt;br /&gt;
| Classic Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x27 &amp;amp; 0x08&lt;br /&gt;
| Premier Ribbon&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sinnoh Ribbon Set 3 ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x01&lt;br /&gt;
| Cool Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x02&lt;br /&gt;
| Cool Ribbon Great&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x04&lt;br /&gt;
| Cool Ribbon Ultra&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x08&lt;br /&gt;
| Cool Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x10&lt;br /&gt;
| Beauty Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x20&lt;br /&gt;
| Beauty Ribbon Great&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x40&lt;br /&gt;
| Beauty Ribbon Ultra&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x60 &amp;amp; 0x80&lt;br /&gt;
| Beauty Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x01&lt;br /&gt;
| Cute Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x02&lt;br /&gt;
| Cute Ribbon Great&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x04&lt;br /&gt;
| Cute Ribbon Ultra&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x08&lt;br /&gt;
| Cute Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x10&lt;br /&gt;
| Smart Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x20&lt;br /&gt;
| Smart Ribbon Great&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x40&lt;br /&gt;
| Smart Ribbon Ultra&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x61 &amp;amp; 0x80&lt;br /&gt;
| Smart Ribbon Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sinnoh Ribbon Set 4 ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x62 &amp;amp; 0x01&lt;br /&gt;
| Tough Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x62 &amp;amp; 0x02&lt;br /&gt;
| Tough Ribbon Great&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x62 &amp;amp; 0x04&lt;br /&gt;
| Tough Ribbon Ultra&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x62 &amp;amp; 0x08&lt;br /&gt;
| Tough Ribbon Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hoenn Ribbon Set 1 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x01&lt;br /&gt;
| Cool Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x02&lt;br /&gt;
| Cool Ribbon Super&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x04&lt;br /&gt;
| Cool Ribbon Hyper&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x08&lt;br /&gt;
| Cool Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x10&lt;br /&gt;
| Beauty Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x20&lt;br /&gt;
| Beauty Ribbon Super&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x40&lt;br /&gt;
| Beauty Ribbon Hyper&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3C &amp;amp; 0x80&lt;br /&gt;
| Beauty Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x01&lt;br /&gt;
| Cute Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x02&lt;br /&gt;
| Cute Ribbon Super&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x04&lt;br /&gt;
| Cute Ribbon Hyper&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x08&lt;br /&gt;
| Cute Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x10&lt;br /&gt;
| Smart Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x20&lt;br /&gt;
| Smart Ribbon Super&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x40&lt;br /&gt;
| Smart Ribbon Hyper&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3D &amp;amp; 0x80&lt;br /&gt;
| Smart Ribbon Master&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hoenn Ribbon Set 2 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
! Bit&lt;br /&gt;
! Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x01&lt;br /&gt;
| Tough Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x02&lt;br /&gt;
| Tough Ribbon Super&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x04&lt;br /&gt;
| Tough Ribbon Hyper&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x08&lt;br /&gt;
| Tough Ribbon Master&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x10&lt;br /&gt;
| Champion Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x20&lt;br /&gt;
| Winning Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x40&lt;br /&gt;
| Victory Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3F &amp;amp; 0x80&lt;br /&gt;
| Artist Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x01&lt;br /&gt;
| Effort Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x02&lt;br /&gt;
| Marine Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x04&lt;br /&gt;
| Land Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x08&lt;br /&gt;
| Sky Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x10&lt;br /&gt;
| Country Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x20&lt;br /&gt;
| National Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x40&lt;br /&gt;
| Earth Ribbon&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3E &amp;amp; 0x80&lt;br /&gt;
| World Ribbon&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Save File Location ==&lt;br /&gt;
The party Pokémon are stored in the [[Pokémon NDS Save File Structure|save file]] beginning at offset 0x00098 for the first small block, and 0x40098 for the second small block.&lt;br /&gt;
&lt;br /&gt;
In the first small save block, the first Daycare Pokémon is located at 0x0141C, and the second is located at 0x01508.  In the second small block, the first Daycare Pokémon is located at 0x4141C, and the second is located at 0x41508.&lt;br /&gt;
&lt;br /&gt;
In the first small save block, the Pal Park Pokémon are stored beginning at 0x0BA28.  In the second small save block, the Pal Park Pokémon are stored beginning at 0x4BA28.&lt;br /&gt;
&lt;br /&gt;
Each party and Daycare Pokémon is 220 bytes in size.&lt;br /&gt;
&lt;br /&gt;
The PC storage Pokémon are stored in the save file from Box 1 to Box 18.  The offset starts at 0x0C104 for the first big block and 0x4C104 for the second big block.  Each PC stored Pokémon is 136 bytes in size.&lt;br /&gt;
&lt;br /&gt;
[[Category:Structures]]&lt;br /&gt;
[[Category:Game Mechanics]]&lt;br /&gt;
[[Category:ROM Research]]&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9351.png&amp;diff=4161</id>
		<title>File:Gen5 unicode 9351.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9351.png&amp;diff=4161"/>
		<updated>2011-04-13T00:25:49Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Mn symbol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Mn symbol&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9350.png&amp;diff=4160</id>
		<title>File:Gen5 unicode 9350.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9350.png&amp;diff=4160"/>
		<updated>2011-04-13T00:25:29Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Pk symbol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Pk symbol&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9349.png&amp;diff=4159</id>
		<title>File:Gen5 unicode 9349.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9349.png&amp;diff=4159"/>
		<updated>2011-04-13T00:25:08Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Exponent &amp;quot;e&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Exponent &amp;quot;e&amp;quot;&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9348.png&amp;diff=4158</id>
		<title>File:Gen5 unicode 9348.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9348.png&amp;diff=4158"/>
		<updated>2011-04-13T00:24:49Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Half-length sleep symbol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Half-length sleep symbol&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9347.png&amp;diff=4157</id>
		<title>File:Gen5 unicode 9347.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9347.png&amp;diff=4157"/>
		<updated>2011-04-13T00:24:29Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Half-length down arrow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Half-length down arrow&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9346.png&amp;diff=4156</id>
		<title>File:Gen5 unicode 9346.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9346.png&amp;diff=4156"/>
		<updated>2011-04-13T00:24:06Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Half-length up arrow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Half-length up arrow&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9345.png&amp;diff=4155</id>
		<title>File:Gen5 unicode 9345.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9345.png&amp;diff=4155"/>
		<updated>2011-04-13T00:23:42Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Half-length angry face&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Half-length angry face&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9344.png&amp;diff=4154</id>
		<title>File:Gen5 unicode 9344.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9344.png&amp;diff=4154"/>
		<updated>2011-04-13T00:23:20Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Half-length scared face&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Half-length scared face&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9343.png&amp;diff=4153</id>
		<title>File:Gen5 unicode 9343.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9343.png&amp;diff=4153"/>
		<updated>2011-04-13T00:22:55Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Half-width laughing face&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Half-width laughing face&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9323.png&amp;diff=4152</id>
		<title>File:Gen5 unicode 9323.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9323.png&amp;diff=4152"/>
		<updated>2011-04-13T00:21:39Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Exponent &amp;quot;r&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Exponent &amp;quot;r&amp;quot;&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9322.png&amp;diff=4151</id>
		<title>File:Gen5 unicode 9322.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9322.png&amp;diff=4151"/>
		<updated>2011-04-13T00:21:21Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Exponent &amp;quot;re&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Exponent &amp;quot;re&amp;quot;&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9321.png&amp;diff=4150</id>
		<title>File:Gen5 unicode 9321.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9321.png&amp;diff=4150"/>
		<updated>2011-04-13T00:21:00Z</updated>

		<summary type="html">&lt;p&gt;Xfr: exponent &amp;quot;er&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
exponent &amp;quot;er&amp;quot;&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9314.png&amp;diff=4149</id>
		<title>File:Gen5 unicode 9314.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9314.png&amp;diff=4149"/>
		<updated>2011-04-13T00:20:30Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Scared face&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Scared face&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9312.png&amp;diff=4148</id>
		<title>File:Gen5 unicode 9312.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_9312.png&amp;diff=4148"/>
		<updated>2011-04-13T00:19:20Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Smiling face 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Smiling face 2&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8744.png&amp;diff=4147</id>
		<title>File:Gen5 unicode 8744.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8744.png&amp;diff=4147"/>
		<updated>2011-04-13T00:18:56Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Laughing face&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Laughing face&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8743.png&amp;diff=4146</id>
		<title>File:Gen5 unicode 8743.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8743.png&amp;diff=4146"/>
		<updated>2011-04-13T00:18:34Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Smiling face&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Smiling face&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8707.png&amp;diff=4145</id>
		<title>File:Gen5 unicode 8707.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8707.png&amp;diff=4145"/>
		<updated>2011-04-13T00:18:13Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Sleep symol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Sleep symol&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8704.png&amp;diff=4144</id>
		<title>File:Gen5 unicode 8704.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8704.png&amp;diff=4144"/>
		<updated>2011-04-13T00:17:47Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Downwards-pointing arrow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Downwards-pointing arrow&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8660.png&amp;diff=4143</id>
		<title>File:Gen5 unicode 8660.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8660.png&amp;diff=4143"/>
		<updated>2011-04-13T00:17:13Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Upwards-pointing arrow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Upwards-pointing arrow&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8658.png&amp;diff=4142</id>
		<title>File:Gen5 unicode 8658.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_8658.png&amp;diff=4142"/>
		<updated>2011-04-13T00:16:35Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Angry-face smiley&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Angry-face smiley&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_36.png&amp;diff=4141</id>
		<title>File:Gen5 unicode 36.png</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=File:Gen5_unicode_36.png&amp;diff=4141"/>
		<updated>2011-04-13T00:15:51Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Pokédollar symbol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Pokédollar symbol&lt;br /&gt;
== Copyright status: ==&lt;br /&gt;
&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Non-free game screenshot}}&lt;br /&gt;
== Source: ==&lt;br /&gt;
Pokémon Black&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4039</id>
		<title>GTS protocol</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4039"/>
		<updated>2011-03-17T04:59:32Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Added gen5 server footer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Communication with the GTS is done over regular HTTP with http://gamestats2.gs.nintendowifi.net/.  The same protocol is used for all five Gen IV games.&lt;br /&gt;
&lt;br /&gt;
==HTTP headers==&lt;br /&gt;
&lt;br /&gt;
The games don&#039;t seem to care about these at all.  The GTS sends back a bunch of boilerplate response headers, but the game happily accepts a response with only a Content-Length.&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
&lt;br /&gt;
All requests to the server are GET requests of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; followed by &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;. The hash variable in the latter, is a hash of the string returned by the former, as described bellow.&lt;br /&gt;
&lt;br /&gt;
===pid===&lt;br /&gt;
&lt;br /&gt;
The pid is an unsigned 32-bit integer that appears to uniquely identify a game cartridge. Although this has not been confirmed entirely:&lt;br /&gt;
Your PID is generated when you get your friendcode for the first time and is set to: friendcode &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
When you change the device and are forced to change your friendcode with it, your PID doesn&#039;t change but you get a new friendcode. Your new Friend Code appears to be set by appending a random byte (likely sent from Nintendo&#039;s servers) to the end of your PID. For example, nicholas&#039;s Soul Silver PID is 258303618 (0x8266650f)and his Friend Code is 4297 5503 3218 (0xf8266650f64) taking endianness into account.&lt;br /&gt;
&lt;br /&gt;
===Challenge/response===&lt;br /&gt;
&lt;br /&gt;
Before each &amp;quot;real&amp;quot; request, the game sends a request of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; and the server responds with a 32-byte challenge token. The game computes &amp;lt;code&amp;gt;sha1(&amp;quot;sAdeqWo3voLeC5r16DYv&amp;quot; + token)&amp;lt;/code&amp;gt; and uses that as the &amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt; value which it sends to the server. The &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt; parameter is encrypted, as explained further down.&lt;br /&gt;
&lt;br /&gt;
For 5th gen GTS, the hash is instead, generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot; + token)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is, each request looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with &amp;lt;var&amp;gt;token&amp;lt;/var&amp;gt;&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;sha1(...)&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with payload&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&lt;br /&gt;
The data sent to the server consists of a &#039;&#039;&#039;checksum&#039;&#039;&#039;, your &#039;&#039;&#039;pid&#039;&#039;&#039;, and a &#039;&#039;&#039;payload&#039;&#039;&#039;. The 5th gen GTS also adds the length of the payload, after the pid.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the server must append to all its responses a footer generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;+urlsafe_base64(response)+&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot;)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Checksum===&lt;br /&gt;
&lt;br /&gt;
The checksum is a 32-bit integer, computed by simply taking the sum of every byte of the pid and payload.&lt;br /&gt;
&lt;br /&gt;
It is the first four bytes of the data, xor-ed with &amp;lt;code&amp;gt;0x4a3b2c1d&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x2db842b2&amp;lt;/code&amp;gt; for 5th gen) and packed in network byte order (big-endian).&lt;br /&gt;
&lt;br /&gt;
===Payload===&lt;br /&gt;
The pid and payload are encrypted with a [http://en.wikipedia.org/wiki/Stream_cipher stream cipher] in for the 4th gen protocol.&lt;br /&gt;
&lt;br /&gt;
This encryption algorithm, like others used in the game, uses a [http://en.wikipedia.org/wiki/Linear_congruential_generator Linear Congruential Generator] (not a very strong choice). The multiplicative constant is &amp;lt;code&amp;gt;0x45&amp;lt;/code&amp;gt;, and the additive constant is &amp;lt;code&amp;gt;0x1111&amp;lt;/code&amp;gt;. It appears that the game uses a signed dword to store the seed, which doesn&#039;t really matter; it shouldn&#039;t affect anything. (It means that the modulus is effectively &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
 GRNG[n+1] = (GRNG[n] * 0x45 + 0x1111) &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
The GRNG is seeded with the &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt;, like so:&lt;br /&gt;
&lt;br /&gt;
 GRNG[0] = &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; | (&amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; &amp;lt;&amp;lt; 16)&lt;br /&gt;
&lt;br /&gt;
The keystream is composed of the lower byte of the high word of successive GRNG values.&lt;br /&gt;
&lt;br /&gt;
 keystream[n] = (GRNG[n] &amp;gt;&amp;gt; 16) &amp;amp; 0xff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the plaintext to get the ciphertext. &amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the ciphertext to get the plaintext.&lt;br /&gt;
&lt;br /&gt;
The entire data string is then encoded with [http://en.wikipedia.org/wiki/Base64#URL_applications urlsafe-base64].&lt;br /&gt;
&lt;br /&gt;
==Conversation==&lt;br /&gt;
&lt;br /&gt;
The first request the game makes is to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/info.asp&amp;lt;/code&amp;gt;. The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
Platinum, Heart Gold, and Soul Silver will then make a request to &amp;lt;code&amp;gt;/pokemondpds/common/setProfile.asp&amp;lt;/code&amp;gt;.  The server responds with eight NULs (0x00000000 0x00000000).&lt;br /&gt;
&lt;br /&gt;
After the above step(s) or &#039;&#039;&#039;performing any of the tasks below&#039;&#039;&#039; other than searching, the game makes a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/result.asp&amp;lt;/code&amp;gt;.  If the game has had a Pokémon sent to it via a trade, the server responds with the entire encrypted [[Pokemon NDS Structure|Pokémon save struct]].  Otherwise, if there is a Pokémon deposited in the GTS, it responds with 0x0004; if not, it responds with 0x0005.&lt;br /&gt;
&lt;br /&gt;
===Receiving a traded Pokémon===&lt;br /&gt;
&lt;br /&gt;
If the game receives a Pokémon from a successful trade as a response from &amp;lt;code&amp;gt;result.asp&amp;lt;/code&amp;gt;, it next requests &amp;lt;code&amp;gt;/pokemondpds/worldexchange/delete.asp&amp;lt;/code&amp;gt;.  The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
====A note on sendpkm.py====&lt;br /&gt;
&lt;br /&gt;
After doing the above, some Platinum, Heart Gold, and Soul Silver games will report a communication error and dump the player back to the title screen.  The Pokémon is still successfully received.  At least one person with HG/SS has received a Pokémon from a fake server without getting the error, and Diamond/Pearl have never been reported to have the problem.&lt;br /&gt;
&lt;br /&gt;
===Depositing a Pokémon===&lt;br /&gt;
&lt;br /&gt;
Pokémon are offered on the GTS by requesting &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post.asp&amp;lt;/code&amp;gt;.  The sent data is 300 bytes long, and includes the Pokémon struct. If the Pokémon is rejected by the server, the response is 0x000c; otherwise, if the deposit is successful, 0x0001.&lt;br /&gt;
&lt;br /&gt;
The game then saves. After the save is complete, it issues a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post_finish.asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the sent data is 444 bytes long and as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| Checksum (sum of all bytes xor 0x2db842b2)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x08&lt;br /&gt;
| pid&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09-0x0A&lt;br /&gt;
| Data length (minus the 12 bytes of header)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B-0x0C&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B-0xE8&lt;br /&gt;
| Encrypted [[Pokemon Black/White NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xE9-0xF7&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8-0x9&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFA&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFB&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFC-0xFD&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFE&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x100-0x102&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x103&lt;br /&gt;
| Unknown / seems to be 0x02?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x104-0x107&lt;br /&gt;
| Always 0?&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x108-0x117&lt;br /&gt;
| Timestamp placeholder, always 0 (set by server)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x118-0x119&lt;br /&gt;
| Trainer ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11A-0x11B&lt;br /&gt;
| Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11C-0x12B&lt;br /&gt;
| OT Name (Unicode, must end with 0xFFFF)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12C&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12D&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12E&lt;br /&gt;
| Trainer class/sprite&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12F&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x130&lt;br /&gt;
| Game version&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x131&lt;br /&gt;
| Region/language&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x132-0x137&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x138-0x1B7&lt;br /&gt;
| Mystery data (encrypted?)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B8-0x1BB&lt;br /&gt;
| Terminator (0x80000000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Retrieving the deposited Pokémon===&lt;br /&gt;
&lt;br /&gt;
Checking on the deposited Pokémon is apparently done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/get.asp&amp;lt;/code&amp;gt;.  The response appears to be a [[Pokemon NDS Structure|Pokémon save struct]].&lt;br /&gt;
&lt;br /&gt;
Retrieving the deposited Pokémon is done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/return.asp&amp;lt;/code&amp;gt;.  The response is merely 0x0001; the actual Pokémon data is taken from the &amp;lt;code&amp;gt;get.asp&amp;lt;/code&amp;gt; request.&lt;br /&gt;
&lt;br /&gt;
===Searching===&lt;br /&gt;
&lt;br /&gt;
Searching is done through &amp;lt;code&amp;gt;/pokemondpds/worldexchange/search.asp&amp;lt;/code&amp;gt;.  The sent data is either 15 or 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
The server responds with a full 292-byte Pokémon struct for each result.  If there are &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; results, the response will be 292 * &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; bytes long.  If there are no results, the server will give an empty response (0 bytes).&lt;br /&gt;
&lt;br /&gt;
==Pokémon struct==&lt;br /&gt;
&lt;br /&gt;
The Pokémon data for the Generation IV GTS is 292 bytes—56 bytes larger than a party Pokémon struct. The extra 56 bytes are GTS-specific data, such as the player&#039;s name &amp;amp; country, and what Pokémon they are requesting. In Generation IV, the trainer name is encoded with the Pokémon character table, while in Generation V, the trainer name is Unicode encoded.&lt;br /&gt;
&lt;br /&gt;
They are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Generation IV Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| Timestamp - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| Timestamp - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x2F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30-0x31&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data for the Generation V GTS is 296 bytes and adds the trainer&#039;s secret ID, an additional two unknown bytes at the end, and shifts the position of the trainer name to after the trainer and secret IDs.&lt;br /&gt;
&lt;br /&gt;
=== Generation V Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x21&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22-0x23&lt;br /&gt;
| Trainer&#039;s Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x33&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[#Alternate Form|Alternate Form]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x39&lt;br /&gt;
| [[Pokemon Black/White NDS Structure#Original Language|Language]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3A-0x3B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pokémon Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Female&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Either/neither&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trainer Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Female&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Timestamp Format ===&lt;br /&gt;
The timestamps are set by the server, and are always PST (UTC-8).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Year&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Month&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Day&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Hour&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Minute&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Second&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alternate Form ===&lt;br /&gt;
The normal/default form is 0x01; if it is another form, this byte will correspond to the appropriate [[Pokemon Black/White NDS Structure#Alternate Forms|Pokémon structure alternate form]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Game Version ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| Diamond&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Pearl&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C&lt;br /&gt;
| Platinum&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| HeartGold&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| SoulSilver&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| Black&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| White&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
	<entry>
		<id>https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4038</id>
		<title>GTS protocol</title>
		<link rel="alternate" type="text/html" href="https://projectpokemon.org/wiki/index.php?title=GTS_protocol&amp;diff=4038"/>
		<updated>2011-03-17T04:30:11Z</updated>

		<summary type="html">&lt;p&gt;Xfr: Add deposit data offsets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Communication with the GTS is done over regular HTTP with http://gamestats2.gs.nintendowifi.net/.  The same protocol is used for all five Gen IV games.&lt;br /&gt;
&lt;br /&gt;
==HTTP headers==&lt;br /&gt;
&lt;br /&gt;
The games don&#039;t seem to care about these at all.  The GTS sends back a bunch of boilerplate response headers, but the game happily accepts a response with only a Content-Length.&lt;br /&gt;
&lt;br /&gt;
==Protocol==&lt;br /&gt;
&lt;br /&gt;
All requests to the server are GET requests of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; followed by &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;. The hash variable in the latter, is a hash of the string returned by the former, as described bellow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===pid===&lt;br /&gt;
&lt;br /&gt;
The pid is an unsigned 32-bit integer that appears to uniquely identify a game cartridge. Although this has not been confirmed entirely:&lt;br /&gt;
Your PID is generated when you get your friendcode for the first time and is set to: friendcode &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
When you change the device and are forced to change your friendcode with it, your PID doesn&#039;t change but you get a new friendcode. Your new Friend Code appears to be set by appending a random byte (likely sent from Nintendo&#039;s servers) to the end of your PID. For example, nicholas&#039;s Soul Silver PID is 258303618 (0x8266650f)and his Friend Code is 4297 5503 3218 (0xf8266650f64) taking endianness into account.&lt;br /&gt;
&lt;br /&gt;
===Challenge/response===&lt;br /&gt;
&lt;br /&gt;
Before each &amp;quot;real&amp;quot; request, the game sends a request of the form &amp;lt;code&amp;gt;&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; and the server responds with a 32-byte challenge token. The game computes &amp;lt;code&amp;gt;sha1(&amp;quot;sAdeqWo3voLeC5r16DYv&amp;quot; + token)&amp;lt;/code&amp;gt; and uses that as the &amp;lt;var&amp;gt;hash&amp;lt;/var&amp;gt; value which it sends to the server. The &amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt; parameter is encrypted, as explained further down.&lt;br /&gt;
&lt;br /&gt;
For 5th gen GTS, the hash is instead, generated by &amp;lt;code&amp;gt;sha1(&amp;quot;HZEdGCzcGGLvguqUEKQN&amp;quot; + token)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is, each request looks like the following:&lt;br /&gt;
&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with &amp;lt;var&amp;gt;token&amp;lt;/var&amp;gt;&lt;br /&gt;
# Game requests &amp;lt;code&amp;gt;GET /pokemondpds/&amp;lt;var&amp;gt;page&amp;lt;/var&amp;gt;.asp?pid=&amp;lt;var&amp;gt;pid&amp;lt;/var&amp;gt;&amp;amp;amp;hash=&amp;lt;var&amp;gt;sha1(...)&amp;lt;/var&amp;gt;&amp;amp;amp;data=&amp;lt;var&amp;gt;data&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Server responds with payload&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
&lt;br /&gt;
The data sent to the server consists of a &#039;&#039;&#039;checksum&#039;&#039;&#039;, your &#039;&#039;&#039;pid&#039;&#039;&#039;, and a &#039;&#039;&#039;payload&#039;&#039;&#039;. The 5th gen GTS also adds the length of the payload, after the pid.&lt;br /&gt;
&lt;br /&gt;
===Checksum===&lt;br /&gt;
&lt;br /&gt;
The checksum is a 32-bit integer, computed by simply taking the sum of every byte of the pid and payload.&lt;br /&gt;
&lt;br /&gt;
It is the first four bytes of the data, xor-ed with &amp;lt;code&amp;gt;0x4a3b2c1d&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;0x2db842b2&amp;lt;/code&amp;gt; for 5th gen) and packed in network byte order (big-endian).&lt;br /&gt;
&lt;br /&gt;
===Payload===&lt;br /&gt;
The pid (, length) and payload are encrypted with a [http://en.wikipedia.org/wiki/Stream_cipher stream cipher] in for the 4th gen protocol.&lt;br /&gt;
&lt;br /&gt;
This encryption algorithm, like others used in the game, uses a [http://en.wikipedia.org/wiki/Linear_congruential_generator Linear Congruential Generator] (not a very strong choice). The multiplicative constant is &amp;lt;code&amp;gt;0x45&amp;lt;/code&amp;gt;, and the additive constant is &amp;lt;code&amp;gt;0x1111&amp;lt;/code&amp;gt;. It appears that the game uses a signed dword to store the seed, which doesn&#039;t really matter; it shouldn&#039;t affect anything. (It means that the modulus is effectively &amp;lt;code&amp;gt;0x80000000&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
 GRNG[n+1] = (GRNG[n] * 0x45 + 0x1111) &amp;amp; 0x7fffffff&lt;br /&gt;
&lt;br /&gt;
The GRNG is seeded with the &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt;, like so:&lt;br /&gt;
&lt;br /&gt;
 GRNG[0] = &amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; | (&amp;lt;var&amp;gt;checksum&amp;lt;/var&amp;gt; &amp;lt;&amp;lt; 16)&lt;br /&gt;
&lt;br /&gt;
The keystream is composed of the lower byte of the high word of successive GRNG values.&lt;br /&gt;
&lt;br /&gt;
 keystream[n] = (GRNG[n] &amp;gt;&amp;gt; 16) &amp;amp; 0xff&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the plaintext to get the ciphertext. &amp;lt;code&amp;gt;Xor&amp;lt;/code&amp;gt; the keystream with the ciphertext to get the plaintext.&lt;br /&gt;
&lt;br /&gt;
The entire data string is then encoded with [http://en.wikipedia.org/wiki/Base64#URL_applications urlsafe-base64].&lt;br /&gt;
&lt;br /&gt;
==Conversation==&lt;br /&gt;
&lt;br /&gt;
The first request the game makes is to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/info.asp&amp;lt;/code&amp;gt;. The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
Platinum, Heart Gold, and Soul Silver will then make a request to &amp;lt;code&amp;gt;/pokemondpds/common/setProfile.asp&amp;lt;/code&amp;gt;.  The server responds with eight NULs (0x00000000 0x00000000).&lt;br /&gt;
&lt;br /&gt;
After the above step(s) or &#039;&#039;&#039;performing any of the tasks below&#039;&#039;&#039; other than searching, the game makes a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/result.asp&amp;lt;/code&amp;gt;.  If the game has had a Pokémon sent to it via a trade, the server responds with the entire encrypted [[Pokemon NDS Structure|Pokémon save struct]].  Otherwise, if there is a Pokémon deposited in the GTS, it responds with 0x0004; if not, it responds with 0x0005.&lt;br /&gt;
&lt;br /&gt;
===Receiving a traded Pokémon===&lt;br /&gt;
&lt;br /&gt;
If the game receives a Pokémon from a successful trade as a response from &amp;lt;code&amp;gt;result.asp&amp;lt;/code&amp;gt;, it next requests &amp;lt;code&amp;gt;/pokemondpds/worldexchange/delete.asp&amp;lt;/code&amp;gt;.  The server responds with 0x0001.&lt;br /&gt;
&lt;br /&gt;
====A note on sendpkm.py====&lt;br /&gt;
&lt;br /&gt;
After doing the above, some Platinum, Heart Gold, and Soul Silver games will report a communication error and dump the player back to the title screen.  The Pokémon is still successfully received.  At least one person with HG/SS has received a Pokémon from a fake server without getting the error, and Diamond/Pearl have never been reported to have the problem.&lt;br /&gt;
&lt;br /&gt;
===Depositing a Pokémon===&lt;br /&gt;
&lt;br /&gt;
Pokémon are offered on the GTS by requesting &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post.asp&amp;lt;/code&amp;gt;.  The sent data is 300 bytes long, and includes the Pokémon struct. If the Pokémon is rejected by the server, the response is 0x000c; otherwise, if the deposit is successful, 0x0001.&lt;br /&gt;
&lt;br /&gt;
The game then saves. After the save is complete, it issues a request to &amp;lt;code&amp;gt;/pokemondpds/worldexchange/post_finish.asp&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In generation 5, the sent data is 444 bytes long and as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x04&lt;br /&gt;
| Checksum (sum of all bytes xor 0x2db842b2)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x08&lt;br /&gt;
| pid&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09-0x0A&lt;br /&gt;
| Data length (minus the 12 bytes of header)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B-0x0C&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B-0xE8&lt;br /&gt;
| Encrypted [[Pokemon Black/White NDS Structure|party pokemon data structure]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xE9-0xF7&lt;br /&gt;
| Unknown / Zero&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xF8-0x9&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFA&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFB&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFC-0xFD&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFE&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x100-0x102&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x103&lt;br /&gt;
| Unknown / seems to be 0x02?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x104-0x107&lt;br /&gt;
| Always 0?&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x108-0x117&lt;br /&gt;
| Timestamp placeholder, always 0 (set by server)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x118-0x119&lt;br /&gt;
| Trainer ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11A-0x11B&lt;br /&gt;
| Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x11C-0x12B&lt;br /&gt;
| OT Name (Unicode, must end with 0xFFFF)&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12C&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12D&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12E&lt;br /&gt;
| Trainer class/sprite&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x12F&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x130&lt;br /&gt;
| Game version&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x131&lt;br /&gt;
| Region/language&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x132-0x137&lt;br /&gt;
| Always 0&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x138-0x1B7&lt;br /&gt;
| Mystery data (encrypted?)&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1B8-0x1BB&lt;br /&gt;
| Terminator (0x80000000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Retrieving the deposited Pokémon===&lt;br /&gt;
&lt;br /&gt;
Checking on the deposited Pokémon is apparently done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/get.asp&amp;lt;/code&amp;gt;.  The response appears to be a [[Pokemon NDS Structure|Pokémon save struct]].&lt;br /&gt;
&lt;br /&gt;
Retrieving the deposited Pokémon is done by &amp;lt;code&amp;gt;/pokemondpds/worldexchange/return.asp&amp;lt;/code&amp;gt;.  The response is merely 0x0001; the actual Pokémon data is taken from the &amp;lt;code&amp;gt;get.asp&amp;lt;/code&amp;gt; request.&lt;br /&gt;
&lt;br /&gt;
===Searching===&lt;br /&gt;
&lt;br /&gt;
Searching is done through &amp;lt;code&amp;gt;/pokemondpds/worldexchange/search.asp&amp;lt;/code&amp;gt;.  The sent data is either 15 or 16 bytes long.&lt;br /&gt;
&lt;br /&gt;
The server responds with a full 292-byte Pokémon struct for each result.  If there are &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; results, the response will be 292 * &amp;lt;var&amp;gt;n&amp;lt;/var&amp;gt; bytes long.  If there are no results, the server will give an empty response (0 bytes).&lt;br /&gt;
&lt;br /&gt;
==Pokémon struct==&lt;br /&gt;
&lt;br /&gt;
The Pokémon data for the Generation IV GTS is 292 bytes—56 bytes larger than a party Pokémon struct. The extra 56 bytes are GTS-specific data, such as the player&#039;s name &amp;amp; country, and what Pokémon they are requesting. In Generation IV, the trainer name is encoded with the Pokémon character table, while in Generation V, the trainer name is Unicode encoded.&lt;br /&gt;
&lt;br /&gt;
They are as follows:&lt;br /&gt;
&lt;br /&gt;
=== Generation IV Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| Timestamp - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| Timestamp - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x2F&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x30-0x31&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x32&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x33&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| Is Exchanged Flag&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[Pokemon NDS Structure#Original Language|Language]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The data for the Generation V GTS is 296 bytes and adds the trainer&#039;s secret ID, an additional two unknown bytes at the end, and shifts the position of the trainer name to after the trainer and secret IDs.&lt;br /&gt;
&lt;br /&gt;
=== Generation V Encrypted Bytes ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[#Pokémon Gender|Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04-0x05&lt;br /&gt;
| Requested Nat. Dex ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| [[#Pokémon Gender|Requested Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| Requested Min Level&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| Requested Max Level&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x09&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| [[#Trainer Gender|Trainer&#039;s Gender]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C-0x13&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - deposited time&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14-0x1B&lt;br /&gt;
| [[#Timestamp Format|Timestamp]] - time traded?&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x1C-0x1F&lt;br /&gt;
| PID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x20-0x21&lt;br /&gt;
| Trainer&#039;s OT ID&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x22-0x23&lt;br /&gt;
| Trainer&#039;s Secret ID&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x24-0x33&lt;br /&gt;
| Trainer&#039;s Name&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x34&lt;br /&gt;
| Country&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x35&lt;br /&gt;
| City&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x36&lt;br /&gt;
| Trainer&#039;s Sprite&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x37&lt;br /&gt;
| [[#Alternate Form|Alternate Form]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x38&lt;br /&gt;
| [[#Game Version|Game Version]]&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x39&lt;br /&gt;
| [[Pokemon Black/White NDS Structure#Original Language|Language]]&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x3A-0x3B&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pokémon Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Female&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Either/neither&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trainer Gender ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Type&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00&lt;br /&gt;
| Male&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x01&lt;br /&gt;
| Female&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Timestamp Format ===&lt;br /&gt;
The timestamps are set by the server, and are always PST (UTC-8).&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Contents&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x00-0x01&lt;br /&gt;
| Year&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x02&lt;br /&gt;
| Month&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x03&lt;br /&gt;
| Day&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x04&lt;br /&gt;
| Hour&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x05&lt;br /&gt;
| Minute&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x06&lt;br /&gt;
| Second&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| &#039;&#039;Unknown&#039;&#039; - always 0?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Alternate Form ===&lt;br /&gt;
The normal/default form is 0x01; if it is another form, this byte will correspond to the appropriate [[Pokemon Black/White NDS Structure#Alternate Forms|Pokémon structure alternate form]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Game Version ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid #999; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ccc;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
! Value&lt;br /&gt;
! Version&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0A&lt;br /&gt;
| Diamond&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0B&lt;br /&gt;
| Pearl&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x0C&lt;br /&gt;
| Platinum&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x07&lt;br /&gt;
| HeartGold&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x08&lt;br /&gt;
| SoulSilver&lt;br /&gt;
|- style=&amp;quot;background: #ddd;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x15&lt;br /&gt;
| Black&lt;br /&gt;
|- style=&amp;quot;background: #eee;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
| 0x14&lt;br /&gt;
| White&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Xfr</name></author>
	</entry>
</feed>