I've finally gotten to know how to do map editing on the DS, although part of it is still touchy. I'll split this into several sections and cover each part of it. Table of Contents 1. What you need 2. Exporting a map 3. Editing a map 4. Importing a map 5. Movement Permissions and objects 6. Headers and the Map Matrix 7. Credits and Final Info What you will need Spiky's DS Map Editor (SDSME) - You can get the latest version from this thread. (Version 1.1 Min. required) Nintendo NITRO SDK 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 SDK. MKDS Track Editor (You can find the required version here) 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. Save it to a location of your liking. Note, however, that it's in .nsbmd format, something we can't really edit yet. That's where the MKDS (Mario Kart DS) Track Editor comes into play. Now, just because it's for MKDS doesn't mean we can borrow other useful parts of the program for our needs. Start MKDS Editor, then click Tools, go to NSBMD, then click "Convert to OBJ". Browse to your NSBMD file you exported with SDSME, then click OK. Another box will pop up, a save file dialog, so choose the location where you want the OBJ to be saved. When typing in the name of the file, remember to add ".obj" to the end of it, it will save you much time later on. Click OK, then the program will export the NSBMD to OBJ. Now, close MKDS Editor, as we will not need it anymore. 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: WARNING! Spoilers inside! WARNING! Spoilers inside! WARNING! Spoilers inside! 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. Note: When importing a model, the MKDS Editor will add a white, textureless box to the bottom of the model It is safe to remove, well, unless you wanna keep that there. 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!) WARNING! Spoilers inside! 00 - Any movement WARNING! Spoilers inside! WARNING! Spoilers inside! 01 - Any movement 02 - Grass 03 - Tall Grass 04 - Any movement 05 - Any movement 06 - Any movement 07 - 08 09 0A 0B 0C 0D 0E 0F 10 - Surf 11 - Surf 12 - Surf 13 - Waterfall (Top of) 14 - Surf 15 - Surf 16 - Splash puddle 17 - Splash Water (For Routes) 18 19 1A 1B 1C 1B 1E 1F 20 21 - Sand 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 - Jump Right ledge 39 - Jump Left ledge 3A 3B - Jump down ledge 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C - Rock Climb paths 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F - Indoor stairs - Highest point 60 61 62 63 64 65 66 67 68 69 - Door entrance 6A 6B 6C 6D 6E 6F 70 - Top/Bottom of sandy slope (Initates movement action, Layer change) 71 - Middle sections of sandy slopes (Layer change, over/under interaction) 72 73 - Bridge with no under interaction 74 75 76 - Single-width bike paths 77 78 79 - Single-width bike paths (U-D, Sand underneath) 7A - Single-width bike paths 7B 7C - Single-width bike paths 7D - Single-width bike paths (L-R, Sand underneath) 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9C 9E 9F 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 A6 A7 A8 - Snow A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 - Top of Sandy Slope (Desert) DA - Bottom of Sandy Slope (Desert) DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 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, click the View button to preview it. The Command Prompt window that appears will provide instructions on how to manipulate the program. They are as follows: -Left Button held will rotate the model. -Right Button hold will zoom the model. -T toggles textures on/off -C toggles vertex colors (Not sure what this does, but okay) -W toggles wireframes (You can see a wireframe by disabling textures) -B toggles backface culling (What this is, is when you view a model from the back, you won't see anything. Enable this and you can see a model from the back with a mirrored image of the texture on the front side. It's easier to see this in action though, so just try it when you use the program.) -F toggles texture filtering (It will make the textures smoother, like it's rendered in a DS game if enabled.) -P toggles polygons (Some parts of models will disappear/appear when toggled) You can use that window to preview objects. If the model does not appear, 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!) : WARNING! Spoilers inside! 01 = Dark WARNING! Spoilers inside! WARNING! Spoilers inside! 02 = Rain 1 03 = Rain 2 04 = Rain 3 05 = Snow 1 06 = Snow 2 07 = Snow 3 08 = White background 09 = Ash rain 1 10 = Ash rain 2 11 = Diamond rain (Birthday-Event) 12 = Earthquake 13 = Hall of beginning 14 = Fog 1 15 = Fog 2 16 = Dark cave 1 17 = Flash and lightning Music can be any of the following DP values (I'm too lazy to translate) : WARNING! Spoilers inside! 1000: Mysterious zone WARNING! Spoilers inside! WARNING! Spoilers inside! 1001: Nothing 1004: Twinleaf town 1005: Sandgem town 1006: Floa 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) 1017: Sonnenwik 1018: Blizzard 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 1031: Ewigenau 1032: Route 205 1033: Twinleaf town 1034: Sandgem town 1035: Flori 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) 1060: Underground 1061: Basis-Fahne geklaut! 1062: Siegesstrasse 1063: Secret melody 1064: Grusel-song 1065: Trio cave 1066: Platz der Treue 1067: Team Galactic 1 1068: Team Galactic 2 1069: Grossmor 1070: Trio lake 1071: Kraterberg 1072: Speersäule 1073: Kahlberg 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) 1087: Gym 1088: Ruhmeshalle 1089: Knursperei/Contest hall 1090: Pokémon Mart 1091: Game Corner 1092: Duellturm 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 1118: Trio 1119: Trainer 1120: Team galactic boss: Cyrus 1121: Dialga/Palkia 1122: Champion Cynthia 1123: Galactic Rüpel 1124: Rivale 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! 1140: Verbrecher! 1141: Pokémon trade 1144: Dialga/Palkia enters our Dimension 1 1145: Dialga/Palkia enters our Dimension 2 1150: Poké-Radar 1151: Surf song 1152: Bicycle Theme 1169: Knursp-House 1171: Ruhmeshalle 2 1172: Intro 1173: Titlescreen 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 1186: Credits 1187: Knurspe backen Camera can use these values (DPPt Only) : WARNING! Spoilers inside! 00 - Basic 3D WARNING! Spoilers inside! WARNING! Spoilers inside! 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. 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 Gericom for the MKDS Track Editor The creator of the NSBMD viewer Nintendo for the super-useful plugins Google for Sketchup Alias for Maya Autodesk for 3DS Max Kodewerx for the Header values Changelist: 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://gbatemp.net/index.php?app=members&module=messaging§ion=send&do=form&fromMemberID=261213.