Most of these articles were previously on our wiki. We are currently in the process of migrating these articles, so please excuse any formatting or credit issues that may be present. If you wish to report a specific issue, please open a thread in the Wiki Feedback forum.

BW PK5 Structure

Pokémon in the games Pokémon Black and White are stored in a 136 byte or 220 byte structures. All unencrypted values are stored in little-endian format. The game encrypts the data when it is stored in the save file. Party Pokémon have additional values to hold current battle stats and conditions. The information below describes the Pokémon data format.

Markings

Alternate Forms

Alternate forms are stored at offset 0x40 of the Pokemon structure. Each form follows the pattern of index << 3 where index starts at zero for the main form.

Unown's Forms

Bit

Form

Bit

Form

Bit

Form

Bit

Form

0x00

A

0x38

H

0x70

O

0xA8

V

0x08

B

0x40

I

0x78

P

0xB0

W

0x10

C

0x48

J

0x80

Q

0xB8

X

0x18

D

0x50

K

0x88

R

0xC0

Y

0x20

E

0x58

L

0x90

S

0xC8

Z

0x28

F

0x60

M

0x98

T

0xD0

!

0x30

G

0x68

N

0xA0

U

0xD8

?

Deoxy's Forms

Bit

Form

0x00

Normal

0x08

Attack

0x10

Defense

0x18

Speed

Burmy's & Wormadam's Forms

Bit

Form

0x00

Plant

0x08

Sandy

0x10

Trash

Shellos' & Gastrodon's Forms

Bit

Form

0x00

West

0x08

East

Rotom's Forms

Rotom's alternate forms will only be displayed in Pokemon Platinum. Rotom may be traded between Diamond, Pearl, and Platinum without losing the alternate form.

Bit

Form

0x00

Normal

0x08

Heat

0x10

Wash

0x18

Frost

0x20

Fan

0x28

Cut

Giratina's Forms

Giratina's Origin form will only be displayed in Pokemon Platinum.

Bit

Form

0x00

Altered

0x08

Origin

Shaymin's Forms

Shaymin's Sky form will only be displayed in Pokemon Platinum.

Bit

Form

0x00

Land

0x08

Sky

Arceus' Forms

Bit

Form

Bit

Form

Bit

Form

0x00

Normal

0x30

Insect

0x60

Zap

0x08

Fist

0x38

Spooky

0x68

Mind

0x10

Sky

0x40

Iron

0x70

Icicle

0x18

Toxic

0x48

Flame

0x78

Draco

0x20

Earth

0x50

Splash

0x80

Dread

0x28

Stone

0x58

Meadow

0x4C

Curse

Nickname and OT Name

Since generation 5, the nickname and OT name are encoded with Unicode instead of a game-specific character map. However, there are some exceptions, which are listed below. Note that unlike generation 4, the last two bytes of are always 0xFFFF, even if there already was a terminator before. Exceptions to this rule are the Roaming Pokémon, Starters, and various gifts and in game trades, in which the OT name does not have the escape sequence.

There are no normally occurring trash bytes for generation 5 Pokémon, but the Poké Transfer will keep existing trash bytes (except the last two) even if the Pokémon evolves in generation 5. In the advent of a different language Pokémon evolving in another language game, characters not overwritten are left as trash bytes.

Characters that can be replaced in Unicode

In the game, those are half-width versions of existing Unicode characters used in non-japanese versions with long name support.

Original character

Unicode index

Replace with

Unicode index

⑽

0x247d

☂

0x2602

⑻

0x247b

☁

0x2601

⑺

0x247a

☀

0x2600

⑹

0x2479

♪

0x266a

⑸

0x2478

◇

0x25c7

⑷

0x2477

△

0x25b3

⑶

0x2476

□

0x25a1

⑵

0x2475

○

0x25cb

⑴

0x2474

◎

0x25ce

⑳

0x2473

★

0x2605

⑲

0x2472

♦

0x2666

⑱

0x2471

♥

0x2665

⑰

0x2470

♣

0x2663

⑯

0x246f

♠

0x2660

⑮

0x246e

♀

0x2640

⑭

0x246d

♂

0x2642

⑬

0x246c

…

0x2026

⑨

0x2468

÷

0xf7

⑧

0x2467

×

0xd7

Pokémon exclusive characters

Some game-exclusive characters do not exist in Unicode and should be replaced with bitmaps.

Original character

Unicode index

Pokémon exclusive

$

0x24

⇒

0x21d2

⇔

0x21d4

∀

0x2200

∃

0x2203

∧

0x2227

∨

0x2228

①

0x2460

②

0x2461

③

0x2462

④

0x2463

⑤

0x2464

⑥

0x2465

⑦

0x2466

⑩

0x2469

⑪

0x246a

⑫

0x246b

⑾

0x247e

⑿

0x247f

⒀

0x2480

⒁

0x2481

⒂

0x2482

⒃

0x2483

⒄

0x2484

⒅

0x2485

⒆

0x2486

⒇

0x2487

￢

0xffe2

Encounter Types

Encounter types are not used in Black and White. Pokeshifted Pokemon keep their Encounter Type hex.

Value

Country

0x0

Pal Park, Egg, Hatched, Special Event

0x2

Tall Grass

0x4

Dialga/Palkia In-Game Event

0x5

Cave, Hall of Origin

0x7

Surfing, Fishing

0x9

Building

0xA

Great Marsh (Safari Zone)

0xC

Starter, Fossil, Gift (Eevee)

Ribbons

Diamond, Pearl, and Platinum store the ribbon information as bitfields in 1-byte words. Given below are the bytewise representation of the ribbon bitfields.

Sinnoh Ribbon Set 1

Bit

Ribbon

0x24 & 0x01

Sinnoh Champ Ribbon

0x24 & 0x02

Ability Ribbon

0x24 & 0x04

Great Ability Ribbon

0x24 & 0x08

Double Ability Ribbon

0x24 & 0x10

Multi Ability Ribbon

0x24 & 0x20

Pair Ability Ribbon

0x24 & 0x40

World Ability Ribbon

0x24 & 0x80

Alert Ribbon

0x25 & 0x01

Shock Ribbon

0x25 & 0x02

Downcast Ribbon

0x25 & 0x04

Careless Ribbon

0x25 & 0x08

Relax Ribbon

0x25 & 0x10

Snooze Ribbon

0x25 & 0x20

Smile Ribbon

0x25 & 0x40

Gorgeous Ribbon

0x25 & 0x80

Royal Ribbon

Unova Ribbon Set

Bit

Ribbon

0x26 & 0x01

Gorgeous Royal Ribbon

0x26 & 0x02

Footprint Ribbon

0x26 & 0x04

Record Ribbon

0x26 & 0x08

Event Ribbon

0x26 & 0x10

Legend Ribbon

0x26 & 0x20

World Champion Ribbon

0x26 & 0x40

Birthday Ribbon

0x26 & 0x80

Special Ribbon

0x27 & 0x01

Souvenir Ribbon

0x27 & 0x02

Wishing Ribbon

0x27 & 0x04

Classic Ribbon

0x27 & 0x08

Premier Ribbon

Sinnoh Ribbon Set 3

Bit

Ribbon

0x60 & 0x01

Cool Ribbon

0x60 & 0x02

Cool Ribbon Great

0x60 & 0x04

Cool Ribbon Ultra

0x60 & 0x08

Cool Ribbon Master

0x60 & 0x10

Beauty Ribbon

0x60 & 0x20

Beauty Ribbon Great

0x60 & 0x40

Beauty Ribbon Ultra

0x60 & 0x80

Beauty Ribbon Master

0x61 & 0x01

Cute Ribbon

0x61 & 0x02

Cute Ribbon Great

0x61 & 0x04

Cute Ribbon Ultra

0x61 & 0x08

Cute Ribbon Master

0x61 & 0x10

Smart Ribbon

0x61 & 0x20

Smart Ribbon Great

0x61 & 0x40

Smart Ribbon Ultra

0x61 & 0x80

Smart Ribbon Master

Sinnoh Ribbon Set 4

Bit

Ribbon

0x62 & 0x01

Tough Ribbon

0x62 & 0x02

Tough Ribbon Great

0x62 & 0x04

Tough Ribbon Ultra

0x62 & 0x08

Tough Ribbon Master

Hoenn Ribbon Set 1

Bit

Ribbon

0x3C & 0x01

Cool Ribbon

0x3C & 0x02

Cool Ribbon Super

0x3C & 0x04

Cool Ribbon Hyper

0x3C & 0x08

Cool Ribbon Master

0x3C & 0x10

Beauty Ribbon

0x3C & 0x20

Beauty Ribbon Super

0x3C & 0x40

Beauty Ribbon Hyper

0x3C & 0x80

Beauty Ribbon Master

0x3D & 0x01

Cute Ribbon

0x3D & 0x02

Cute Ribbon Super

0x3D & 0x04

Cute Ribbon Hyper

0x3D & 0x08

Cute Ribbon Master

0x3D & 0x10

Smart Ribbon

0x3D & 0x20

Smart Ribbon Super

0x3D & 0x40

Smart Ribbon Hyper

0x3D & 0x80

Smart Ribbon Master

Hoenn Ribbon Set 2

Bit

Ribbon

0x3E & 0x01

Tough Ribbon

0x3E & 0x02

Tough Ribbon Super

0x3E & 0x04

Tough Ribbon Hyper

0x3E & 0x08

Tough Ribbon Master

0x3E & 0x10

Champion Ribbon

0x3E & 0x20

Winning Ribbon

0x3E & 0x40

Victory Ribbon

0x3E & 0x80

Artist Ribbon

0x3F & 0x01

Effort Ribbon

0x3F & 0x02

Battle Champion Ribbon

0x3F & 0x04

Regional Champion Ribbon

0x3F & 0x08

National Champion Ribbon

0x3F & 0x10

Country Ribbon

0x3F & 0x20

National Ribbon

0x3F & 0x40

Earth Ribbon

0x3F & 0x80

World Ribbon

Save File Location

The party Pokémon are stored in the save file beginning at offset 0x18e08.

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.

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.

Each party and Daycare Pokémon is 220 bytes in size.

The PC storage Pokémon are stored in the save file from Box 1 to Box 24. The offset starts at 0x24400. Each Pokémon stored in the PC is 136 bytes in size.