Map structure: Difference between revisions

From ProjectPokemon Wiki
Jump to navigation Jump to search
No edit summary
m (Reverted edits by Atofeqoly (Talk) to last version by CuleX)
Line 1: Line 1:
----
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
----
=[http://ezapazuhem.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=
----
=[http://ezapazuhem.co.cc CLICK HERE]=
----
</div>
[[Category:ROM Hacking]]
[[Category:ROM Hacking]]
[[Category:Structures]]
[[Category:Structures]]
Line 19: Line 11:


{|
{|
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
! Location
! Location
! Description
! Description
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x00
| 0x00
| Permission Size
| Permission Size
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x04
| 0x04
| Object Size
| Object Size
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x08
| 0x08
| Model size
| Model size
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x0c
| 0x0c
| BDHC size
| BDHC size
Line 48: Line 40:
Here's a table of the movement flags represented as hex bytes:
Here's a table of the movement flags represented as hex bytes:


{| border=&quot;1&quot; style=&quot;border: 1px solid #999; border-collapse: collapse;&quot;
{| border="1" style="border: 1px solid #999; border-collapse: collapse;"
|- style=&quot;background: #ccc;&quot; align=&quot;center&quot;
|- style="background: #ccc;" align="center"
! Hex Value
! Hex Value
! Movement type
! Movement type
! Game
! Game
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 00
| 00
| Any Movement
| Any Movement
| HGSS/ DPPt
| HGSS/ DPPt
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 04
| 04
| No special permissions
| No special permissions
| HGSS
| HGSS
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 80
| 80
| No movement
| No movement
Line 68: Line 60:
Here's a table of special permissions represented as hex bytes:
Here's a table of special permissions represented as hex bytes:


{| border=&quot;1&quot; style=&quot;border: 1px solid #999; border-collapse: collapse;&quot;
{| border="1" style="border: 1px solid #999; border-collapse: collapse;"
|- style=&quot;background: #ccc;&quot; align=&quot;center&quot;
|- style="background: #ccc;" align="center"
! Hex Value (decimal)
! Hex Value (decimal)
! Movement type
! Movement type
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 00
| 00
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 02
| 02
| Grass
| Grass
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 03
| 03
| High Grass
| High Grass
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|04-09
|04-09
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|10-12
|10-12
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|13
|13
| Waterfall
| Waterfall
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|14-15
|14-15
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|16
|16
| Go down 1
| Go down 1
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|17
|17
| Water on the foots?
| Water on the foots?
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|18
|18
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|19
|19
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|1A-1B
|1A-1B
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|1C
|1C
| Go down
| Go down
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|1D-20
|1D-20
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|21
|21
| Foot on sand
| Foot on sand
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|22  
|22  
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|23-29
|23-29
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|2A
|2A
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|2B-32
|2B-32
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|33  
|33  
| Blocked
| Blocked
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|34-35
|34-35
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|36-37
|36-37
| Blocked
| Blocked
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|38-39
|38-39
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|3A
|3A
| Jump up 1
| Jump up 1
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|3B
|3B
| Jump under 1
| Jump under 1
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|3C-3F
|3C-3F
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|40
|40
| Rotate right
| Rotate right
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|41
|41
| Rotate left
| Rotate left
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|42
|42
| Rotate up
| Rotate up
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|43
|43
| Rotate down
| Rotate down
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|44-48
|44-48
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|49
|49
| Blocked
| Blocked
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|4A
|4A
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|4B
|4B
| Rock Climb
| Rock Climb
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|4C-4F
|4C-4F
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|50-53
|50-53
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|54-5D
|54-5D
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|5E
|5E
| Stairs down
| Stairs down
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|5F
|5F
| Stairs up
| Stairs up
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|60-63
|60-63
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|64
|64
| Go in without animation door
| Go in without animation door
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|65  
|65  
| Go out of building
| Go out of building
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|66
|66
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|67  
|67  
| Jump and transport in building
| Jump and transport in building
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|68
|68
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|69  
|69  
| Doors opening
| Doors opening
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|6A-6D  
|6A-6D  
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|6E
|6E
| Go in without animation door
| Go in without animation door
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|6F-70
|6F-70
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|71
|71
| Be on bike
| Be on bike
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|72
|72
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|73
|73
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|74-77
|74-77
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|78
|78
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|79-7B
|79-7B
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|7C
|7C
| Surfing
| Surfing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|7D-82
|7D-82
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|83
|83
| Open pc
| Open pc
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|84
|84
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|85
|85
| Open map sinnoh
| Open map sinnoh
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|86
|86
| Battle Watch(Tv program)
| Battle Watch(Tv program)
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|87-A0
|87-A0
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A1
|A1
| Hiro under snow(Middle)
| Hiro under snow(Middle)
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A3
|A3
| Hiro under snow(Only hat out)
| Hiro under snow(Only hat out)
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A4
|A4
| Hiro under mug(middle)
| Hiro under mug(middle)
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A5
|A5
| Hiro under mug(only hat out)
| Hiro under mug(only hat out)
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A6
|A6
| Grass mug
| Grass mug
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A7
|A7
| Under grass mug
| Under grass mug
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|A9
|A9
| Snow low
| Snow low
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|AA-D2
|AA-D2
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|D3-D9
|D3-D9
| Ride jump left
| Ride jump left
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|DB
|DB
| Ride bike
| Ride bike
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|DC-DF
|DC-DF
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|E0
|E0
| It’s lined with Pokémon picture books  
| It’s lined with Pokémon picture books  
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|E1
|E1
| It’s full of Pokemon book
| It’s full of Pokemon book
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|E2
|E2
| Pokémon magazines!  
| Pokémon magazines!  
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|E4
|E4
| The trash can is empty.
| The trash can is empty.
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|E5  
|E5  
|The shelves are jammed with colourful Pokémon Goods
|The shelves are jammed with colourful Pokémon Goods
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|E6-EA
|E6-EA
| Nothing
| Nothing
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|EB
|EB
| There's a ton of convenient item...
| There's a ton of convenient item...
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|EC
|EC
| The shelves brin....
| The shelves brin....
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|ED-FF
|ED-FF
| Free passage
| Free passage
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
|}
|}


Line 326: Line 318:
We find a sequence of 0x30 hex number in which we find all information of objects
We find a sequence of 0x30 hex number in which we find all information of objects


{| border=&quot;1&quot; style=&quot;border: 1px solid #999; border-collapse: collapse;&quot;
{| border="1" style="border: 1px solid #999; border-collapse: collapse;"
|- style=&quot;background: #ccc;&quot; align=&quot;center&quot;
|- style="background: #ccc;" align="center"
! Hex Value (decimal)
! Hex Value (decimal)
! Explanation
! Explanation
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x00-0x01
| 0x00-0x01
| Model number
| Model number
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x05-0x08  
| 0x05-0x08  
| X coordinates
| X coordinates
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x0A-0x0C
| 0x0A-0x0C
| Y coordinates
| Y coordinates
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x0E-0x10
| 0x0E-0x10
| Z coordinates
| Z coordinates
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x1E
| 0x1E
| Model widht
| Model widht
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x22
| 0x22
| Model height
| Model height
|- style=&quot;background: #eee;&quot; align=&quot;center&quot;
|- style="background: #eee;" align="center"
| 0x25
| 0x25
| Model lenght
| Model lenght

Revision as of 04:46, 27 November 2010


Map Structure

Maps in Pokemon Diamond and Pearl are stored in fielddata\landdata directory. List of Maps

Each map is divided in four parts

The first 0x10 bytes give the sizes of each section as such:

Location Description
0x00 Permission Size
0x04 Object Size
0x08 Model size
0x0c BDHC size

FIRST PART- MOVEMENT PERMISSION

First part represents movement permission. It's length depends from maps and is characterized by a sequence of XX YY XX YY ...

XX = special permissions

YY = movement flag

Here's a table of the movement flags represented as hex bytes:

Hex Value Movement type Game
00 Any Movement HGSS/ DPPt
04 No special permissions HGSS
80 No movement HGSS/ DPPt

Here's a table of special permissions represented as hex bytes:

Hex Value (decimal) Movement type
00 Free passage
02 Grass
03 High Grass
04-09 Free passage
10-12 Surfing
13 Waterfall
14-15 Surfing
16 Go down 1
17 Water on the foots?
18 Free passage
19 Surfing
1A-1B Free passage
1C Go down
1D-20 Free passage
21 Foot on sand
22 Surfing
23-29 Free passage
2A Surfing
2B-32 Free passage
33 Blocked
34-35 Free passage
36-37 Blocked
38-39 Free passage
3A Jump up 1
3B Jump under 1
3C-3F Free passage
40 Rotate right
41 Rotate left
42 Rotate up
43 Rotate down
44-48 Free passage
49 Blocked
4A Free passage
4B Rock Climb
4C-4F Free passage
50-53 Surfing
54-5D Free passage
5E Stairs down
5F Stairs up
60-63 Free passage
64 Go in without animation door
65 Go out of building
66 Free passage
67 Jump and transport in building
68 Free passage
69 Doors opening
6A-6D Free passage
6E Go in without animation door
6F-70 Free passage
71 Be on bike
72 Free passage
73 Surfing
74-77 Free passage
78 Surfing
79-7B Free passage
7C Surfing
7D-82 Free passage
83 Open pc
84 Free passage
85 Open map sinnoh
86 Battle Watch(Tv program)
87-A0 Free passage
A1 Hiro under snow(Middle)
A3 Hiro under snow(Only hat out)
A4 Hiro under mug(middle)
A5 Hiro under mug(only hat out)
A6 Grass mug
A7 Under grass mug
A9 Snow low
AA-D2 Free passage
D3-D9 Ride jump left
DB Ride bike
DC-DF Free passage
E0 It’s lined with Pokémon picture books
E1 It’s full of Pokemon book
E2 Pokémon magazines!
E4 The trash can is empty.
E5 The shelves are jammed with colourful Pokémon Goods
E6-EA Nothing
EB There's a ton of convenient item...
EC The shelves brin....
ED-FF Free passage

SECOND PART- 3D OBJECTS

In this parts we find 3d objects that are showed in the map. We find a sequence of 0x30 hex number in which we find all information of objects

Hex Value (decimal) Explanation
0x00-0x01 Model number
0x05-0x08 X coordinates
0x0A-0x0C Y coordinates
0x0E-0x10 Z coordinates
0x1E Model widht
0x22 Model height
0x25 Model lenght

For more information, go to Model list

THIRD PART- NSBMD MODEL MAP

The NSBMD format will have its own page. NSBMD

FOURTH PART- BDHC

Currently the BDHC is known to have two parts. The first part controls base height of entire map. The second part only exists in maps with changes in height (e.g. stairs).