MAPGEN V1 SEMI-MANUAL
BY RYAN CRIERIE
12 AUGUST 2017


MAPGEN DUMPER output image of WITP:AE Terrain Types (Hex) resized to fit monitors.

WHAT THIS IS:

This is a set of programs designed to make editing/creating custom maps for Matrix Games' “War in the Pacific: Admiral's Edition” significantly easier; by outputting the game map data contained within PWHEXE.DAT in a graphical format which can then be easily edited in graphical programs such as PhotoShop™ and then reloaded into PWHEXE.DAT, significantly reducing the time input needed to create/modify large areas of the map.

WHAT THIS ISN'T:

You can't have it do all the work for making a map for you. You still need to actually draw the map yourself. It's not a magic “make a random map” program.

PROGRAMS INCLUDED:

MAPGEN ANALYZER:

This program will analyze PWHEXE.DAT and:

  • Dump all values from a specific offset in PWHEXE

  • Dump all hexes with a specific value in an offset in PWHEXE

  • Analyze a specific hex and get a value for an offset in PWHEXE

  • Analyze a generic file for a value (VERY SLOW).





MAPGEN COMBINER:

This program must be placed into your \WITPAE\ART folder.

There are two options available:

  • Combine the WITP:AE map (with hexes)

  • Combine the WITP:AE map (without hexes)

Both choices output a very large PNG file; allowing you to see the whole map as one contiguous file.

TO BE DONE IN FUTURE: Add the MAPGEN SPLITTER counterpart to break down the combined map; so that you can combine a map to make large scale art in Photoshop; and then unsplit it again for use in the WITP:AE game engine.





MAPGEN DUMPER:

This program dumps the PWHEXE.DAT into two forms of graphical output:

  • A single large contiguous map image that is 9766x7803.

  • 42 small sub map images that follow “canonical” WITP:AE split map file locations.

You select the type of data you wish to dump and the graphical output during program execution.





MAPGEN REPACKER:

This program reads either the large (9766x7803) large contiguous map image or the 42 small sub map images generated previously by MAPGEN DUMPER, analyzes them and repacks the information contained within them on hex/hex-side values into the PWHEXE.DAT file.

You select the type of data you wish to repack and whether you wish to use the “split” or “large” map images as a data source during program execution.

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

Hex Analysis Behavior during REPACK Mode:

The red dots represent pixels in the hex that will be sampled for color values (R,G,B tuples) during the repacking process. The values are placed into a Python List and the most common value is returned to the greater program as the color value for that hex. This will enable better repacking over single pixel sampling mode.

Hex Side Analysis Behavior during REPACK Mode:

The dots represent pixels in each hex side that will be sampled for color values (R,G,B tuples) during the repacking process. The values are placed into a Python List and the most common value is returned to the greater program as the color value for that hex. This will enable better repacking over single pixel sampling mode.

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

WITP:AE Map Format Notes

These notes are based pretty much largely on Dave Bradley's "Map Data File Formats for AE", last revised on 5 October 2011, and also included in this distribution for clarity. (PDF File)

They're intended to help users of MAPGEN know which colors to paint their graphical maps for proper input into PWHEXE.DAT, but also to help anyone who would want to in the future, design a map editor for WITP:AE, hence the thoroughness of some of the detail below.

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

Complete Hex Entry Breakdown

Each Hex Entry in the PWHEXE.dat file is 56 bytes long, with each byte allocated as such:

Byte

Description

Byte

Description

Byte

Description

0

Hexside Type E Hex-Side

20

Hexside Type NW Hex-Side

40

Original hex Nation
(Not used in WITP:AE)

1

Hexside Road E Hex-Side

21

Hexside Road NW Hex-Side

41

Malaria Zone

2

Hexside Railroad E Hex-Side

22

Hexside Railroad NW Hex-Side

42

Amphibious Landing Zone

3

Hexside River E Hex-Side

23

Hexside River NW Hex-Side

43

Hexside Control E
(Not used in WITP:AE)

4

Hexside Strait E Hex-Side

24

Hexside Strait NW Hex-Side

44

Hexside Control SE
(Not used in WITP:AE)

5

Hexside Type SE Hex-Side

25

Hexside Type NE Hex-Side

45

Hexside Control SW
(Not used in WITP:AE)

6

Hexside Road SE Hex-Side

26

Hexside Road NE Hex-Side

46

Hexside Control W
(Not used in WITP:AE)

7

Hexside Railroad SE Hex-Side

27

Hexside Railroad NE Hex-Side

47

Hexside Control NW
(Not used in WITP:AE)

8

Hexside River SE Hex-Side

28

Hexside River NE Hex-Side

48

Hexside Control NE
(Not used in WITP:AE)

9

Hexside Strait SE Hex-Side

29

Hexside Strait NE Hex-Side

49

Stacking Limit

10

Hexside Type SW Hex-Side

30

Hex Type Code

50

Spare
(Currently Not Used)

11

Hexside Road SW Hex-Side

31

Terrain Type Code

51

Allied Coastwatcher

12

Hexside Railroad SW Hex-Side

32

Island Size Coding

52

Japanese Coastwatcher

13

Hexside River SW Hex-Side

33

Hex River Type Coding

53

Spare
(Currently Not Used)

14

Hexside Strait SW Hex-Side

34

Hex Strait Type Coding

54

Spare
(Currently Not Used)

15

Hexside Type W Hex-Side

35

Sub Map Coding

55

Spare
(Currently Not Used)

16

Hexside Road W Hex-Side

36

Weather Zone Coding



17

Hexside Railroad W Hex-Side

37

Hexagon Control
(Not used in WITP:AE)



18

Hexside River W Hex-Side

38

Computer Control Zone Number
(Not used in WITP:AE)



19

Hexside Strait W Hex-Side

39

Entry Zone/Port ID



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

Hex Type Coding
(Byte 30)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Ocean

Blue 1

0, 0, 255

#0000ff

x01

Coastal

Blue 0

0, 164, 255

#00a4ff

x02

Land

Green 2

0, 160, 0

#00a000

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

Terrain Type Coding
(Byte 31)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Deep Ocean (OD)

Blue 1

0, 0, 255

#0000ff

x01

Clear (Clr)

Green 4

93, 135, 93

#5d875d

x02

Jungle (Jg)

Green 2

0, 160, 0

#00a000

x03

Mountain (Mtn)

Brown 1

160, 64, 0

#a04000

x04

Desert (Des)

Yellow 1

255, 255, 0

#ffff00

x05

Swamp (Swp)

Tan 2

121, 105, 73

#796949

x06

Heavy Urban (Uh)

Red 1

255, 0, 0

#ff0000

x07

Forest (Wd)

Green 1

0, 255, 0

#00ff00

x08

Rough (Rgh)

Tan 1

193, 168, 117

#c1a875

x09

Sandy Desert (SDes)

Yellow 0

255, 255, 192

#ffffc0

x0A

Tundra (Tun)

Gray 2

160, 160, 160

#a0a0a0

x0B

Ice field (If)

Gray 1

208, 208, 208

#d0d0d0

x0C

Atoll

Cyan 0

180, 255, 255

#b4ffff

x0D

Light Urban (Ul)

Red 0

255, 110, 110

#ff6e6e

x0E

Tropical Mountain (MT)

Green 3

0, 64, 0

#004000

x0F

Rough Desert (DR)

Yellow 2

160, 160, 0

#a0a000

10

Rough Forest (WR)

Orange

244, 91, 26

#f45b1a

11

Rough Jungle (JR)

Green 5

0, 117, 94

#00755e

12

Shallow Ocean (OS)

Blue 0

0, 164, 255

#00a4ff

13

Pack Ice (Fs)

White

255, 255, 255

#ffffff

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

Island Size Coding
(Byte 32)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Very Large / Unlimited
(also non-island hexes)

Tan 1

193, 168, 117

#c1a875

x01

very small
6,000 troop capacity

Green 2

0, 160, 0

#00a000

x02

Small
30,000 troop capacity

Purple 2

160, 0, 160

#a000a0

x03

Medium
60,000 troop capacity

Red 1

255, 0, 0

#ff0000

x04

Large
unlimited troop capacity

Orange

244, 91, 26

#f45b1a

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

Hex River Type Coding
(Byte 33)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No River

White

255, 255, 255

#ffffff

x01

Minor River

Blue 0

0, 164, 255

#00a4ff

x02

Major River

Blue 2

0, 64, 128

#004080

x03

Navigable River

Orange

244, 91, 26

#f45b1a

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

Hex Strait Type Coding
(Byte 34)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Strait

White

255, 255, 255

#ffffff

x01

Wide Strait
(Tsushima)

Blue 2

0, 64, 128

#004080

x02

Narrow Strait
(Shimonoseki)

Blue 0

0, 164, 255

#00a4ff

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

Sub Map Coding
(Byte 35)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Main Map

Green 2

0, 160, 0

#00a000

Values x01 (1) to xFE (254) are used for Sub Maps #1 through #254.

The system that MAPGEN uses is:

Value of 80 = (80, 80, 80) RGB tuple
Value of 156 = (156, 156, 156) RGB tuple

xFF

AREA NOT USED

Red 2

160, 0, 0

#a00000

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

Weather Zone Coding
(Byte 36)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Temperate

Green 2

0, 160, 0

#00a000

x65

Cold Weather, Tibet

Gray 1

208, 208, 208

#d0d0d0

x66

Cold Weather, North Cent. China

Gray 2

160, 160, 160

#a0a0a0

x67

Cold Weather, Siberia

Gray 3

112, 112, 112

#707070

x69

Cold Weather, Aleutians

Gray 4

64, 64, 64

#404040

x6A

Cold Weather, Canada

Gray 5

32, 32, 32

#202020

x97

South Pole

Pink 1

255, 0, 128

#ff0080

x98

Falklands

Purple 2

160, 0, 160

#a000a0

xFF

Off-Map

Orange

244, 91, 26

#f45b1a

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

Entry Zone/Port ID Coding
(Byte 39)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Spare

Green 2



Values x01 (1) to xFF (255) are used for Entry Zones #1 through #255.

The system that MAPGEN uses is:

Value of 80 = (80, 80, 80) RGB tuple
Value of 156 = (156, 156, 156) RGB tuple

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

Malaria Zone Coding
(Byte 41)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Normal/No Malaria

Green 2

0, 160, 0

#00a000

x01

Malarial

Red 1

255, 0, 0

#ff0000

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

Amphibious Landing Zone Coding
(Byte 42)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Normal/Allowed

Green 2

0, 160, 0

#00a000

x01

Prohibited

Red 1

255, 0, 0

#ff0000

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

Stacking Limit Coding
(Byte 49)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Limit / Unlimited




Values x01 (1) to xFF (255) are used for Stacking Limits #1 through #255.

The system that MAPGEN uses is:

Value of 80 = (80, 80, 80) RGB tuple
Value of 156 = (156, 156, 156) RGB tuple

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

The stacking limit formula is: Decimal Value * 5000

Thus, a hex with a decimal value of 25 (0x19) would have a stack limit of 125,000.

Stock WITP:AE has this zeroed out. Unofficial map data mods include stacking limits.

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

Allied Coastwatcher Coding
(Byte 51)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Coastwatcher

Green 2

0, 160, 0

#00a000

x01

Coastwatcher Present

Red 1

255, 0, 0

#ff0000

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

Japanese Coastwatcher Coding
(Byte 52)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Coastwatcher

Green 2

0, 160, 0

#00a000

x01

Coastwatcher Present

Red 1

255, 0, 0

#ff0000

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

Hexside Types
(Bytes 0, 5, 10, 15, 20, 25)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

Ocean
(in game Blue Side)

Blue 2

0, 64, 128

#004080

x01

Ground A
(in game Green Side)

Green 4

93, 135, 93

#5d875d

x02

River
(in game Purple Side)

Blue 0

0, 164, 255

#00a4ff

x03

Ground B
(in game Green Side)
(Not used in stock and not tested by me. Possibly intended to block armor units from certain terrain types)

Green 1

0, 255, 0

#00ff00

x04

Blocked, Ground Units/TFs
(in game Red Side)

Red 1

255, 0, 0

#ff0000

x05

Blocked, Coral Reef
All ships in water hexes
(in game Red Side)

Pink 1

255, 0, 128

#ff0080

x06

Both LCUs and TFs
All Ships allowed.
(in game White Side)

Purple 2

160, 0, 160

#a000a0

x07

Both LCUs and TFs
Shallow Draft Ships Only.
(in game White Side)

Yellow 2

160, 160, 0

#a0a000

x08

NOT USED BY GAME

NOT USED BY GAME

NOT USED BY GAME

NOT USED BY GAME

x09

Blocked, LCUs
Shallow Draft Ships Can Transit
(in game Red Side)

Brown 1

160, 64, 0

#a04000

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

Hexside Roads
(Bytes 1, 6, 11, 16, 21, 26)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Roads

White

255, 255, 255

#ffffff

x01

Minor Rail (RR) Trail

(The manual says that trails underlie all rail lines where there is no Road (“walking on railway tracks”).

Green 5

0, 117, 94

#00755e

x02

Minor Road
(developed areas supposed to have them in all directions.)

Red 1

255, 0, 0

#ff0000

x03

Major Road
(urban areas supposed to have them in all directions))

Brown 1

160, 64, 0

#a04000

A further note on trails. There have been some clarifications that have surfaced on the AE forum, stating that there is an implicit assumption of trails in hexes where there are no explicit designated road types, that is, where the hexside road type equals 00. So, movement can still occur in these directions but at the slowest rate for that terrain type/unit type/weather/etc. The manual states, “The existence of foot trails is assumed in all hexes on the map that do not have roads defined, and this is accounted for in the off-road movement rates. Therefore there are no actual “trails” defined on the map except for along railway lines......” .I have changed the designation I have assigned to the the code 01 for these fields to (RR) Trail. The stock map is very consistent with this approach, with a few exceptions that may just be oversights. I have however tested the viability of having Railway lines without underlying (RR) Trails and vice-versa. If you wish to use this for modding purposes I think it will work just fine but you should test to see if the movement rates you realize with this are what you intended.

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

Hexside Railroads
(Bytes 2, 7, 12, 17, 22, 27)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Railway

White

255, 255, 255

#ffffff

x01

Minor Railway

Red 0

255, 110, 110

#ff6e6e

x02

Major Railway

Purple 1

255, 0, 255

#ff00ff

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

Hexside Straits
(Bytes 4, 9, 14, 19, 24, 29)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No Straits

White

255, 255, 255

#ffffff

x01

Wide Strait
(Tsushima)

Blue 2

0, 64, 128

#004080

x02

Narrow Strait
(Shimonoseki)

Blue 0

0, 164, 255

#00a4ff

There is an unresolved anomaly with this parameter. The hexside parameters provide for an individual strait type for each of the six sides. How these six bytes and the parameters expressed in byte 34-Straight Type (Hexagon) interact is not entirely clear.

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

Hexside Rivers
(Bytes 3, 8, 13, 18, 23, 28)

Hex Value

Definition

Color

Color (RGB)

Color (HTML Hex)

x00

No River

White

255, 255, 255

#ffffff

x01

Minor River

Blue 0

0, 164, 255

#00a4ff

x02

Major River

Blue 2

0, 64, 128

#004080

x03

Navigable River

Orange

244, 91, 26

#f45b1a

There is an unresolved anomaly with this parameter. The hexside parameters provide for an individual river type for each of the six sides. How these parameters and the parameters expressed in byte 33-River Type (hexagon) interact is not entirely clear.

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

Data vs Graphical Map

The Graphical Map actually begins on pixel 21,38 of the complete dumped data map, because one row of top hexes is ¾ “off-map” while one column of left hexes is ½ “off-map” – the data map is 9766x7803 pixels while the graphical map is 9703x7767 pixels.

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

WITP:AE Map Format (Graphical)

WITP:AE’s map is divided across several files, in both graphical (.bmp) format and in data format (.dat).

This multi-layer approach allows for superior graphical chrome (coastlines that approximate reality pretty closely in game), while keeping the hex data file within manageable limits (it’s already at 47,000~ hexes).

However, it means that the in-game map file is 9703 x 7767 pixels!

To allow this enormous true color map image to be loaded/edited onto computers that were in existence circa late 2002 (WITP was released Summer 2004), the map was chopped up into pieces no larger than 1500 x 1500 pixels and dynamically loaded into the game as the player moved the cursor around.

\ART

Is where the map image files are.

They’re divided between two sequences: WPEHxx.bmp (with hex map overlaid) and WPENxx.bmp (without hexes). Each sequence contains 41 bitmap images, arranged thusly:


Column 1

Column 2

Column 3

Column 4

Column 5

Column 6

Column 7

Row 1

00.bmp
1500x1500

01.bmp
1500x1500

02.bmp
1500x1500

03.bmp
1500x1500

04.bmp
1500x1500

05.bmp
1500x1500

06.bmp
703x1500

Row 2

07.bmp
1500x1500

08.bmp
1500x1500

09.bmp
1500x1500

10.bmp
1500x1500

11.bmp
1500x1500

12.bmp
1500x1500

13.bmp
703x1500

Row 3

14.bmp
1500x1500

15.bmp
1500x1500

16.bmp
1500x1500

17.bmp
1500x1500

18.bmp
1500x1500

19.bmp
1500x1500

20.bmp
703x1500

Row 4

21.bmp
1500x1500

22.bmp
1500x1500

23.bmp
1500x1500

24.bmp
1500x1500

25.bmp
1500x1500

26.bmp
1500x1500

27.bmp
703x1500

Row 5

28.bmp
1500x1500

29.bmp
1500x1500

30.bmp
1500x1500

31.bmp
1500x1500

32.bmp
1500x1500

33.bmp
1500x1500

34.bmp
703x1500

Row 6

35.bmp
1500x267

36.bmp
1500x267

37.bmp
1500x267

38.bmp
1500x267

39.bmp
1500x267

40.bmp
1500x267

41.bmp
703x267

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

Decimal/Hexadecimal/Python Values for Reference

The reason this extremely large table is included is because Python is tricky when it comes to directly hex-editing files in binary mode.

Writing binary locations in files with low decimal values (x00 to x09) can be done reliably with the following code:

if HEXCOLOR == Hex_Tan_1_Color: #x00 Unlimited Island Size
     HEXVALUE = ('\x00').encode() #We have to encode it because python is dumb.
     HexFileData.write(HEXVALUE) #Write value to PWHEX.DAT

But when you get into extremely high decimal values, the above code doesn't work and incorrectly inputs values. To read/dump the correct values, you have to use a different set of code:

if HEXCOLOR == Hex_Gray_5_Color: #x6A Cold Weather, Canada
     HEXVALUE = bytes(b'j') #We have to encode it because python is dumb.
     HexFileData.write(HEXVALUE) #Write value to PWHEX.DAT

The following map dumpers/repacker segments use the HEXVALUE = bytes(b'j') method:

Decimal

Hexadecimal

Binary Byte

0

0x00

b'\x00'

1

0x01

b'\x01'

2

0x02

b'\x02'

3

0x03

b'\x03'

4

0x04

b'\x04'

5

0x05

b'\x05'

6

0x06

b'\x06'

7

0x07

b'\x07'

8

0x08

b'\x08'

9

0x09

b'\t'

10

0x0A

b'\n'

11

0x0B

b'\x0b'

12

0x0C

b'\x0c'

13

0x0D

b'\r'

14

0x0E

b'\x0e'

15

0x0F

b'\x0f'

16

0x10

b'\x10'

17

0x11

b'\x11'

18

0x12

b'\x12'

19

0x13

b'\x13'

20

0x14

b'\x14'

21

0x15

b'\x15'

22

0x16

b'\x16'

23

0x17

b'\x17'

24

0x18

b'\x18'

25

0x19

b'\x19'

26

0x1A

b'\x1a'

27

0x1B

b'\x1b'

28

0x1C

b'\x1c'

29

0x1D

b'\x1d'

30

0x1E

b'\x1e'

31

0x1F

b'\x1f'

32

0x20

b' '

33

0x21

b'!'

34

0x22

b'"'

35

0x23

b'#'

36

0x24

b'$'

37

0x25

b'%'

38

0x26

b'&'

39

0x27

b"'"

40

0x28

b'('

41

0x29

b')'

42

0x2A

b'*'

43

0x2B

b'+'

44

0x2C

b','

45

0x2D

b'-'

46

0x2E

b'.'

47

0x2F

b'/'

48

0x30

b'0'

49

0x31

b'1'

50

0x32

b'2'

51

0x33

b'3'

52

0x34

b'4'

53

0x35

b'5'

54

0x36

b'6'

55

0x37

b'7'

56

0x38

b'8'

57

0x39

b'9'

58

0x3A

b':'

59

0x3B

b';'

60

0x3C

b'<'

61

0x3D

b'='

62

0x3E

b'>'

63

0x3F

b'?'

64

0x40

b'@'

65

0x41

b'A'

66

0x42

b'B'

67

0x43

b'C'

68

0x44

b'D'

69

0x45

b'E'

70

0x46

b'F'

71

0x47

b'G'

72

0x48

b'H'

73

0x49

b'I'

74

0x4A

b'J'

75

0x4B

b'K'

76

0x4C

b'L'

77

0x4D

b'M'

78

0x4E

b'N'

79

0x4F

b'O'

80

0x50

b'P'

81

0x51

b'Q'

82

0x52

b'R'

83

0x53

b'S'

84

0x54

b'T'

85

0x55

b'U'

86

0x56

b'V'

87

0x57

b'W'

88

0x58

b'X'

89

0x59

b'Y'

90

0x5A

b'Z'

91

0x5B

b'['

92

0x5C

b'\\'

93

0x5D

b']'

94

0x5E

b'^'

95

0x5F

b'_'

96

0x60

b'`'

97

0x61

b'a'

98

0x62

b'b'

99

0x63

b'c'

100

0x64

b'd'

101

0x65

b'e'

102

0x66

b'f'

103

0x67

b'g'

104

0x68

b'h'

105

0x69

b'i'

106

0x6A

b'j'

107

0x6B

b'k'

108

0x6C

b'l'

109

0x6D

b'm'

110

0x6E

b'n'

111

0x6F

b'o'

112

0x70

b'p'

113

0x71

b'q'

114

0x72

b'r'

115

0x73

b's'

116

0x74

b't'

117

0x75

b'u'

118

0x76

b'v'

119

0x77

b'w'

120

0x78

b'x'

121

0x79

b'y'

122

0x7A

b'z'

123

0x7B

b'{'

124

0x7C

b'|'

125

0x7D

b'}'

126

0x7E

b'~'

127

0x7F

b'\x7f'

128

0x80

b'\x80'

129

0x81

b'\x81'

130

0x82

b'\x82'

131

0x83

b'\x83'

132

0x84

b'\x84'

133

0x85

b'\x85'

134

0x86

b'\x86'

135

0x87

b'\x87'

136

0x88

b'\x88'

137

0x89

b'\x89'

138

0x8A

b'\x8a'

139

0x8B

b'\x8b'

140

0x8C

b'\x8c'

141

0x8D

b'\x8d'

142

0x8E

b'\x8e'

143

0x8F

b'\x8f'

144

0x90

b'\x90'

145

0x91

b'\x91'

146

0x92

b'\x92'

147

0x93

b'\x93'

148

0x94

b'\x94'

149

0x95

b'\x95'

150

0x96

b'\x96'

151

0x97

b'\x97'

152

0x98

b'\x98'

153

0x99

b'\x99'

154

0x9A

b'\x9a'

155

0x9B

b'\x9b'

156

0x9C

b'\x9c'

157

0x9D

b'\x9d'

158

0x9E

b'\x9e'

159

0x9F

b'\x9f'

160

0xA0

b'\xa0'

161

0xA1

b'\xa1'

162

0xA2

b'\xa2'

163

0xA3

b'\xa3'

164

0xA4

b'\xa4'

165

0xA5

b'\xa5'

166

0xA6

b'\xa6'

167

0xA7

b'\xa7'

168

0xA8

b'\xa8'

169

0xA9

b'\xa9'

170

0xAA

b'\xaa'

171

0xAB

b'\xab'

172

0xAC

b'\xac'

173

0xAD

b'\xad'

174

0xAE

b'\xae'

175

0xAF

b'\xaf'

176

0xB0

b'\xb0'

177

0xB1

b'\xb1'

178

0xB2

b'\xb2'

179

0xB3

b'\xb3'

180

0xB4

b'\xb4'

181

0xB5

b'\xb5'

182

0xB6

b'\xb6'

183

0xB7

b'\xb7'

184

0xB8

b'\xb8'

185

0xB9

b'\xb9'

186

0xBA

b'\xba'

187

0xBB

b'\xbb'

188

0xBC

b'\xbc'

189

0xBD

b'\xbd'

190

0xBE

b'\xbe'

191

0xBF

b'\xbf'

192

0xC0

b'\xc0'

193

0xC1

b'\xc1'

194

0xC2

b'\xc2'

195

0xC3

b'\xc3'

196

0xC4

b'\xc4'

197

0xC5

b'\xc5'

198

0xC6

b'\xc6'

199

0xC7

b'\xc7'

200

0xC8

b'\xc8'

201

0xC9

b'\xc9'

202

0xCA

b'\xca'

203

0xCB

b'\xcb'

204

0xCC

b'\xcc'

205

0xCD

b'\xcd'

206

0xCE

b'\xce'

207

0xCF

b'\xcf'

208

0xD0

b'\xd0'

209

0xD1

b'\xd1'

210

0xD2

b'\xd2'

211

0xD3

b'\xd3'

212

0xD4

b'\xd4'

213

0xD5

b'\xd5'

214

0xD6

b'\xd6'

215

0xD7

b'\xd7'

216

0xD8

b'\xd8'

217

0xD9

b'\xd9'

218

0xDA

b'\xda'

219

0xDB

b'\xdb'

220

0xDC

b'\xdc'

221

0xDD

b'\xdd'

222

0xDE

b'\xde'

223

0xDF

b'\xdf'

224

0xE0

b'\xe0'

225

0xE1

b'\xe1'

226

0xE2

b'\xe2'

227

0xE3

b'\xe3'

228

0xE4

b'\xe4'

229

0xE5

b'\xe5'

230

0xE6

b'\xe6'

231

0xE7

b'\xe7'

232

0xE8

b'\xe8'

233

0xE9

b'\xe9'

234

0xEA

b'\xea'

235

0xEB

b'\xeb'

236

0xEC

b'\xec'

237

0xED

b'\xed'

238

0xEE

b'\xee'

239

0xEF

b'\xef'

240

0xF0

b'\xf0'

241

0xF1

b'\xf1'

242

0xF2

b'\xf2'

243

0xF3

b'\xf3'

244

0xF4

b'\xf4'

245

0xF5

b'\xf5'

246

0xF6

b'\xf6'

247

0xF7

b'\xf7'

248

0xF8

b'\xf8'

249

0xF9

b'\xf9'

250

0xFA

b'\xfa'

251

0xFB

b'\xfb'

252

0xFC

b'\xfc'

253

0xFD

b'\xfd'

254

0xFE

b'\xfe'

255

0xFF

b'\xff'