Spiky's DS Map Editor (SDSME) - You can get the latest version from this thread. (Version 1.1 Min. required)
Nintendo NITRO System Kit Plugins for either Maya or Autodesk 3DS Max (You can find these in a copy of the NITRO SDK. You'll have to Google for these, however, as they are copyright Nintendo.) and the program G3DCVTR, also in the NITRO System Kit *Thanks to Bond697 for a tad of clarification here*.
MKDS Track Editor (You can find the required version here)NO LONGER NEEDED!
Google Sketchup (Or another similar 3D editor that can import OBJ files. Note: If you're using Sketchup 8, download this (Click the orange Download button!) and install it, as it will allow importing of OBJ files.) Note: This is a paid program after the 8-hour limit, so it's up to you on what to do from there.
3DS Max 6 OR Alias Maya versions 5.0, 6.0, 6.5 or 7.0 (Depending on what version of the SDK Plugin you want to use) (Note: These are paid programs, so it's your choice on how you plan to obtain these programs.)
Exporting a Map
To begin with your map editing, you'll want to export your map. To begin, download and open SDSME, and open your Rom of choice. Wait for it to open the Rom and simply dismiss the Headers Found messagebox. Afterwards, you're free to do whatever you wish, but for our needs, click the Matrix Editor tab, then underneath, click the Map Files sub-tab, as seen in the image below:
Now, we must find the map you wish to edit. The map matrix is in the shape of the region of the game you're editing, so find the location that it is on that map, then double-click on the location where it is. Large locations are split into multiple maps as well, such as Jubilife City(DPPt) or Goldenrod City(HGSS). From here, we're going to export our map. Click the "Export" button underneath the 3D Model section, then under Save As Type, select "Wavefront OBJ Model Files". Save it to a location of your liking. Now open Google Sketchup (Or whatever program you use to edit models), and import the OBJ file. Congratulations! You've successfully exported your map file!
Editing a Map This part is geared towards Google Sketchup 8. Therefore, your mileage may vary.
To import your map into Sketchup 8, ensure the plugin from fluidray is installed first. If not, click the link above to go to the download page, download and install the plugin. Then, restart Sketchup 8. From here, you'll want to start a new project, then delete the person that's standing at the origin of the 3D area, by clicking him/her, then pressing the Delete button on your keyboard. Now, go File -> Import... and select your OBJ file you exported with the MKDS editor. If Obj Files is not in your filetypes list, ensure the fluidray plugin is installed properly.
From here, a window will pop up. Leave everything as it is, except for Flip YZ. If you believe your settings are different, compare them with the settings below:
Units: Meters Flip YZ?: Yes (Doing so will set the map in the correct orientation. You can say No, and fix this later, but to prevent pains down the road, just set this to Yes.) Triangulate Polygons?: Yes (And please keep this to Yes. It will prevent pains later on!) Ignore Material Library?: Set this to No.
Now, after you've clicked OK, the map file, with all it's textures, will be attached to your mouse for you to position. For simplicity's sake, place it on the Origin. You'll know it's on the origin, because it shows "Origin" in a popup window beside your mouse, like in the image below:
From here, you're free to edit your maps. To break it down, select the map, then go Edit -> Component (It's the bottom option), and in the pop-out menu, click Explode. It will break it down into components, which in themselves, can be exploded in the same way. From there, you can select polygons, move them, expand them, add them, remove them, and so on and so forth. Once you're all done, go Export, click on 3D Model in the popout menu, then save it as an OBJ file. You are now done editing the model. We now begin the long, tedious task of importing the model.
Importing a Map
(To be added later, as I need to perfect this.)
Movement Permissions and objects
Movement permissions are the most essential part of any map. They determine where grass is, where you can surf, where sandy slopes are, and more. To edit movement permissions, head back to the Map Editor tab on your chosen map of question. All the different parts represent movement permissions- whether they can be walked through, or if you can surf on it. The following spoiler contains a partial list of all the movement permissions for Diamond and Pearl (Feel free to document the rest, and for those of other games!)
00 - Any movement
01 - Any movement
02 - Grass
03 - Tall Grass
04 - Any movement
05 - Any movement
06 - Any movement
10 - Surf
11 - Surf
12 - Surf
13 - Waterfall (Top of)
14 - Surf
15 - Surf
16 - Splash puddle
17 - Splash Water (For Routes)
21 - Sand
38 - Jump Right ledge
39 - Jump Left ledge
3B - Jump down ledge
4C - Rock Climb paths
5F - Indoor stairs - Highest point
69 - Door entrance
70 - Top/Bottom of sandy slope (Initates movement action, Layer change)
71 - Middle sections of sandy slopes (Layer change, over/under interaction)
73 - Bridge with no under interaction
76 - Single-width bike paths
79 - Single-width bike paths (U-D, Sand underneath)
7A - Single-width bike paths
7C - Single-width bike paths
7D - Single-width bike paths (L-R, Sand underneath)
A0 - Berry Soil
A1 - Snow - 1 layer deep
A2 - Snow - 2 layers deep
A3 - Snow - 3 layers deep
A4 - Swamp Walkable
A5 - Swamp Fall-in step
A8 - Snow
D9 - Top of Sandy Slope (Desert)
DA - Bottom of Sandy Slope (Desert)
To edit a movement permission, click on a tile, then change it's value to one in the list above. Press Enter on the keyboard when you're done, and it will set the value of that tile. Of course, you can also set the ability for a tile to be passable or non-passable. To do this, select a tile, then in the top-right part of the window, choose between "Free Passage" or "No Passage". When done editing, click "Save Current" in the lower-left section of the window beside the movement permissions editor to write the changes to the map file. That's all there really is to editing movement permissions, but what about objects, like houses or fountains?
To add a new object (Or edit an existing one), click the "Edit Buildings" button under the "Buildings" header. From here, a models list and a preview window (With your movement permissions) will show up. Select a building. To change what kind of building/model it is, change the Model Index number in the numeric number changer. If you don't know what it looks like, there is a new preview window (As of SDSME 1.5.0) that has a list of all objects in the game, as well as a viewer for the objects. You can also export OBJ/NSBMD object files from here for editing.
You can use that window to preview objects. If the model does not appear in-game, that's because in the header, the textures 2 header byte does not display that object. Edit that header bit to change the model textures. (This will be explained later)
You can change the width/height/length heights as well, with the text fields at the bottom of the Buildings window, and you can change the X/Y/Z co-ordinates of an object. Note, though...
X - Move an object left or right
Y - Move an object higher or lower from the surface of the map
Z - Move an object up or down
When done, click "Save Current", then just click the X in the top corner.
Headers and the Map Matrix
Headers are what allows you to choose what song plays on a map, weather, script sets, and more. To choose the proper map's header, head to the Matrix Editor, then click the Map Headers sub-tab.
This also, like the map data tab, looks like the region of the map in your respective version. Find that map, then double-click on it. It will bring you to the headers tab with the respective header for that map highlighted.
For the weather tab, you can replace that number with any of the following values (DPPt Only!) :
3 Heavy Rain
4 Thunderstorm with Heavy Rain
8 White Background
9 Volcanic Ash
11 Diamond Dust
12 Rising Rocks
13 Purple and Black Background
14 Gradiant White Fog
15 Gradiant Black Fog
16 Dark Area (Requires Flash)
17 Thunderstorm with No Rain
18 Light Fog
19 Thick Fog
23 Tree Shade
24 Very Dark Area
25 Very Dark Area
26 Black Layer
27 Cyan Layer
28 Red Layer
29 Blue Layer
30 Black Layer
31 Crash Upon Entering
32 Rain, Heavy Rain or Thunderstorm with Heavy Rain
33 Normal, Cloudy or Rain
34 Hail or Blizzard
35 Hail or Snow
36 Normal, Snow or Diamond Dust
37 - 255 Cycles through weather effects 32, 33, 34 and 35 with each value from 37 to 255.
Music can be any of the following DP values (I'm too lazy to translate) :
1000: Mysterious zone
1004: Twinleaf town
1005: Sandgem town
1007: Trostu/Weideburg (Day)
1008: Kahlberg (Outside) Route 225/226/227 (Day)
1009: Erholungsgebiet/Kühnheitsufer/Route 213 (Day)
1010: Jubilife city (Day)
1011: Fleetburg (Day)
1012: Erzelingen (Day)
1013: Elyses/Ewigenau (Day)
1014: Herzhofen (Day)
1015: Trostu/Weideburg (Day)
1016: Schleide (Day)
1019: Pokémon league (day)
1020: Battle area/Survival area (Day)
1021: Route 201
1022: Route 203/218 (Day)
1023: Route 205/West-211 (Day)
1024: Route 206 (Day)
1025: Route (Day)
1026: Route East-211 (Day)
1027: Route 216 (Day)
1028: Route 228/229 (Day)
1029: Prof. Rowan's labor
1030: Search for the red Gyarados
1032: Route 205
1033: Twinleaf town
1034: Sandgem town
1036: Trostu/Weideburg (Night 2)
1037: Kahlberg (outside) Route 225/226/227 (Night)
1038: Erholungsgebiet/Kühnheitsufer/Route 213 (Night)
1039: Jubilife city (Night)
1040: Fleetburg (Night)
1041: Erzlingen (Night)
1042: Elyses/Ewigenau (Night)
1043: Herzhofen (Night)
1044: Trostu/Weideburg (Night)
1045: Schleide (Night)
1046: Sonnenwik (Night)
1047: Blizzach (Night)
1048: Pokémon league (Night)
1049: Battle area/Survival area (Night)
1050: Route 201
1051: Route 203/218 (Night)
1052: Route 205/West-211/Valley windworks(Night)
1053: Route 206 (Night)
1054: Route (Night)
1055: Route Ost-211 (Night)
1056: Route 216 (Night)
1057: Route 228/229 (Night)
1058: Elyses/Ewigenau (Special)
1059: Route 205 (Special)
1061: Basis-Fahne geklaut!
1063: Secret melody
1065: Trio cave
1066: Platz der Treue
1067: Team Galactic 1
1068: Team Galactic 2
1070: Trio lake
1074: Cave 1
1075: Cave 2
1076: Pokémon League(inside)
1077: Hall of fame
1084: Prof. Rowans laboratory
1085: Pokémon Center (day)
1086: Pokémon Center (Night)
1089: Knursperei/Contest hall
1090: Pokémon Mart
1091: Game Corner
1093: Jubilife city TV station
1094: Secret laboratory (Team Galactic)
1100: Trainer spotted! (Teenager)
1101: Trainer spotted! (Planscher)
1102: Trainer spotted! (Rocker/Policeman/Psychic/Schwarzgurt)
1103: Trainer spotted! (Team galactic grunt)
1104: Trainer spotted! (Umbrella lady/Beauty)
1105: Trainer spotted! (Runemaniac/Explorer)
1106: Trainer spotted! (Gambler)
1107: Trainer spotted! (Angler/Sailer)
1108: Trainer spotted! (Forscher/PKMN-Sammler)
1109: Trainer spotted! (Ass-Trainer/PKMN-Ranger)
1113: Elite four battle!
1114: Champion Cynthia battle!
1116: Wild Pokémon
1117: Gym theme
1120: Team galactic boss: Cyrus
1122: Champion Cynthia
1123: Galactic Rüpel
1125: The god pokémon: arceus
1126: Legendary Pokémon
1127: Pokémon caught
1128: Trainer sighted
1129: Gym leader meeting
1130: Champion Cynthia meeting
1131: Team glactic Commander/Rüpel meeting
1132: Team galctit boss: Cyrus
1133: Elite four meeting
1134: Team galactic Commander: Jupiter/Mars/Saturn
1136: Elite four
1138: No Chase
1139: Rival spotted!
1141: Pokémon trade
1144: Dialga/Palkia enters our Dimension 1
1145: Dialga/Palkia enters our Dimension 2
1151: Surf song
1152: Bicycle Theme
1171: Ruhmeshalle 2
1174: Wi-Fi 1
1175: Wi-Fi 2
1176: Contest dancing-song 1
1177: Contest dancing-song 1
1178: Contest dancing-song 1
1179: Contest dancing-song 2
1180: Contest dancing-song 2
1181: Contest Price ceremony
1182: Contest Winner
1183: Knurspe backen
1187: Knurspe backen
Camera can use these values (DPPt Only) :
00 - Basic 3D
04 - Basic 2D
05 - 3D Like on Spear Pillar
08 - 3D Camera high placed, like on Stark Mountain
09 - 3D Better sight, like in the Eterna City arena
14 - 3D Little dwarfs in a world of giants, like in Hall of Origin
Note: If you use the "Music Modifier", Weather Modifier, or Motion 3D Action Replay codes, the value you input into the calculator will be the same value you can use in these tabs.
Note 2: Be sure to press the "Enter" or "Return" key on your keyboard or select another cell in the editor before you save your changes, or else SDSME will not actually save the new header values.
And with that, this concludes the DS Mapping Tutorial.
Credits and Final Info
I'd like to give my thanks to a few people and groups:
Spiky-Eared Pichu/Markitus95 for the amazing editor and for telling me some of these bits of info that got this tutorial going
Platinum Lucario for the completed list of weather values and SDSME Header Editor warning
4/10/12: Changed a setting to ensure confusion does not come about concerning importing, and reworded the reposting bit at the bottom.
4/10/12: Added a disclaimer.
11/25/12: Added info regarding SDSME 1.5.0.
This tutorial was written by Team Fail. If you wish to publish this tutorial on another site, please PM or VM me and we can discuss such options. In saying so, please do not post without express permission from me. If you find any unauthorized copies of this thread on the internet, please PM me at http://www.pokecommunity.com/private...newpm&u=150187.
You use Maya/3DS Max with the NITRO SDK plugins. The plugins, you WILL have to torrent/download. Here's how they're used:
Export from Sketchup as OBJ -> Open in Maya/3DS Max as OBJ -> Export as .IMD (Only can be done through SDK plugins, as the programs do not support IMD natively) -> Convert in G3DCVTR -> Insert using SDSME
It's pretty close to that, but I'm still missing something, as my maps don't insert properly. =\
Thanks so much for the tutorial, for a while I was using Autodesk 3ds Max 8... which I have actually learned how to use some of it's functions except for assigning new material to a newly added polygon... which I'd really like to learn how to do that.
As far as I'm concerned... I have fixed the material on Nuvema Town after importing the .obj into 3ds Max 8 and got it's textures working correctly, just by simply going to material editor, which is that box with the four coloured balls on it. Once you've opened it, in where it says "Self-Illumination"... click on the square on the right, then double click bitmap and select the texture you'd like, then click "Show Map in Viewport", which has an icon that looks like a cube with squares on it.
However... I've tried that with a newly added polygon and it doesn't work, if someone is able to tell me before I learn how to, I would be greatly appreciated.
Anyways, if anyone is trying to extract the model data of a map in Black/White or Black2/White2, you will have to use a hex editor for it and your intelligence. First you start off at where it says in the text "BMD0", which is the title of the BMD0 header, then select the bytes all the way down to where there is Euro cent symbols in the text, once you get there, look in the hexadecimal bytes area... and look for a "20 00 20", if you find it... stop the selection before those bytes, 'cause that area marks the header for (what I assume is) the movement permissions. After you've done that... copy those bytes and paste them onto a new file and save it as .nsbmd.
[Platinum Lucario's Signature]
Researching the NDS ROMs...
sure does feel like a brand new adventure!
I'm gradually learning to use Microsoft Visual Studio!
Always focus on the present, best thing to do! Never look back into the past and never worry about anything bad of the future!