1. loco365

    OP loco365 GBAtemp Guru
    Member

    Joined:
    Sep 1, 2010
    Messages:
    5,457
    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:
    [​IMG]
    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".
    [​IMG]
    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:
    [​IMG]


    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!)
    00 - Any movement
    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.
    [​IMG]
    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!) :
    01 = Dark
    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) :
    1000: Mysterious zone
    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) :
    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.

    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&section=send&do=form&fromMemberID=261213.
     
    2 people like this.
  2. basher11

    basher11 GBAtemp's Official Vocaloid Lover
    Member

    Joined:
    Jun 29, 2009
    Messages:
    4,385
    Country:
    United States
    the creator of MKDS Track editor is Gericom

    and I would love to see where this goes from here.
     
  3. Rydian

    Rydian Resident Furvert™
    Member

    Joined:
    Feb 4, 2010
    Messages:
    27,880
    Country:
    United States
    Damn, and here I thought it was purely tile-based.

    The engine seems even more impressive now.
     
  4. loco365

    OP loco365 GBAtemp Guru
    Member

    Joined:
    Sep 1, 2010
    Messages:
    5,457
    Awesome! Thanks! *Adds to credits*
    I totally wish they were tile-based. I find it bizarre that movement permissions are tile-based, though.
     
  5. Rydian

    Rydian Resident Furvert™
    Member

    Joined:
    Feb 4, 2010
    Messages:
    27,880
    Country:
    United States
    Well if the movement and maps are different it opens up more artistic freedom. Kinda' like 3D games having a different collision box than the actual levels and models indicate. If all videogame characters were boxes/cylinders and all the levels had to represent the actual collision boundaries things would look a lot more bland.
     
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - Pokémon, Mapping,