New Super Mario Bros. DS

Information about modding NSMB DS

General Info

General information about the game that doesn't need more than one page to explain

General Info

Level List

Every level in the game accompanied by its file name and how many areas it has.

Filename Level Name Area Count
A01 World 1-1 3 Areas
A02 World 1-2 3 Areas
A03 World 1-3 1 Area
A04 World 1-4 3 Areas
A05 World 1-5 2 Areas
A06 World 1-A 2 Areas
A07 W1 Tower 3 Areas
A08 W1 Castle 3 Areas
A09 Cannon (W1 to W5) 1 Area
B01 World 2-1 3 Areas
B02 World 2-2 2 Areas
B03 World 2-3 2 Areas
B04 World 2-4 2 Areas
B05 World 2-5 2 Areas
B06 World 2-6 2 Areas
B07 World 2-A 3 Areas
B08 W2 Tower 3 Areas
B09 W2 Castle 3 Areas
B10 Cannon (W2 to W5) 1 Area
C01 World 3-1 2 Areas
C02 World 3-2 2 Areas
C03 World 3-3 3 Areas
C04 World 3-A 3 Areas
C05 World 3-B 2 Areas
C06 World 3-C 2 Areas
C07 W3 Ghost House 3 Areas
C08 W3 Tower 2 Areas
C09 W3 Castle 2 Areas
C10 Cannon (W3 to W6) 1 Area
D01 World 4-1 1 Area
D02 World 4-2 2 Areas
D03 World 4-3 2 Areas
D04 World 4-4 2 Areas
D05 World 4-5 3 Areas
D06 World 4-6 2 Areas
D07 World 4-A 2 Areas
D08 W4 Ghost House 3 Areas
D09 W4 Tower 2 Areas
D10 W4 Castle 2 Areas
D11 Cannon (W4 to W7) 1 Area
E01 World 5-1 1 Area
E02 World 5-2 2 Areas
E03 World 5-3 2 Areas
E04 World 5-4 1 Area
E05 World 5-A 2 Areas
E06 World 5-B 1 Area
E07 World 5-C 2 Areas
E08 W5 Ghost House 3 Areas
E09 W5 Tower 2 Areas
E10 W5 Castle 2 Areas
E11 Cannon (W5 to W8) 1 Area
F01 World 6-1 2 Areas
F02 World 6-2 2 Areas
F03 World 6-3 2 Areas
F04 World 6-4 1 Area
F05 World 6-5 2 Areas
F06 World 6-6 3 Areas
F07 World 6-A 2 Areas
F08 World 6-B 1 Area
F09 W6 Tower 1 2 Areas
F10 W6 Tower 2 2 Areas
F11 W6 Castle 2 Areas
F12 Unused Cannon (W6 to W8) 1 Area
G01 World 7-1 1 Area
G02 World 7-2 2 Areas
G03 World 7-3 2 Areas
G04 World 7-4 1 Area
G05 World 7-5 3 Areas
G06 World 7-6 3 Areas
G07 World 7-7 1 Area
G08 World 7-A 2 Areas
G09 W7 Ghost House 3 Areas
G10 W7 Tower 2 Areas
G11 W7 Castle 2 Areas
H01 World 8-1 2 Areas
H02 World 8-2 3 Areas
H03 World 8-3 2 Areas
H04 World 8-4 2 Areas
H05 World 8-5 2 Areas
H06 World 8-6 2 Areas
H07 World 8-7 1 Area
H08 World 8-8 2 Areas
H09 W8 Tower 1 2 Areas
H10 W8 Tower 2 2 Areas
H11 W8 Castle 2 Areas
H12 W8 Final Castle 3 Areas
I01 1-Up Bonus Game 1 Area
I02 Item Bonus Game 1 Area
I03 Mega Mushroom Bonus Game 1 Area
I04 Bottom Screen Background Chooser 1 Area
J01 MvsL - SMB 1-1 1 Area
J02 MvsL - Underground 1 Area
J03 MvsL - Ice World 1 Area
J04 MvsL - Pipe World 1 Area
J05 MvsL - Castle 1 Area
J06 Unused Level 1 1 Area
J07 Unused Level 2 1 Area
J08 Unused Level 3 1 Area
J09 Unused Level 4 1 Area
J10 Unused Level 5 1 Area
General Info

Connected Pipes

Each end of the pipe needs an Entrance. Both must have the same connected pipe ID.
Set area 0 in one end and area 1 in the other end.

Make a Path with the same ID as the entrance's "Connected Pipe ID".
Each node on the path must be placed and "Value 6" in the node numbered as below:

Image of how to place the node in each pipe with its value:

Connected pipes.png

If value 6 does not show up for you, then try using the original NSMBe.

The path must be connected from one end of the pipe to the other; this is just to show the placement.
You can place more nodes on the path if you need, only the first and last need the above value 6 number.
World 7-A area 2 is good for more information.

Example shapes:
Reverse L

Reverse L.png

Setting a pipe as "exit only" also works, and is used in retail (eg 7-A).

General Info

File Table

A table of contents for the files inside of a NSMB DS ROM.

Note: bold entries are folders.

TODO: Expand this table to contain all files, splitting the table if needed

Files Subfiles Sub-sub-files Usefulness
fnt.bin     File Name Table It contains filenames, folders and folders names.
fat.bin     File Allocation Table It contains every file's address in the rom and its size.
header.bin     ?
arm9ovt.bin     It lists every arm9 overlay, its location in the rom and where it should be loaded in the ram.
arm7ovt.bin     It should list every arm7 overlay, its location in the rom and where it should be loaded in the ram.
arm9.bin     The code for the main processor.
arm7.bin     The code for the coprocessor.
banner.bin     It has the NSMB ROM game icon
rsasig.bin     Some signature
root      
  00DUMMY   Empty, NSMBe uses it to store tileset, their objects' descriptions, backgrounds and music names after renaming them
  BUILDTIME   Last game build time
  mgvs_sound_data.sdat   Minigames music
  sound_data.sdat   Main game music
  ARCHIVE   It contains all the Minigames graphics and MvsL stuffs
  BG_chk   Tile behaviors for tilesets
  BG_ncg   It contains all the Tilesets and BGs graphics stuff (only images, not palettes)
  BG_ncl   It contains all the Tileset and BGs palettes
  BG_nsc   It contains all the BGs' nsc files (remember the tilesets don't have a .nsc file)
  BG_pnl   Map16 for tilesets
  BG_unt   Objects info for tilesets
  course   It contains all the levels .bin files
  demo   It contains some cutscene stuffs
  ending   It contains other ending stuffs (like the tower BG)
  enemy   It contains the enemies' models and animations
  ipl   It contains the graphics of the icon visible on the DS/DSi/3DS family menu
  map   It contains all the Worldmap files
  obj   It contains the graphics of the 2D things
  particle   It contains particle files
  player   It contains player's models and animations
  polygon_unit   It contains some levels effects, the quicksand files, the pipe graphics, and the End-of-level graphics
  script   It contains BMG files (used for In-Level pause scripts, Worldmap's pause scripts, and for the Titlescreen's File Select scripts)
  uiStudio   It contains HUD files (ncg, ncl, nsc, bnbl, bncl and bncd)
overlay7     It should contain the overlays for the arm7 processor
overlay9     It contains the overlays for the arm9 processor
General Info

Music List

Level Header ID (Hex) ID in NSMBe/Nitro Studio (Decimal) Common Name Name in NSMBe SDAT Name (in sound_data.sdat)
00 0 None/MvsL Stage Theme 1 (in some cases)* MvsL Stage BGM_VS_CHIJOU
01 1 Tower Tower BGM_TRIDE.sseq
02 2 Starman Starman BGM_MUTEKI.sseq
03 3 Mega Mario Mega Mario BGM_HUGE.sseq
04 4 End of Level (+ MvsL battle win) End of Level BGM_COURSE_CLEAR.sseq
05 5 Death Death BGM_DOWN.sseq
06 6 Desert Desert BGM_SABAKU.sseq
07 7 Boss Boss BGM_BOSS.sseq
08 8 VS battle lose VS Lose BGM_VS_LOSE_FANFARE
09 9 Underground Underground BGM_CHIKA.sseq
0A 10 Bonus room Bonus room BGM_MAME.sseq
0B 11 Underwater Underwater BGM_WATER3.sseq
0C 12 Lava Lava BGM_KAZAN_SOTO.sseq
0D 13 End Credits (Early/Unused, shorter) End Credits BGM_SAMPLE
0E 14 Beach Beach BGM_SANBASHI.sseq
0F 15 Bowser Jr. Battle Bowser Jr. Battle BGM_KUPPAJR
10 16 Ghost House Ghost House BGM_OBAKE.sseq
11 17 Castle Castle BGM_SHIRO.sseq
12 18 Switch timer Timer BGM_SWITCH.sseq
13 19 End of Game Fanfare End of Game Fanfare BGM_FINAL_CLEAR
14 20 Game Over Game Over BGM_GAMEOVER.sseq
15 21 Final Boss Final Boss BGM_FINAL_KUPPA.sseq
16 22 Boss Beaten Boss Beaten BGM_BOSS_CLEAR.sseq
17 None [Nothing] [Nothing]
18 24 Athletic Mushrooms (Athletic) BGM_ATHLETIC.sseq
19 25 Toad House Toad House BGM_MINIGAME.sseq
1A 26 Grassland Grassland BGM_CHIJOU_CONT.sseq
1B 27 Title Screen Title Screen BGM_SELECT.sseq
1C 28 SMB End of Level SMB End of Level BGM_GOAL_FANFARE2.sseq
1D 29 Toad House Fanfare Toad House Fanfare BGM_FANFARE_KINO.sseq
1E 30 MvsL Stage Theme 2* MvsL Stage 2 BGM_VS_STAGE.sseq
1F 31 MvsL start screen (duplicate of Title Screen) MvsL Title Screen BGM_VS_SELECT.sseq
20 32 MvsL Loop MvsL Results Screen BGM_VS_FAN_LOOP.sseq
21 33 MvsL Win (Results screen) MvsL Win BGM_VS_WIN.sseq
22 34 MvsL Lose (Results screen) MvsL Lose BGM_VS_LOSE
[23 - 4F] None [Nothing] [Nothing]
50 80 Lava ambient Lava ambient (Castle) BGM_AMB_YOUGAN
51 81 Desert wind ambient Desert ambient (Castle) BGM_AMB_SABAKU
52 82 Water ambient Water ambient (Castle) BGM_AMB_WATER
53 83 Cave Water Ambient Underground ambient (Castle) BGM_AMB_CHIKA
[84 - 85] None [Nothing] [Nothing]
56 86 Sky Wind Ambient Wind ambient (Castle) BGM_AMB_SKY
[87 - 98] None [Nothing] [Nothing]
63 99 MvsL Stage (Early) Early Grassland (Unused) BGM_CHIJO
64 100 World 1* World 1 BGM_WORLD1
65 101 World 2* World 2 BGM_WORLD2
66 102 World 3* World 3 BGM_WORLD3
67 103 World 4* World 4 BGM_WORLD4
68 104 World 5* World 5 BGM_WORLD5
69 105 World 6* World 6 BGM_WORLD6
6A 106 World 7* World 7 BGM_WORLD7
6B 107 World 8* World 8 BGM_WORLD8
6C 108 End Credits Ending BGM_ENDING
6D 109 Intro Part 1 Intro 1 BGM_OPENING_DEMO1
6E 110 Intro Part 2 Intro 2 BGM_OPENING_DEMO2
6F 111 Peach Fanfare Peach Fanfare BGM_KUPPACLEAR_DEMO

*MvsL themes and World Map themes: Loading the MvsL themes or the World map themes in a regular level (by changing the music in the View Settings for example) will play the music, but most sound effects will be muted while the music is playing (this is because they use sound banks that are too big for the game, overloading the audio memory).

Additional note: Any song with an id above 6F will not play, regardless of if there is song data associated with it or not (by editing the sound_data.sdat file)

General Info

Special Event IDs

ID Description
3E Blue coin trail while event is active.
46 Causes the unused "faded circle" screen transition to be used when using an entrance or exit. Unused
F3 Partial Starman effects. Unused?
F4 Partial Mega Mushroom effects. Unused?
EB Make inventory contain item with no icon. Crashes when you release the item and it can't be replaced by other items. Maybe defunct unused item? Unused?
F7 Locks camera into bottom left of view. Mario isn't forced to be inside this camera, but he can't interact with actors outside the camera. Unused?
General Info

Camera

The Camera in New Super Mario Bros is controlled in several ways. You have to take into account that the camera movements will condition the gameplay.

1. How the Camera restricts Mario

The camera restricts Mario's movements in two ways:

• Mario cannot go out of the camera view through the sides.
This means that if the camera doesn't pan further, Mario can't either. The camera sides act like walls (but you can't wall jump into them)
• Mario cannot go to the bottom of the camera.
If he does so, he will die. Note that there is some margin, so you can place something like a Warp to Level some blocks below the camera view. Mario will get it before he dies.

Mario does can go out from the top of the camera. Simply the camera will not pan there, so Mario will be out of the screen.

2. Views

The camera will NEVER get out of the view. That means Mario can't get out of the view by the sides or the bottom.

3. Panning blocks

This thing is a little bit confusing. An area (not each view) is divided in blocks of 16x16 tiles (256x256 pixels). The camera will not pan into blocks that are empty (don't contain any objects).

An example (thanks to Garmichael):
Look at this level:

Panfree.png

Notice that blocks A and F are empty. Mario cannot get to A from B, but he can actually jump from D to B. While he is in A, the camera will not move, but as soon as he crosses into B, the camera will jump to that location and that boundary would act like a wall. From there, As Mario approaches C, he will be able to see some of F, but as soon as he crosses into C, the camera will reposition so that the border to F is the bottom of the screen. If Mario jumps down into F, he dies (even though the block under F has ground).

4. Scroll Control and Scroll Stop sprites

These sprites control the camera in more ways. How they work is generally unknown, except for:
• Vertical scroll controls: [sprite:198] and [sprite:199]
• Horizontal scroll stop: [sprite:276]

5. Header Blocks

Block 2, Block 4, and Block 5 control more settings of the camera. Look at the List of Header Blocks page for more info.

6. Camera X & Y

The entrance's settings include two boxes named "Camera X" and "Camera Y", usually you can leave their values as 0, but sometimes you need to put values in there:

Camera example 1.png

The zone and door entrance don't actually have any purpose in-game but to showcase the coordinates.
The zone delimits what you can see on the NDS screen.
If at least one of the Camera values is different from 0, then the tile at said coordinates will calibrate the camera and will serve as the top-left tile of said camera.
You usually use them when sprites 198-199 and/or 276 are in the way, or eventually to calibrate the bottom of the camera to the bottom of the zone.
The purpose of this is to show a nice transition when you change areas.

With the example earlier if both values were at 0, this is where the camera would spawn by default:

Camera example 2.png

The camera is 1 tile higher than the bottom of the zone, but the biggest offender here is the sprite 276, it is only acknowledged when the player have control of Mario thus only when Mario completely exits the pipe, the camera would recognize sprite 276 and then scroll to the left at high speeds, which results in an ugly transition and you can bet this is a rookie mistake to leave that kind of camera error unchecked.

General Info

Particle List

Note: IDs can go as high as 255, all IDs past 118 are blank and have been left out for sake of shortening the list.

Particle Id In-Game Effect Notes
0 toadsworth creates toad house block(s) – part 2 red toad house disappears – part 3  
1    
2    
3 something in the intro  
4    
5 whomp destroyed – part 1  
6 whomp destroyed – part 2  
7 whomp destroyed – part 3  
8    
9 whomp slams ground – part 1  
A whomp slams ground – part 2  
B whomp slams ground – part 3  
C    
D mario jumps/lands on world map also used for flying ? blocks, hammer bros and bowser jr on the world map?
E mario goes into castle on world map  
F    
10    
11 something todo with end-of-boss cutscene or world map?  
12    
13 bob-omb explodes - part 1 sometimes spawned (off-screen?) on world map
14 bob-omb explodes - part 2 sometimes spawned (off-screen?) on world map
15 bob-omb explodes - part 3  
16 bob-omb explodes - part 4  
17 bob-omb explodes - part 5  
18 bob-omb explodes - part 6  
19 bob-omb explodes - part 7  
1A    
1B red toad house disappears – part 1  
1C red toad house disappears – part 2 thwomp hits ground – part 1  
1D thwomp hits ground – part 2  
1E big thwomp hits ground – part 1  
1F big thwomp hits ground – part 2  
20 big thwomp hits ground – part 3  
21 get mega mushroom – part 1  
22 get mega mushroom – part 2  
23 get mega mushroom – part 3  
24 get mega mushroom – part 4  
25 get mega mushroom – part 5  
26 get mega mushroom – part 6  
27 get mega mushroom – part 7  
28 get mega mushroom – part 8  
29 get mega mushroom – part 9  
2A get mega mushroom – part 10  
2B get mega mushroom – part 11  
2C get mega mushroom – part 12  
2D    
2E    
2F    
30    
31    
32    
33    
34    
35    
36    
37    
38    
39 mega mario walks right – alternating with 3A  
3A mega mario walks right – alternating with 39  
3B    
3C mega mario walks left – alternating with 3D  
3D mega mario walks left – alternating with 3C / goal fireworks related? – part 6  
3E goal fireworks related? – part 7  
3F goal fireworks related? – part 8  
40 goal fireworks related? – part 9  
41 goal fireworks related? – part 10  
42    
43    
44    
45    
46    
47 goal fireworks related? – part 1  
48 goal fireworks related? – part 2  
49 goal fireworks related? – part 3  
4A goal fireworks related? – part 4  
4B goal fireworks related? – part 5  
4C splunkin stomped on for the second time – part 1  
4D splunkin stomped on for the second time – part 2  
4E splunkin stomped on for the second time – part 3  
4F splunkin stomped on for the first time – part 1  
50 splunkin stomped on for the first time – part 2  
51 bowser jr lands after being defeated  
52    
53    
54    
55    
56    
57    
58    
59    
5A    
5B    
5C    
5D    
5E    
5F    
60    
61    
62    
63    
64    
65    
66    
67    
68    
69    
6A    
6B    
6C    
6D    
6E    
6F    
70    
71    
72    
73 jump onto cliff ledge from normal ground  
74    
75    
76 item/object appears/disappears – part 1  
77 item/object appears/disappears – part 2  
78 item/object appears/disappears – part 3  
79 enemy/mega goomba “popped” – part 1 boss shutter piece spawned/destroyed – part part 1 bowser bridge piece destroyed – part 1  
7A enemy/mega goomba “popped” – part 2 boss shutter piece spawned/destroyed – part part 2 bowser bridge piece destroyed – part 2  
7B    
7C    
7D    
7E mario “twinkles” in distance after being fired by warp cannon  
7F    
80    
81    
82    
83    
84    
85    
86 run into enemy as mega mario  
87    
88    
89    
8A    
8B    
8C    
8D    
8E    
8F    
90    
91    
92    
93    
94    
95 blue coin collected  
96 mario breaks free from under fallen snow – part 1  
97 mario breaks free from under fallen snow – part 2  
98    
99    
9A    
9B    
9C    
9D mario stomps on Crowber – part 1  
9E mario stomps on Crowber – part 2  
9F mario does Drill Stomp straight down  
A0 bowser jr/blockhopper jumps/lands  
A1 object enters/exits lava – part 1  
A2 object enters/exits lava – part 2  
A3 object enters/exits poison water – part 1  
A4 object enters/exits poison water – part 2  
A5 object enters/exits water – part 1  
A6 object enters/exits water – part 2  
A7    
A8 mario lands on soft cloud platform  
A9 mario lands on quicksand  
AA mario lands on sinking snow – part 1  
AB mario lands on sinking snow – part 2  
AC mario fireball hits enemy/wall – part 1  
AD mario fireball hits enemy/wall – part 2  
AE stomp on wiggler  
AF    
B0    
B1    
B2 kab-omb explodes – part 1  
B3 kab-omb explodes – part 2  
B4 kab-omb explodes – part 3  
B5    
B6 ground-pound on koopa troopa/buzzy beetle – part 1  
B7 ground-pound on koopa troopa/buzzy beetle – part 2  
B8 ground-pound on koopa troopa/buzzy beetle – part 3  
B9 ground-pound on koopa troopa/buzzy beetle – part 4  
BA “pop” enemy with ground-pound – part 1  
BB “pop” enemy with ground-pound – part 2  
BC “pop” enemy with ground-pound – part 3  
BD    
BE    
BF    
C0    
C1    
C2    
C3    
C4    
C5    
C6    
C7    
C8    
C9    
CA mario stomps lakitu  
CB mario lands in lakitu’s cloud  
CC    
CD    
CE    
CF    
D0 bill blaster fires bullet bill – part 1 but not rotating bill blaster
D1 bill blaster fires bullet bill – part 2
D2 ground-pound on koopa troopa/buzzy beetle – part 5  
D3 ground-pound on koopa troopa/buzzy beetle – part 6  
D4    
D5    
D6    
D7    
D8 toadsworth creates toad house block(s) – part 1  
D9    
DA    
DB skeeter bomb enters water or maybe skeeter spawns bomb – part 3  
DC skeeter bomb enters water or maybe skeeter spawns bomb – part 4  
DD    
DE    
DF    
E0    
f8 Mario ground pound Falling snow hits ground  
E2 Mario lands after triple jump Mario ground pounds on mummipokey  
E3    
E4 mario goes out of water – part 1  
E5 mario goes out of water – part 2  
E6 mario goes out of water – part 3  
E7 mario exits water – part 1  
E8 mario exits water – part 2  
E9 mario exits water – part 3  
EA get red coin  
EB    
EC    
ED    
EE mario lands on ground in deep water – part 1  
EF mario lands on ground in deep water – part 2  
F0    
F1    
F2    
F3 mario flies off Spin Block/out of tornado – part 1  
F4 mario flies off Spin Block/out of tornado – part 2  
F5 something todo with spinning/drill stomp – part 1  
F6 something todo with spinning/drill stomp – part 2  
F7 something todo with spinning/drill stomp – part 3  
F8 get star coin – part 1  
F9 get star coin – part 2  
FA get star coin – part 3  
FB    
FC    
FD ?/p/! switch pressed – part 1  
FE ?/p/! switch pressed (alt – part upside down or underwater only?) – part 1  
FF ?/p/! switch pressed (alt – part upside down or underwater only?) – part 2  
100 ?/p/! switch pressed – part 2  
101    
102    
103 mario does Drill Stomp when small mario  
104 mario wall jump from right – part 1  
105 mario wall jump from right – part 2  
106 mario wall jump from right – part 3  
107 mario wall jump from left – part 1  
108 mario wall jump from left – part 2  
109 mario wall jump from left – part 3  
10A    
10B    
10C mario lands on /starts to hang off of cliff edge  
10D    
10E mario goes into water in 1-A start section – part 1 cheepskipper enters/exits water – part 1  
10F mario goes into water in 1-A start section – part 2 cheepskipper enters/exits water – part 2  
110 mario goes into water in 1-A start section – part 3 spike pillar goes into water – part 1  
111 spike pillar goes into water – part 2  
112    
113 cheepskipper enters/exits water – part 3  
114 mario goes into water in 3-Castle boss room – part 1  
115 mario goes into water in 3-Castle boss room – part 2  
116 mario goes into water in 3-Castle boss room – part 3  
117 mario punches fence – part 1  
118 mario punches fence – part 2  
General Info

Staff Roll Characters

These are the letters you can touch on the bottom screen during the credits.

Closest ASCII Character Character ID Character Used? SFX ID SFX Name SFX Usage Outside of Credits
A 0x0 Yes 0x34 SE_EMY_KPJR_DAMAGE_V Bowser Jr. stomped (voice)
B 0x1 Yes 0x35 SE_EMY_KPJR_CRY_V Bowser Jr. defeated
C 0x2 Yes 0x39 SE_EMY_KPJR_GUARD_ON Bowser Jr. go into shell
D 0x3 Yes 0x6e SE_EMY_KURIBO_FUMU Stomp on enemy / Stomp on other player
E 0x4 Yes 0x6f SE_EMY_KAME_FUMU Stomp on Koopa / Kab-omb / Skeeter (?)
F 0x5 Yes 0x70 SE_EMY_KAME_KERU Enemy defeated by fireball/Shell mario in shell/Ground-pound/Flagpole / Mega Goomba defeated by Mini Player / Hanging ? Block hit from side / Item destroyed in lava / Block spawned by tile creator sprite
G 0x6 Yes 0xf5 SE_VOC_OPDM_YES Player reacts to completion of logo
H 0x7 Yes 0xfa SE_VOC_OPDM_AWAWA_01 Player reacts to thunder strike
I 0x8 Yes 0x128 SE_OBJ_GOAL_HANABI Goal firework
J 0x9 Yes 0x103 SE_AMB_OPDM_BABEL Logo crashes down
K 0xa Yes 0x123 SE_OBJ_GET_DRAGON_COIN Get Star Coin
L 0xb Yes 0x10b SE_VOC_OPDM_PEACH_HELP  
M 0xc Yes 0x166 SE_PLY_CHANGE_NORMAL Turn back to normal from Mega
N 0xd Yes 0x14f SE_PLY_HIP_ATTACK_M Mini ground-pound
O 0xe Yes 0x149 SE_PLY_JUMP_3 Mini Player jumps
P 0xf Yes 0x152 SE_PLY_DOWN Player loses a life
Q 0x10 No 0x153 SE_PLY_SWIM Player swim
R 0x11 Yes 0x168 SE_PLY_THROW_FIRE Fire Player/Fire Bros – throw fireball
S 0x12 Yes 0x16c SE_OBJ_GET_COIN Get coin
T 0x13 Yes 0x171 SE_OBJ_DOKAN_BREAK Pipe/Bill Blaster smashed from the side as Mega Player
U 0x14 Yes 0x172 SE_PLY_JUMPDAI Jump on trampoline/Pot in final boss intro jumps
V 0x15 Yes 0x17b SE_SYS_ONE_UP Get 1-up mushroom
W 0x16 Yes 0x17c SE_SYS_ONE_DOWN Unused
X 0x17 Yes 0x1a9 SE_OBJ_TSUBO_BREAK Pot in final boss intro shatters
Y 0x18 Yes 0x1ab SE_VOC_M_HOEE Mario embarrassed after being kissed by peach
Z 0x19 Yes 0x1ad SE_VOC_P_THANK_YOU Peach thanks Player after battle
a 0x1a Yes 0x34 SE_EMY_KPJR_DAMAGE_V Bowser Jr. stomped (voice)
b 0x1b Yes 0x35 SE_EMY_KPJR_CRY_V Bowser Jr. defeated
c 0x1c Yes 0x39 SE_EMY_KPJR_GUARD_ON Bowser Jr. go into shell
d 0x1d Yes 0x6e SE_EMY_KURIBO_FUMU Stomp on enemy / Stomp on other player
e 0x1e Yes 0x6f SE_EMY_KAME_FUMU Stomp on Koopa / Kab-omb / Skeeter (?)
f 0x1f Yes 0x70 SE_EMY_KAME_KERU Enemy defeated by fireball/Shell mario in shell/Ground-pound/Flagpole / Mega Goomba defeated by Mini Player / Hanging ? Block hit from side / Item destroyed in lava / Block spawned by tile creator sprite
g 0x20 Yes 0xf5 SE_VOC_OPDM_YES Player reacts to completion of logo
h 0x21 Yes 0xfa SE_VOC_OPDM_AWAWA_01 Player reacts to thunder strike
i 0x22 Yes 0x128 SE_OBJ_GOAL_HANABI Goal firework
j 0x23 Yes 0x103 SE_AMB_OPDM_BABEL Logo crashes down
k 0x24 Yes 0x123 SE_OBJ_GET_DRAGON_COIN Get Star Coin
l 0x25 Yes 0x10b SE_VOC_OPDM_PEACH_HELP  
m 0x26 Yes 0x166 SE_PLY_CHANGE_NORMAL Turn back to normal from Mega
n 0x27 Yes 0x14f SE_PLY_HIP_ATTACK_M Mini ground-pound
o 0x28 Yes 0x149 SE_PLY_JUMP_3 Mini Player jumps
p 0x29 Yes 0x152 SE_PLY_DOWN Player loses a life
q 0x2a Yes 0x153 SE_PLY_SWIM Player swim
r 0x2b Yes 0x168 SE_PLY_THROW_FIRE Fire Player/Fire Bros – throw fireball
s 0x2c Yes 0x16c SE_OBJ_GET_COIN Get coin
t 0x2d Yes 0x171 SE_OBJ_DOKAN_BREAK Pipe/Bill Blaster smashed from the side as Mega Player
u 0x2e Yes 0x172 SE_PLY_JUMPDAI Jump on trampoline/Pot in final boss intro jumps
v 0x2f Yes 0x17b SE_SYS_ONE_UP Get 1-up mushroom
w 0x30 Yes 0x17c SE_SYS_ONE_DOWN Unused
x 0x31 No 0x1a9 SE_OBJ_TSUBO_BREAK Pot in final boss intro shatters
y 0x32 Yes 0x1ab SE_VOC_M_HOEE Mario embarrassed after being kissed by peach
z 0x33 Yes 0x1ad SE_VOC_P_THANK_YOU Peach thanks Player after battle
À 0x34 No 0x36 SE_EMY_KPJR_UH Bowser Jr. “wakes up” after battle
Á 0x35 No 0x37 SE_EMY_KPJR_LAND Bowser Jr. land after jump attack
 0x36 No 0x3b SE_EMY_KPJR_GUARD_OFF Bowser Jr. stop hiding in shell
Ä 0x37 No 0x3c SE_EMY_KPJR_DAMAGE Bowser Jr. stomped
Ç 0x38 No 0x3d SE_EMY_KPJR_PURUPURU Bowser Jr. shakes head after waking up after battle
È 0x39 No 0x77 SE_EMY_KAME_HIT_7 Defeat 7th and subsequent enemy in a row while sliding
É 0x3a No 0xf6 SE_VOC_OPDM_UN_01 Player looks up at logo
Ê 0x3b No 0xfc SE_VOC_OPDM_AWAWA_02  
Ë 0x3c No 0xff SE_VOC_OPDM_HOEE  
Ì 0x3d No 0x10a SE_VOC_OPDM_PEACH_CRY  
Í 0x3e No 0x101 SE_AMB_OPDM_WARBLE Intro birds
Î 0x3f No 0x102 SE_AMB_OPDM_THUNDER Thunder strike on castle
Ï 0x40 No 0x104 SE_EMY_OPDM_KPJR_FOOT Bowser Jr. sneaks up on peach
Ñ 0x41 No 0x109 SE_PLY_OPDM_MA_HIT  
Ò 0x42 No 0x10d SE_OBJ_OPDM_NEW_FALL  
Ó 0x43 No 0x10e SE_OBJ_OPDM_NEW_SET  
Ô 0x44 No 0x10f SE_OBJ_OPDM_LOGO_FALL_L  
Ö 0x45 No 0x110 SE_OBJ_OPDM_LOGO_FALL_S  
Ù 0x46 No 0x170 SE_OBJ_COIN_BOUND Loose coin hit ground
Ú 0x47 No 0x174 SE_OBJ_ITEM_APPEAR Item out of block
Û 0x48 No 0x13a SE_SYS_MID_POINT Pass checkpoint
Ü 0x49 No 0x13e SE_SYS_HURRY_UP  
ß 0x4a No 0x14d SE_PLY_HIP_ATTACK Ground-pound hits ground / Ground-pound hits other player
à 0x4b No 0x36 SE_EMY_KPJR_UH Bowser Jr. “wakes up” after battle
á 0x4c No 0x37 SE_EMY_KPJR_LAND Bowser Jr. land after jump attack
â 0x4d No 0x3b SE_EMY_KPJR_GUARD_OFF Bowser Jr. stop hiding in shell
ä 0x4e No 0x3c SE_EMY_KPJR_DAMAGE Bowser Jr. stomped
ç 0x4f No 0x3d SE_EMY_KPJR_PURUPURU Bowser Jr. shakes head after waking up after battle
è 0x50 No 0x77 SE_EMY_KAME_HIT_7 Defeat 7th and subsequent enemy in a row while sliding
é 0x51 No 0xf6 SE_VOC_OPDM_UN_01 Player looks up at logo
ê 0x52 No 0xfc SE_VOC_OPDM_AWAWA_02  
ë 0x53 No 0xff SE_VOC_OPDM_HOEE  
ì 0x54 No 0x10a SE_VOC_OPDM_PEACH_CRY  
í 0x55 No 0x101 SE_AMB_OPDM_WARBLE Intro birds
î 0x56 No 0x102 SE_AMB_OPDM_THUNDER Thunder strike on castle
ï 0x57 No 0x104 SE_EMY_OPDM_KPJR_FOOT Bowser Jr. sneaks up on peach
ñ 0x58 No 0x109 SE_PLY_OPDM_MA_HIT  
ò 0x59 No 0x10d SE_OBJ_OPDM_NEW_FALL  
ó 0x5a No 0x10e SE_OBJ_OPDM_NEW_SET  
ô 0x5b No 0x10f SE_OBJ_OPDM_LOGO_FALL_L  
ö 0x5c No 0x110 SE_OBJ_OPDM_LOGO_FALL_S  
ù 0x5d No 0x170 SE_OBJ_COIN_BOUND Loose coin hit ground
ú 0x5e No 0x174 SE_OBJ_ITEM_APPEAR Item out of block
û 0x5f No 0x13a SE_SYS_MID_POINT  
ü 0x60 No 0x13e SE_SYS_HURRY_UP  
. 0x61 No 0x15b SE_PLY_FOOTNOTE_H  
0x62 No 0x15e SE_PLY_FOOTNOTE_H  
_ 0x63 No 0x16a SE_PLY_CHANGE_SMALL Enter/exit pipe / Enter warp / lose powerup
- 0x64 No 0x163 SE_PLY_CHANGE_BIG Get powerup / Collect Starman as Mega Player
[another type of line] 0x65 No 0x167 SE_PLY_CHANGE_MAME Become mini
& 0x66 Yes 0x177 SE_OBJ_BLOCK_BREAK Player break brick block / boss shutter block spawn/break / block broken by tile destroyer sprite / bridge destroyed in Bowser/Big Bowser boss / peach platform destroyed in final boss / Bob-omb destroy block / Big Unagi destroy block / Mummipokey sand ball break
' 0x67 Yes 0x178 SE_PLY_STAR_ATTACK Mega Player touch enemy/Big Player touch Mini Goomba / Big Unagi destroy block / Broozer destroy block
General Info

Entrances

1. Entrance Guide

Click the Door icon at the top to edit entrances.

 Settings

• *Camera X:**

• *Camera Y:**

• *Entrance ID:** The ID associated with the entrance.

• *Destination ID:** The number of the area the pipe goes to. If not changing area, set to 0.

• *Destination Entrance:** The ID of the entrance it goes to.

• *Connected Pipe ID:** The ID of the path that makes up the pipe. Remember to check "Connected Pipe".

• *View:** The ID of the view the entrance is currently in. Not the destination view.


• *Exit Only:** Check this if you don't want the player to be able to enter, I.E. a one-way pipe.

• *<entrancesetting16>:** Not sure what it does.

• *Connected Pipe:** Check this if you're using a connected pipe. (Such as 7-A)

• *Display on Lower Screen:** Displays the view on the lower screen that the entrance is currently in.

 Warp Pipe

Warp pipes are the way Mario gets around to different Views or Areas.

 Simple Warp Pipe

First off, build a warp pipe using blocks. For this, I'll be using a upwards warp pipe, (object type 102)

• Place the warp pipe, make sure it's vertical. (And make sure it extends into the ground or is at least 3 blocks high.)
• Click the door icon, and add an entrance.
• Using shift+dragging, place it onto the top left part of the warp pipe.
• Click the drop down menu on the left side, select "Pipe facing Up." Set the View that it's in.
• (Note the Entrance ID if you plan to make it both ways.)
• Now go build another warp pipe somewhere else, make it horizontal this time.. (Either in the same Area or not.)
• Add an entrance, move it with shift+dragging, and place it at the top of the end.
• Set the entrance to "Pipe Facing Right."
• Check "Exit-Only." If it's in a different View, be sure to set the View it's in.
• Note it's Entrance ID, and select the first warp pipe entrance you created.
• Set the "Destination Area" to whatever area the second warp pipe is in (if you created it in another area) and set the Destination ID to the Entrance ID of the second warp pipe entrance.
• Save, and test it. It should work.


• *Troubleshooting:**
If you appear at the start of the level or in another spot not intended, check the "Destination ID".

If your camera appears somewhere without Mario, and then you die, check that the destination entrance has the View set correctly.

 Connected Warp Pipe

For this, I'm gonna go ahead and make a pipe that goes up then a turn to the left. (Use Shift+dragging on a block to change length and height.) Use object 59 for a good looking turn.

Set that up, and add the entrances. You don't have to set a Destination ID.

• First, click the first path icon.
• Add a path, and set it up so the first square (0) is down 2 squares, and right 1 square from the leftmost entrance.
• Next, use Control+dragging to make two more squares, one at the top of the bottommost pipe, one to the bottom left of the entrance.
• Set up the paths with this trick.

Unknown 6:
0=Pipe facing down
1=Pipe facing right
2=Pipe facing up
3=Pipe facing left

In my pipe,
square 0 is //Unknown 6: 3//
square 2 is //Unknown 6: 0//

• Now select each entrance, check "Connected Pipe", and set the Connected Pipe ID to the Path ID of the paths you just set up (IE. 0)
• For the entrance closest to the end of the path, set "Destination Area" to 1.
• Save and Play.

• *Troubleshooting**
If you enter the pipe, and a transition appears, check "connected pipe" on both entrances.

If you enter the pipe, then come back out immediately, doublecheck that the entrance closest to the end of the path has "Destination Area" set to 1, and that the "Connected Pipe ID" is correctly set.

General Info

List of Activator Sprites

1. General Event Controllers

2. Switches and Other Event Controllers

3. Triggerable Sprites

General Info

List of player animations

Name Value anmFile anmName
Idle 0x00 plmario wait
WalkSlow 0x01 plmario walk
Walk 0x02 plmario run
Dash 0x03 pl b_dash
DashFast 0x04 pl b_dash2
Jump 0x05 pl jump
JumpFall 0x06 pl jump2
JumpLand 0x07 pl jumped
TripleJump_unused 0x08 pl 2jump1
TripleJumpFall 0x09 pl 2jump2
TripleJumpLand 0x0A pl 2jumped; also used as DoubleJumpLand
TripleJump 0x0B pl roll_jump
Skid 0x0C pl turn
SkidTurn 0x0D pl trned
GroundPoundRoll 0x0E pl hipsr
GroundPoundFall 0x0F pl hipat
GroundPoundLand 0x10 pl hiped
Crouched 0x11 pl stoop
ThrowFireball 0x12 pl fire_at
SlipBumpFall 0x13 pl sdown
Sliding 0x14 plnovs slip
StandUp 0x15 pl sliped
SlipFall 0x16 plnovs slipla
DiveLand 0x17 plnovs sldctslpbk
DiveSlide 0x18 plnovs lost
DiveStandUp 0x19 plnovs roll (static)
RollPose 0x1A pl roll (loop)
Roll 0x1B pl carry_start
CarryStart 0x1C pl carry_wait
CarryIdle 0x1D pl carry_walk
CarryWalk 0x1E pl carry_throw
CarryThrow 0x1F pl scale_up
MegaGrow 0x20 pl wimp
Walljump 0x21 pl wsld
WallSlide 0x22 pl swim_in; possibly unused
SwimStart 0x23 plnovs swim_wait
SwimIdle 0x24 plnovs paddle_1
SwimIdle1 0x25 plnovs swim
Swim_legs 0x26 plnovs paddle_2
SwimPaddle2 0x27 plnovs paddle_end
SwimPaddleEnd 0x28 plnovs tree_start
PoleGrab 0x29 plnovs tree_wait
PoleIdle 0x2A plnovs tree_wait
PoleClimb 0x2B plnovs tree_climb
PoleSlide 0x2C plnovs tree_pose
PushedFall 0x2D pl shfdn
Push 0x2E pl push
SpinJump 0x2F pl spin_jump
SpinJumpLand 0x30 pl spin_jump_end
CeilingRopeGrab 0x31 plnovs monkey_start
CeilingRopeRightHandGrab 0x32 plnovs monkey_wait_r
CeilingRopeLeftHandGrab 0x33 plnovs monkey_wait_l
CeilingRopeRightHandMove 0x34 plnovs monkey_r_to_l
CeilingRopeLeftHandMove 0x35 plnovs monkey_l_to_r
LavaDamageJump 0x36 plnovs firejmp
CrouchStart 0x37 pl squat_start
SwimCarry 0x38 plnovs swim_carry
SwimPaddleCarry 0x39 plnovs paddle_carry
SwimThrow 0x3A plnovs swim_throw
BumpedNormal 0x3B pl sfbdn
BumpedHard 0x3C pl sffdn
CannonShoot 0x3D pl shoot
Shocked 0x3E plnovs e_shock
ShockedFall 0x3F plnovs e_down: unused
TightropeWalk 0x40 plnovs rope_walk
MegaWalk 0x41 pl2 big_walk
MegaJump 0x42 pl2 big_jump_st
MegaJumpLand 0x43 pl2 big_jump_ed
MegaGroundPoundRoll 0x44 pl2 big_hip_st
MegaGroundPoundFall 0x45 pl2 big_hip_at
MegaGroundPoundLand 0x46 pl2 big_hip_ed
LedgeStand 0x47 plnovs wall_wait
LedgeStandMoveLeft 0x48 plnovs wall_walk_l
LedgeStandMoveRight 0x49 plnovs wall_walk_r
LedgeStandClimbDown 0x4A plnovs hang_start
LedgeGrabClimbUp 0x4B plnovs hang_up
LedgeGrabIdle 0x4C plnovs hang_wait
LedgeGrabMoveLeft 0x4D plnovs hang_walk_l
LedgeGrabMoveRight 0x4E plnovs hang_walk_r
VineRopeIdle 0x4F plnovs rope_swing
SpinDrill 0x50 pl2 spin_jump2
JumpCombo2 0x51 pl2 jump_b
JumpCombo3 0x52 pl2 jump_c
JumpCombo4_kick 0x53 pl2 jump_d
LongJump 0x54 pl2 jump_b_1
LongJumpFall 0x55 pl2 jump_b_2
DoubleJump 0x56 pl2 2jmp_c_1
DoubleJumpFall 0x57 pl2 2jmp_c_2
BackflipJump 0x58 pl2 2jmp_d_1; possibly unused
BackflipJumpFall 0x59 pl2 2jmp_d_2
UnknownStarJump 0x5A pl2 2jmp_e_1
UnknownStarJumpFall 0x5B pl2 2jmp_e_2
JumpCombo5_twirl 0x5C pl2 jump_e
PipeEntrance 0x5D pl2 low_walk
DeadFall 0x5E pl2 dead
DeadPose 0x5F pl2 dead_pose
GoalJump 0x60 plnovs goal_jump
GoalCap 0x61 plnovs goal_puton_cap
DoorWalk 0x62 pl2 door_walk
BattleGoalJump 0x63 plnovs bt_goal_jmp
BattleGoalOut 0x64 plnovs bt_goal_out
MegaJumpFall 0x65 pl2 big_jmp_2
TightropeIdle 0x66 plnovs rope_wait
TightropeJumpLand 0x67 plnovs rope_jump_ed
MiniWalk 0x68 pl2 zero_g_walk
MiniJump 0x69 pl2 zero_g_jump
MiniJumpFall 0x6A pl2 zero_g_jump2
MiniJumpLand 0x6B pl2 zero_g_jump_ed
UnusedSpinJumpOff 0x6C pl2 spin_jump_off; possibly unused
UnusedSpinJump 0x6D pl2 spin_jump_st
Shell 0x6E pl2 shell_in
StarRoll 0x6F pl2 star_roll
FenceMoveVertical 0x70 plnovs net_walk1
FenceIdle 0x71 plnovs net_wait
UnusedDamageFall 0x72 plnovs e_damage1
UnusedDamageLand 0x73 plnovs e_damage2
FenceSlam 0x74 plnovs net_attack
FenceMoveHorizontal 0x75 plnovs net_walk2
LedgeJump 0x76 plnovs w_jump1
LedgeJumpFall 0x77 plnovs w_jump2
LedgeJumpLand 0x78 plnovs w_jump_ed
LedgeGrab 0x79 plnovs jump_hang
SwimWalk 0x7A plnovs swim_walk
SwimStanding 0x7B plnovs swim_standing
Buried 0x7C plnovs buried
BuriedStandUp 0x7D plnovs buried_ed
BuriedFall 0x7E plnovs buried_st
BuriedDamage 0x7F plnovs buried_damage
MegaSitCrouch 0x80 pl2 big_hip_squat
WaterDeadFall 0x81 plnovs swim_dead
TightropeUnbalanced 0x82 plnovs rope_wait2
MegaIdle 0x83 pl2 big_wait
BossCallPeach 0x84 plnovs find
BossStarePeach 0x85 plnovs find_loop
BossReactPeach 0x86 plnovs find_surprise
BossWin 0x87 plnovs boss_key_get
MegaWin 0x88 plnovs big_goal
FinalBossEnd 0x89 plnovs m_kiss
FinalBossPeach 0x8A plnovs m_fall_wait
FinalBossCap 0x8B plnovs m_escort
FinalBossKiss 0x8C plnovs m_shy
GoalJumpLand 0x8D plnovs goal_jump_ed
BossIdle 0x8E plnovs bt_wait
BossStartled 0x8F plnovs bt_surprise
BeanStalkMove 0x90 plnovs pea_plant
BeanStalkGrab 0x91 plnovs pea_plant_st
BeanStalkIdle 0x92 plnovs pea_plant_wait
BowserJrWin 0x93 plnovs jr_clear


General Info

Background Scrolling Data Info

Foregrounds and backgrounds scroll differently in many levels, sometimes they have a fast speed ratio and sometimes they can be completely static, this can be changed via hex editing your level.

BG hexadecimal example.png

And for each byte:

Data

Disabling vertical scrolling

 

Automatic horizontal scrolling

Works for both foregrounds and backgrounds.

It only works for backgrounds that already have a horizontal animation, this can be achieved by putting a value of 10 for byte 16 and it will animate the whole background instead of partially animating it.
(Note : if byte 13 value is somewhere between 40 and 4F, this effect will be overridden and instead the vertical scrolling will be disabled).

Modding Tutorials

Tutorials on how to mod NSMB DS

Modding Tutorials

Mario vs Luigi

This page documents how to play MvsL hacks and objects that work in MvsL.

Modding MvsL is significantly more difficult than modding Singleplayer levels. If you're just getting started with modding the game, you might want to start here

FaQ

How do I play Mario vs Luigi hacks?
My level crashes, what do I do now?
My level crashes, but I'm using Code Hacks!
My level makes us de-sync, what's going on?

Object Compatibility (Vanilla)

Object ID Actor Name
23 Pipe Piranha Plant (Facing up)
24 Pipe Piranha Plant (Facing down)
25 Pipe Piranha Plant (Facing right)
26 Pipe Piranha Plant (Facing left)
27 Bill Blaster (Bullet Bill launcher)
28 Bob-omb
71 Stonewall moving up & down
72 Stonewall moving left & right
95 Spin Block
148 Goomba
149 Koopa Troopa
210 MvsL Big Star

Object Compatibility with Code Hacks

Object ID Object Name Compatibility Notes
0 Crash Object (Player Actor) Crash Needs the clone code hack
1 Crash Object (Player Actor) Crash Needs the clone code hack
2 Crash Object (Player Actor) Crash Needs the clone code hack
3 Crash Object (Player Actor) Crash Needs the clone code hack
4 Crash Object (Player Actor) Crash Needs the clone code hack
5 Crash Object (Player Actor) Crash Needs the clone code hack
6 Crash Object (Player Actor) Crash Needs the clone code hack
7 Crash Object (Player Actor) Crash Needs the clone code hack
8 Crash Object (Player Actor) Crash Needs the clone code hack
9 Crash Object (Player Actor) Crash Needs the clone code hack
10 Nothing N/A Technically works due to it being nothing
11 Nothing N/A Technically works due to it being nothing
12 Nothing N/A Technically works due to it being nothing
13 Nothing N/A Technically works due to it being nothing
14 Nothing N/A Technically works due to it being nothing
15 Nothing N/A Technically works due to it being nothing
16 Nothing N/A Technically works due to it being nothing
17 Nothing N/A Technically works due to it being nothing
18 Nothing N/A Technically works due to it being nothing
19 Nothing N/A Technically works due to it being nothing
20 Defunct Actor 22 N/A If using the Actor Spawner code hack it works
21 Mega Goomba Works If using Boss Particle code hack
22 Hammer Brother from map N/A MvsL is missing a world map so...
23 Pipe Piranha Plant (facing up) Works  
24 Pipe Piranha Plant (facing down) Works  
25 Pipe Piranha Plant (facing right) Works  
26 Pipe Piranha Plant (facing left) Works  
27 Bill Blaster (Bullet Bill launcher) Works  
28 Bob-omb Works  
29 Princess Peach Works  
30 Monty Tank Works If using Boss Particle code hack
31 Cheep Cheep Works  
32 Goal Pole's Flag Works  
33 Trampoline (portable springboard) Crash  
34 Red Ring Crash  
35 Final Bowser Controller Crash  
36 Thwomp Works  
37 Spiny Works  
38 Boo Works  
39 Castle boss controller Partial Some of the options crash the game, you can use a switch instead.
40 Lakitu (unused object) Works  
41 Bowser bridge switch Works Loads, but graphics are not loaded correctly
42 Chain Chomp/Log Works  
43 Chain Chomp (unused object) Works  
44 Fire Snake (unused Actor 46) Works  
45 Respawnable Hidden Block Works  
46 Event controller - activates Spiked Ball when touched by Snake Block Works  
47 Lakithunder Works  
48 Aquatic bubble current (up) Works  
49 Aquatic bubble current (down) Works  
50 Aquatic bubble current (right) Works  
51 Aquatic bubble current (left) Works  
52 Buzzy Beetle Works  
53 Dry Bones Works  
54 Lava Bubble (Podoboo) Works  
55 Bullet Bill Spawner Works  
56 Fire Bar Works  
57 Coin Works  
58 Bowser Works  
59 Hammer Brother Works  
60 Nothing N/A Technically works due to it being nothing
61 Nothing N/A Technically works due to it being nothing
62 Big Bowser (unused object) Works  
63 Dry Bowser Works  
64 Whomp Works  
65 Cheepskipper Works  
66 P Switch Works Graphics are not loaded correctly
67 Sushi (shark) Works  
68 Lift moving up and down Works  
69 Lift moving left and right Works  
70 Rotating log lift (unused actor) Works  
71 Stonewall moving up and down Works  
72 Stonewall moving left and right Works  
73 Wobbly metal lift Works  
74 Wobble Rock Works  
75 Seesaw lift Works  
76 Scale lift Works  
77 Flimsy Lift (falls once touched) Works  
78 Lift moving one way once stood on Works  
79 Three-platform rickshaw lift (rotates in place by self) Works  
80 Lift spawner Works  
81 Nothing N/A Technically works due to it being nothing
82 Rotating rectangle lift Works  
83 Self-activating block Works  
84 Zoom Works  
85 Flip fence (duplicate object) Works  
86 Rotating triangle lift Works  
87 Nothing N/A Technically works due to it being nothing
88 Brick Block containing P Switch Works P-Switch graphics are not loaded correctly
89 Snailicorn Works  
90 Wiggler Works  
91 Track-controlled lift Works  
92 Unagi (eel) Works  
93 Arrow signboard Works  
94 Swooper Works  
95 Spin Block Works  
96 Seaweed Works  
97 Nothing N/A Technically works due to it being nothing
98 Camera vertical scrolling N/A  
99 Four-platform rickshaw lift Works  
100 Vertical camera offset (unused actor) N/A  
101 Event controller - view enter Works  
102 Spiked Ball Works  
103 Dorrie Works  
104 Tweester (Tornado) Works  
105 Whirlpool Works  
106 Red Coin Crashes  
107 ? Switch Works Graphics are not loaded correctly
108 ! Switch Works Graphics are not loaded correctly
109 Amp Works  
110 Brick Block containing !-Switch Works !-Switch graphics are not loaded correctly
111 Floating log Works  
112 Nothing N/A Technically works due to it being nothing
113 Cheep Chomp Works  
114 Burner (Small) Works  
115 Large Spiked Ball Works  
116 Skeeter (Water Bug) Works Causes a desync however
117 Map Flying ? Block N/A  
118 Burner Works  
119 Swinging lift (pendulum-like) Works  
120 Grounded Piranha Plant Works  
121 Nothing N/A Technically works due to it being nothing
122 Big Grounded Piranha Plant Works  
123 Grounded Fire Piranha Plant Works  
124 Large grounded Fire Piranha Plant Works  
125 Defunct Actor 229 N/A  
126 Drawbridge lift Works  
127 Big four-platform rickshaw lift Works  
128 Warp Cannon Works  
129 Boss Key Location Works  
130 Jumping Cheep Cheep Works  
131 Checkpoint - vertical Works Does the animation but doesn't set anything
132 Checkpoint Works Does the animation but doesn't set anything
133 Nothing N/A Technically works due to it being nothing
134 Nothing N/A Technically works due to it being nothing
135 Nothing N/A Technically works due to it being nothing
136 Pokey Works  
137 Nothing N/A Technically works due to it being nothing
138 Nothing N/A Technically works due to it being nothing
139 Nothing N/A Technically works due to it being nothing
140 Boss Key Works  
141 Swelling ground Works  
142 Tightrope Works  
143 Spiked ? Block (unused actor 251) Crashes  
144 Spiked ? Block Crashes  
145 Spiked ? Block (unused actor 253) Crashes  
146 Ground-pound panel Works  
147 Bump from below platform Works  
148 Goomba Works  
149 Koopa Troopa Works  
150 Koopa Paratroopa Works  
151 Nothing N/A Technically works due to it being nothing
152 Event trigger block Crash  
153 Nothing N/A Technically works due to it being nothing
154 Nothing N/A Technically works due to it being nothing
155 Special exit controller (warp entrance) Crash Sometimes just corrupts graphics and does nothing
156 Nothing N/A Technically works due to it being nothing
157 Fire Brother Partial Causes a desync
158 Boomerang Brother Partial Causes a desync
159 Nothing N/A Technically works due to it being nothing
160 Nothing N/A Technically works due to it being nothing
161 Nothing N/A Technically works due to it being nothing
162 Mushroom Platform lift Works  
163 Nothing N/A Technically works due to it being nothing
164 Event controller - "AND" Works   
165 Event controller - "OR" (If X OR Y, do Z) Works  
166 Event controller - "RANDOM" Works  
167 Event controller - chainer (If X, do Y) Works  
168 Event controller - "IF" (uses zones) Works  
169 Spin Block (unused Actor 255) N/A Doesn't spawn
170 Nothing N/A Technically works due to it being nothing
171 Spin Block (unused Actor 256) N/A Doesn't Spawn
172 Nothing N/A Technically works due to it being nothing
173 Swinging/able rope Works  
174 Mushroom Platform lift Works  
175 Bouncy bricks (Unused) Works  
176 Nothing N/A Technically works due to it being nothing
177 Nothing N/A Technically works due to it being nothing
178 Nothing N/A Technically works due to it being nothing
179 Nothing N/A Technically works due to it being nothing
180 Climbing Koopa Works  
181 Nothing N/A Technically works due to it being nothing
182 Nothing N/A Technically works due to it being nothing
183 Lakitu spawner Works  
184 Nothing N/A Technically works due to it being nothing
185 Cheep Cheep random spawner Works  
186 Paragoomba Works  
187 Balance lift Works  
188 Nothing N/A Technically works due to it being nothing
189 Pipe Cannon Works Desynchronizes the game
190 Nothing N/A Technically works due to it being nothing
191 Hanging Bouncing ? Block Works  
192 Coin Spawner (unused actor) Crash  
193 Big Dry Bones Works  
194 Big Thwomp Works  
195 0 Stick to bottom length activator left Works  
196 0 Stick to bottom length activator right Works  
197 Tile Creator/Destroyer (Tile God) Crash  
198 In air vertical scroll stop left N/A  
199 In air vertical scroll stop right N/A  
200 Nothing N/A Technically works due to it being nothing
201 Nothing N/A Technically works due to it being nothing
202 Nothing N/A Technically works due to it being nothing
203 Unused Purple Mushroom Platform Lift Works  
204 Fire Snake Works  
205 Flame Chomp Spawner Works  
206 Ghost house goo Works  
207 Big Cheep Cheep Works  
208 Nothing N/A Technically works due to it being nothing
209 Sledge Brother Works Causes a desync however
210 MvsL Battle Star Works Who would've thought
211 Blooper Works  
212 Blooper Nanny (unused actor 144) Works  
213 Blooper Nanny that w/ Baby Bloopers Works  
214 Nothing N/A Technically works due to it being nothing
215 Nothing N/A Technically works due to it being nothing
216 Nothing N/A Technically works due to it being nothing
217 Nothing N/A Technically works due to it being nothing
218 Auto-scrolling controller Works If the players spawn in the same position after respawning it stops working
219 Spike Top Works  
220 Bowser Jr. Works  
221 Nothing N/A Technically works due to it being nothing
222 Mini Goomba Works  
223 Flip fence Works  
224 Big flip fence Works  
225 Nothing N/A Technically works due to it being nothing
226 Scuttlebug N/A  
227 Moneybag Works  
228 Roulette Block Crash  
229 Petey Piranha Works  
230 Nothing N/A Technically works due to it being nothing
231 Water Works  
232 Hanging ? Block Works  
233 Swinging/able pole Works  
234 Lava Partial Causes a desync, line the top with lava tiles
235 Star Coin Crash  
236 Rotating square lift Works  
237 Broozer Works  
238 Purple Mushroom Platform lift Works  
239 Yellow/Orange Mushroom Platform Works  
240 Nothing N/A Technically works due to it being nothing
241 Bill Blaster Turret Works  
242 Blue Mushroom Platform Works  
243 Roof Spiny Works  
244 Bouncy Mushroom Platform Works  
245 Corked Pipe + foot pump Crashes  
246 Floating barrel Works  
247 Sushi spawner (shark spawner) Works  
248 Balloon Boo Works  
249 Track-controlled wall-jump lift Works  
250 Crowber Works  
251 Big Unagi Crash  
252 Banzai Bill Blaster Works  
253 Nothing N/A Technically works due to it being nothing
254 Kab-omb Works  
255 Jungle FG Effect (Unused Actor) Works  
256 Rotating carry-through-wall turntable-like lift Works  
257 Coin trail Cheep Cheep Works  
258 Spike Bass (unused object) Works  
259 Poisoned Water Partial Causes desync
260 Fast Spike Pillar - Down Works  
261 Fast Spike Pillar - Up Works  
262 Fast Spike Pillar - Left Works  
263 Fast Spike Pillar - Right Works  
264 Mega Ground Pound's sky drops + Crash  
265 Phantom Hand (Pointing hand) Works  
266 Invisible Lava Bubble (unused actor) Works  
267 Nothing N/A Technically works due to it being nothing
268 Underwater bounce bubble Works  
269 Giant Wiggler Works  
270 Smashed pipe object Works  
271 Crowber spawner Works  
272 Snowy branch Works  
273 Snow Spike Works  
274 Sinking-snow pile Works  
275 Blockhopper Partial Desyncs
276 Scroll and Mario stop sideways Works  
277 Arrow sign Works  
278 Groundpound-able ghost house goo Works  
279 Flipper (one-way gate) Works  
280 Horizontal camera offset N/A Not sure how this object works
281 Squiggler Works  
282 Swinging/able vine Works  
283 Spike Bass spawner Works  
284 Splunkin (pumpkin) Works  
285 Scuttlebug spawner N/A  
286 Event controller - multi-chainer Works  
287 Enemy-in-Pipe Generator Works  
288 Nothing N/A Technically works due to it being nothing
289 Platform Block (expandable block) Works Doesn't respawn if it turns into bricks and you collect a battle star.
290 Flying ? Block Crash Black screen
291 Brick Block containing ? Switch Works ? Switch graphics are not loaded correctly
292 Event Activated Door Works  
293 Touching ground vertical scroll stop left Works  
294 Touching ground vertical scroll stop right Works  
295 Mummipokey Works Use a P-Switch
296 Lift moving left and right Works  
297 Stonewall moving left and right Works  
298 Stonewall moving u, d, l, r Works  
299 Snake Block Works  
300 Haunted lift Works  
301 Toadsworth Works Only freezes Mario for a few seconds, and Luigi can roam freely. Background chooser will break because of BMG differences.
302 Toad House block Doesn't work Garble graphics.
303 Ball 'n' Chain Works  
304 Spike Pillar - down Works  
305 Final Castle Create Loop N/A I have no idea how this works.
306 Final Castle Wrong Path N/A I have no idea how this works.
307 Spike Pillar - up Works  
308 Spike Pillar - left Works  
309 Spike Pillar - right Works  
310 Fog FG effect Partial Graphics are not loaded correctly
311 Snow FG effect 1 Works  
312 Rise or lower while/once on Mushroom Platform lift - mechanical Works  
313 Snow FG effect 2 Works  
314 Snow FG effect 3 Works  
315 Cloud FG effect Partial Graphics are not loaded correctly
316 Water FG effect 1 Works  
317 Water FG effect 2 Works  
318 Fire FG effect 1 Works  
319 Fire FG effect 2 Works  
320 Fire FG effect 3 Works  
321 Light FG Effect 1 N/A  
322 Light FG Effect 2 Works  
323 Squishy cloud platform Works Both players can interact with it at the same time
324 Grassland Clouds FG effect Partial Graphics are not loaded correctly
325 Small Grassland Clouds FG effect Partial Graphics are not loaded correctly
Modding Tutorials

Modding 101 - Creating a Bare-Bones Level

Welcome to the world of New Super Mario Bros. DS modding. Making your first level is the first step every modder takes when starting from scratch.

In this tutorial, you'll learn how to:

Section 1: Getting Ready

To edit the game, you'll need a copy of your New Super Mario Bros. DS ROM and the New Super Mario Bros. Editor (NSMBe).

We are not allowed to give a download to the ROM. If you have a 3DS, here is a guide that lets you dump your game cartridge ROM using a modded 3DS.

For the best compatibility for more complex tasks, you will need a US region ROM.

Head over to GitHub to download the latest version of NSMBe from the Mamamia Team. When you click the link, you will be taken to a page that looks like this:

image.png

Just click on NSMBeX.X.X.zip to download the editor. (The X's will match with whatever version the editor is on. As of writing this version is 5.4.1, as seen in the screenshot)

Now, in your downloads folder, you need to extract the zip file. On Windows, this is done by right-clicking the .zip and clicking Extract All... Just click extract on the window that appears. You should now have a folder in your Downloads folder named NSMBeX.X.X.

The final folder will look something like this:

image.png

You have now installed the necessary tools to begin modding

Section 2: Opening Your ROM

Now that you have the editor extracted, let's open up your ROM!

Inside of the NSMBeX.X.X folder, open the app named NSMBe5.exe. You should see a window that looks something like this:

image.png

Now, click on Open ROM... and open your dumped ROM of New Super Mario Bros. DS

The ROM will have an extension of .nds

You should now see this:

image.png

You have now opened your ROM in the editor

Section 3: Opening a Level

Now for the fun part, editing a level!

To start, we will open 1-1, Area 1. To do this, open the World 1 drop down, open the 1-1 dropdown, and finally double click on Area 1.

Each level in the game has a various number of Areas. Nintendo used these as a way to keep each sub-area separated. For example, Area 1 of 1-1 is where you start the level, and Area 2 is the bonus room found in Area 1.

image.png

You will now be presented with the level view:

image.png

If the level view appears too small, you may need to modify the config file. To do this: open the file named "NSMBe5.exe.config" using Notepad, delete the lines:   <System.Windows.Forms.ApplicationConfigurationSection>                                                                                                       <add key="DpiAwareness" value="PerMonitorV2"/></System.Windows.Forms.ApplicationConfigurationSection>                                                                                           After deleting the lines, save the file, restart the editor, and open Area 1 again.

You have now opened a level from your ROM

Section 4: Creating a Bare-Bones Level

It is best practice to start from a blank level, so let's clear out the existing level by pressing Ctrl+A to select everything in the level, followed by clicking the image.pngat the top of the editor window. Your blank level will look like this:

image.png

Now that we have a blank level, what do we need to add back? 

All levels in NSMB DS must at minimum have a Start Entrance and at least one main View. With that being said, let's add them back!

To begin, we will add the main view. To do this, click on image.png in the sub-menu bar. This will show a list of all the views in the level (or it would if we didn't just delete everything in the level). To create a view, all we need to do is click on Add. Your level will now have a transparent box:

image.png

You'll notice a bunch of settings here. For now, the only thing you need to worry about is checking Scroll vertically. This allows the in-game camera to follow Mario up and down inside of your level.

The View defines the bounds of your level. The camera is not allowed to go outside of the current view. Mario can go above the view, however the camera will not follow him. The sides of a view will stop Mario. Mario will die if he falls below the bottom of the view.

Click and drag the small box that says View 0 and move the View to the top left of the level. While we're moving the view, go ahead and grab the bottom right box and extend the view to be one square big. You're level should look like this now:

image.png

Now, let's create the Start Entrance. Click on the image.png button in the sub-menu. Similarly to the views button, this will give a list of every Entrance that is in this level. Go ahead and click on Add to create a new Entrance.

image.png

Once again, there are a few settings on the entrance that you can play with but for now let's just move the entrance inside of our View.

image.png

There we go! We have what's at minimum required. However...if we were to play this level now, Mario would just fall down and die. Let's add a floor and the Goal Pole's Flag to this level!

To get to the Tile picker, click on the image.png button (and also click on Tileset 1 if it is not already selected). Your side bar should now be filled with Tiles!

image.png

Go ahead and pick the tile I have selected (highlighted in red in the screenshot), then right-click to place the tile in our view. After this, you can grab the corner of the tile and stretch it out across the view. 

image.png

Not bad! Now, let's make a Goal Pole for Mario to clear the level with.

First off, click on the image.png button in the sub menu to bring up the Actor List.

image.png

This is every Actor in the game. You'll become familiar with more Actors as you begin making levels. For now, enter "Goal Pole's Flag" into the search box. This will now filter out all other Actors.

image.png

Click on the Actor in the list, then right click in the level like you did for the tile. This will add the Goal Pole's Flag into the level.

image.png

On the left, you'll notice that some options for the Goal Pole's Flag has appeared. All Actors will have an options menu appear for them when they are highlighted in the level.

All that's left to do now is finish tiling the Goal Pole.

Test your knowledge! The Goal Pole tiles are located in Tileset 0, try and build the flag like the next screenshot! Here's a tip, the Goal Pole is 9 tiles high and two tiles wide. 

image.pngWith the flag created, we now need to build the castle. To begin, head over to Tileset 2 and click on the castle. Now, right click to place the castle and drag it to create the castle. Your level will look like this now:

image.png

We're almost done. The castle in this game is composed of three tiles: the castle we just created, the wall that will stop Mario, and the roof that allows the small flag to show up after you cleared the level. Select the wall from the tile picker:

image.pngDrag this wall over the castle you created.

image.pngLastly, drag the roof tile over the castle like you just did for the wall

image.png

You have now created a bare-bones level

You can now save your level using the save icon or by pressing Ctrl+S.

Tools

The tools used to mod NSMB DS with a general overview of how to use them

Tools

NSMBe

NSMBe is a modding tool for New Super Mario Bros. (DS) It is a level editor and a texture editor.

Tools

NCPatcher

NCPatcher is a program that modifies the executable binaries of a Nintendo DS ROM.
It was created because of the need to have more flexible patching features that other patchers did not have.

Tools

Fire Flower

Fire Flower has been replaced by NCPatcher

Fire Flower is a patcher for Nintendo DS games. It works different to any other patchers and aims towards performance, user-friendliness and practicability.

Code Modification

Going beyond the basics and modifying the game's code.

Code Modification

Using GDB with Ghidra and melonDS

What you'll need:

Configuring melonDS

To enable the GDB, you need to do the following:

  1. Click on the Config menu at the top of the emulator, then click on Emu Settings
  2. Click on the Devtools tab
  3. Check Enable GDB stub
  4. If you do not see the Devtools tab, then you have not built melonDS with GDB enabled. Please check the link at the start of the guide to find a download with GDB enabled or build it yourself enabling GDB in CMake

melonDS is ready to go!

Setting up Ghidra

To begin, open your Ghidra project in the code viewer as you normally would.

  1. Click on File -> Configure, which should open a list of tools
  2. Check the "Debugger" box

image.png

This should cause windows to appear in your current project, likely making the following steps redundant. If you are unable to find a window, the following steps will either open the window, or present it to you in the project.

Creating a Debugger Target

This method has been tested on Linux and macOS. You should be able to follow these steps using WSL on Windows. Follow this guide if you need help setting up WSL.

To begin, open the Debugger Targets window by navigating to Windows -> Debugger -> Debugger Targets.

The window should look something like this:

image.pngAs you'll notice, there is an active connection in the screenshot but nothing on your end...let's fix that!

Click on the image.png button to open the connect window.

If you are on Linux:
If you are on macOS
If you are on Windows

You have now created a Debugger Target

Connecting to melonDS

The gdb interpreter should have opened for you when you connected to the debugging target.

Now, in the interpreter menu, run the command target remote localhost:[ARM9 Port] (Where [ARM9 Port] is the ARM9 Port set in the Devtools tab.)

If melonDS pauses after running this command, GDB is now talking to melonDS

You have now connected Ghidra to melonDS 

Using Breakpoints

If you would like to set breakpoints, you'll need to use the Dynamic PC

  1. Open the Dynamic PC window by clicking Window -> Listing -> Dynamic - Auto PC, [...]
    1. If you do not see this option, you can alternatively open it via Window -> Debugger -> New Dynamic Listing

  2. Next, open the Modules window by clicking Window -> Debugger -> Modules
  3. Lastly, click on image.png in the Modules window.

Now, setting a breakpoint in your code view should set a breakpoint in the Dynamic PC

You have now set up Ghidra to debug melonDS. Happy coding!

Code Modification

Setting Up Code Modifications

So, you're ready to dive into the code of the game? Let's get started!

In this tutorial, you will learn how to:

This guide will cover the "NCPatcher Standalone" method described in the code template as the steps are more synchronized between all operating systems.

Setting Up the Code Template

  1. Head over to the code template's GitHub
  2. Click on Code -> Download ZIP
  3. Now extract this zip and rename the folder to what you want to call your project (this will be referred to as your project root)
  4. Don't put any spaces in your folder name!

You have now set up the code template

Setting up ARM GCC
  1. Head to the Arm GNU Toolchain Download Page
  2. Now search (using CTRL/CMD + F) for AArch32 bare-metal target (arm-none-eabi) and download the correct installer for your operating system.
  3. Open the installer and install the toolchain.
  4. Pick a location without spaces to install the toolchain!

You have now set up ARM GCC

Setting Up NCPatcher

  1. Head over to the NCPatcher GitHub releases page
  2. Download the latest release for your operating system
  3. Extract NCPatcher

Now, NCPatcher depends on ncpatcher.json, so lets make it!

If you'd like to learn more about this file, head over to the NCPatcher GitHub!

In your project root, create the following files:

{
"$arm_flags": "-masm-syntax-unified -mno-unaligned-access -mfloat-abi=soft -mabi=aapcs",
"$c_flags": "-Os -fomit-frame-pointer -ffast-math -fno-builtin -nostdlib -nodefaultlibs -nostartfiles -DSDK_GCC -DSDK_FINALROM",
"$cpp_flags": "-fno-rtti -fno-exceptions -std=c++20",
"$asm_flags": "-Os -x assembler-with-cpp -fomit-frame-pointer",
"$ld_flags": "-lgcc -lc -lstdc++ --use-blx",

"backup": "backup",
"filesystem": "nsmb",
"toolchain": "arm-none-eabi-",

"arm7": {},
"arm9": {
"target": "arm9.json",
"build": "build"
},

"pre-build": [],
"post-build": [],

"thread-count": 0
}

You have now set up NCPatcher

Extracting, Building, and Repackaging Your ROM

If you're on Windows
  1. Download fireflower.zip and extract it.
  2. Move nds-build.exe and nds-extract.exe out from the folder
If you're on macOS/Linux
  1. Download nds-extract.zip
  2. Download nds-build.zip
    • If these links are down, you can also find these files in our Discord
  3. Extract both ZIPs

Now, you need to build the tools.

For NDS Extract:

  1. Open a new Terminal window in the folder of the code
  2. Run this command: g++ nds-extract.cpp -o nds-extract -std=c++20

For NDS Build:

  1. Open a new Terminal window in the folder of the code
  2. Run this command: g++ nds-build.cpp -o nds-build -std=c++20

From here on, the instructions will work for all operating systems. If you are on Windows 10, you can use Command Prompt instead of Terminal

Extracting Your ROM
  1. Open a Terminal window in your project root
  2. Run this command: /path/to/nds-extract rom.nds nsmb

Replace /path/to/ with the actual file path to nds-extract. Also replace "rom" with the actual name of your .nds file

This will extract the contents of your ROM into a folder named nsmb

You have extracted your ROM

Building Your ROM

This step will compile and patch your ROM with any code files found in the source directory in your project root. The Code Template comes with a few examples included in the source directory.

  1. Open a Terminal window in your project root
  2. Run this command: /path/to/ncpatcher

Replace /path/to/ with the actual file path to ncpatcher

You have built your ROM

Repackaging Your ROM

nds-extract depends on buildrules.txt, so let's create it!

rom_header NSNDY/header.bin
arm9_entry KEEP
arm9_load KEEP
arm7_entry KEEP
arm7_load KEEP
fnt nsmb/fnt.bin
file_mode ADJUST
arm9 nsmb/arm9.bin
arm7 nsmb/arm7.bin
arm9ovt nsmb/arm9ovt.bin
arm7ovt nsmb/arm7ovt.bin
icon nsmb/banner.bin
rsa_sig nsmb/rsasig.bin
data nsmb/root
ovt_repl_flag 0xFF
ov9 nsmb/overlay9
ov7 nsmb/overlay7

This step will take the files form the nsmb folder and repackage them into a .nds file

  1. Open a Terminal window in your project root
  2. Run this command: /path/to/nds-build buildrules.txt NSMB.nds

Replace /path/to/ with the actual file path to nds-build.

You have repackaged your ROM

Code Modification

Porting old patch syntax to NCPatcher

This page will help you understand how you can port any patching syntax to NCPatcher's.

You are searching through NSMBHD or NSMB Central and you find a shiny code patch, you rush and put it in the source folder of your project only to find that a code patch is not compatible with your code! That sucks.

So what can we do? For this example NSMB E3 Recreation's PlayerAnims.cpp code patch will be used.

Step 1 - Investigation

Let's start by taking a look at PlayerAnims.cpp.

#include <nsmb.hpp>
#include <nsmb/extra/fixedpoint.hpp>

#define NAKED __attribute__((naked))

// Slow down rotation speed
NAKED void repl_02114DFC_ov_0A() { asm("MOV R5, #0xC00\nBX LR"); }

// Walking transition delay
void repl_0211667C_ov_0A() {}

void repl_02116698_ov_0A(Player* player, int id, bool doBlend, Player::FrameMode frameMode, fx32 speed, u16 frame) {
	// 3.75fx (0x3C00) is the max walk animation speed
	if (speed > (3.75fx / 2)) {
		speed = (3.75fx / 2);
	}

	if (player->animID == 2) {
		player->setBodyAnimationSpeed(speed);
	} else {
		if (player->animID == 1) {
			fx32 xvel = Math::abs(player->velocity.x);
			if (xvel >= 1.5fx) {
				player->setAnimation(2, doBlend, frameMode, speed, frame);
			} else {
				player->setBodyAnimationSpeed(speed);
			}
		} else {
			player->setAnimation(1, doBlend, frameMode, speed, frame);
		}
	}
}

// Force jump on anim 1
NAKED void nsub_02116A14_ov_0A() { asm("CMP R0, #1\nB 0x02116A18"); }

// Use anim 1
NAKED void repl_02116A2C_ov_0A() { asm("MOV R1, #1\nBX LR"); }

We must now wonder, what kind of a patch is this? Is this an NSMBe type patch or a Fireflower type patch?

By comparing common traits that each patcher uses we can guess what kind of patch type we are dealing with.

NSMBe type patches:

Fireflower type patches:

Did you guess correctly what kind of patch we are working with?

Click here to reveal the answer NSMBe

Step 2 - Porting

This is a fairly simple process. Here is a list that shows the different patch syntax between the patchers:

NSMBe Fireflower NCPatcher
hook safe ncp_hook
repl rlnk ncp_call
nsub hook ncp_jump
over ncp_over
ncp_repl

And here is an example comparing some of them:

// NSMBe
void hook_02000000() {} // doSomethingPatch
void repl_0200A000() {} // doUnspecifiedPatch
void repl_02010000_ov_0A() {} // doWhateverOverlayPatch
// over does not exist in NSMBe

// Fireflower
safe(0x02000000) void doSomethingPatch() {}
rlnk(0x0200A000) void doUnspecifiedPatch() {}
rlnk(0x02010000, 10) void doWhateverOverlayPatch() {}
over(0x02159348, 52) static int stupidVar = 0x0215CA6C;

// NCPatcher
ncp_hook(0x02000000) void doSomethingPatch() {}
ncp_call(0x0200A000) void doUnspecifiedPatch() {}
ncp_call(0x02010000, 10) void doWhateverOverlayPatch() {}
ncp_over(0x02159348, 52) static int stupidVar = 0x0215CA6C;

These addresses are ficticious and purely for demonstration!

An important thing to remember is that all values in NSMBe patches are always written in hexadecimal without 0x prepended to them. In NCPatcher if you want to specify an hexadecimal value you need to prepend 0x, otherwise the value will be interpreted as a decimal value!

Let's go back to PlayerAnims.cpp and try to apply these changes.

#include <nsmb.hpp>
#include <nsmb/extra/fixedpoint.hpp>

#define NAKED __attribute__((naked))

NAKED ncp_call(0x02114DFC, 10)
void slowDownRotationSpeed() { asm("MOV R5, #0xC00\nBX LR"); }

// Walking transition delay
ncp_call(0x0211667C, 10) void doNotJumpOnAnim2() {}

ncp_call(0x02116698, 10)
void customPlayerAnimator(Player* player, int id, bool doBlend, Player::FrameMode frameMode, fx32 speed, u16 frame) {
	// 3.75fx (0x3C00) is the max walk animation speed
	if (speed > (3.75fx / 2)) {
		speed = (3.75fx / 2);
	}

	if (player->animID == 2) {
		player->setBodyAnimationSpeed(speed);
	} else {
		if (player->animID == 1) {
			fx32 xvel = Math::abs(player->velocity.x);
			if (xvel >= 1.5fx) {
				player->setAnimation(2, doBlend, frameMode, speed, frame);
			} else {
				player->setBodyAnimationSpeed(speed);
			}
		} else {
			player->setAnimation(1, doBlend, frameMode, speed, frame);
		}
	}
}

NAKED ncp_jump(0x02116A14, 10)
void forceJumpOnAnim1() { asm("CMP R0, #1\nB 0x02116A18"); }

NAKED ncp_call(0x02116A2C, 10) 
void useAnim1() { asm("MOV R1, #1\nBX LR"); }

The code should now compile!

If your code still doesn't work because it complains about some functions not being defined or not existing then you might want to check this out as well: Porting old patches to the NSMB Code Reference

What if the patch was an assembly .s file instead of C .c or C++ .cpp? The process is the same.

hook_....:
    BX LR

Becomes

ncp_hook(...)
    BX LR

Step 4 - Tidying up

Even though the code should now be able to execute, it is still not in its optimal state. This part is slightly more complicated because it requires understanding the code.

NCPatcher includes its own definition of __attribute__((naked)) which is ncp_asmfunc so we remove that macro definition and use ncp_asmfunc instead.

#include <nsmb.hpp>
#include <nsmb/extra/fixedpoint.hpp>

ncp_asmfunc ncp_call(0x02114DFC, 10)
void slowDownRotationSpeed() { asm("MOV R5, #0xC00\nBX LR"); }

// Walking transition delay
ncp_call(0x0211667C, 10) void doNotJumpOnAnim2() {}

ncp_call(0x02116698, 10)
void customPlayerAnimator(Player* player, int id, bool doBlend, Player::FrameMode frameMode, fx32 speed, u16 frame) {
	// 3.75fx (0x3C00) is the max walk animation speed
	if (speed > (3.75fx / 2)) {
		speed = (3.75fx / 2);
	}

	if (player->animID == 2) {
		player->setBodyAnimationSpeed(speed);
	} else {
		if (player->animID == 1) {
			fx32 xvel = Math::abs(player->velocity.x);
			if (xvel >= 1.5fx) {
				player->setAnimation(2, doBlend, frameMode, speed, frame);
			} else {
				player->setBodyAnimationSpeed(speed);
			}
		} else {
			player->setAnimation(1, doBlend, frameMode, speed, frame);
		}
	}
}

ncp_asmfunc ncp_jump(0x02116A14, 10)
void forceJumpOnAnim1() { asm("CMP R0, #1\nB 0x02116A18"); }

ncp_asmfunc ncp_call(0x02116A2C, 10) 
void useAnim1() { asm("MOV R1, #1\nBX LR"); }

Now, take a look at the original purpose of repl_0211667C_ov_0A (now named doNotJumpOnAnim2) and the code it targeted.

ov10:02116678   CMP R0, #2
ov10:0211667C   BEQ 0x021166A0
ov10:02116680   MOV R0, R5

We can see that what we are doing is the following:

ov10:02116678    CMP R0, #2
ov10:0211667C    BL  repl_0211667C_ov_0A
ov10:02116680    MOV R0, R5
//...
repl_0211667C_ov_0A:
    BX LR // return generated by the compiler

Essentially we are just making it so BEQ 0x021166A0 will never jump to 0x021166A0, but we are not doing this efficiently because we jump from 0x0211667C to repl_0211667C_ov_0A and then back to 0x02116680 instead of just continuing. This wastes memory and CPU cycles, but it was the only way of doing so in NSMBe. Instead we can write it like ncp_repl(0x0211667C, 10, "NOP") in NCPatcher, making the instruction do nothing and just skip to the next one without using any more memory.

ov10:02116678    CMP R0, #2
ov10:0211667C    NOP        // Skips to the next instruction
ov10:02116680    MOV R0, R5

After evaluating all theses different cases, our optimal code should look like this:

#include <nsmb.hpp>
#include <nsmb/extra/fixedpoint.hpp>

// Slow down rotation speed
ncp_repl(0x02114DFC, 10, "MOV R5, #0xC00")

// Walking transition delay
ncp_repl(0x0211667C, 10, "NOP")

ncp_call(0x02116698, 10)
void customPlayerAnimator(Player* player, int id, bool doBlend, Player::FrameMode frameMode, fx32 speed, u16 frame) {
	// 3.75fx (0x3C00) is the max walk animation speed
	if (speed > (3.75fx / 2)) {
		speed = (3.75fx / 2);
	}

	if (player->animID == 2) {
		player->setBodyAnimationSpeed(speed);
	} else {
		if (player->animID == 1) {
			fx32 xvel = Math::abs(player->velocity.x);
			if (xvel >= 1.5fx) {
				player->setAnimation(2, doBlend, frameMode, speed, frame);
			} else {
				player->setBodyAnimationSpeed(speed);
			}
		} else {
			player->setAnimation(1, doBlend, frameMode, speed, frame);
		}
	}
}

// Force jump on anim 1
ncp_repl(0x02116A14, 10, "CMP R0, #1")

// Use anim 1
ncp_repl(0x02116A2C, 10, "MOV R1, #1")
Code Modification

Porting old patches to the NSMB Code Reference

2D Graphics

Documentation of 2D graphics (anything that uses NCG, NCL and NSC)

2D Graphics

Tileset Information

TODO: Document Map16 & Tile behaviors

Bitmap Table

Slot Bitmap
Tileset 0 (Jyotyu) d_2d_A_J_jyotyu_ncg.bin
Tileset 2 (Sub Nohara) d_2d_I_S_tikei_nohara_ncg.bin
0: Grassland d_2d_I_M_tikei_nohara_ncg.bin
1: Castle d_2d_I_M_tikei_yakata_ncg.bin
2: Desert d_2d_I_M_tikei_sabaku_ncg.bin
3: Underground (with ice) d_2d_I_M_tikei_chika_ncg.bin
4: Sky/mushrooms (world 7 style) d_2d_I_M_tikei_kumo_ncg.bin
5: Underwater d_2d_W_M_tikei_suichu_ncg.bin
6: Desert d_2d_!_M_tikei_sabaku_ncg.bin
7: Volcano (brown) d_2d_W_M_tikei_yougan_ncg.bin
8: Grassland d_2d_I_M_tikei_nohara_ncg.bin
9: Beach (blue) d_2d_W_M_tikei_kaigan_ncg.bin
10: Beach (blue) d_2d_W_M_tikei_kaigan_ncg.bin
11: Forest d_2d_W_M_tikei_jungle_ncg.bin
12: Grassland d_2d_I_M_tikei_nohara_ncg.bin
13: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_ncg.bin
14: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_ncg.bin
15: Volcano (black) d_2d_W_M_tikei_kazan_ncg.bin
16: Volcano (black 2) [Unused] d_2d_W_M_tikei_kazangake_ncg.bin
17: Snow (with ice) d_2d_I_M_tikei_setsugen_ncg.bin
18: Snow d_2d_I_M_tikei_setsugen2_ncg.bin
19: Forest d_2d_W_M_tikei_jungle_ncg.bin
20: Oasis in Desert d_2d_W_M_tikei_kaigan3_ncg.bin
21: Bonus Room [Unused] d_2d_I_M_tikei_mame_ncg.bin
22: Volcano (black 2) [Unused] d_2d_W_M_tikei_kanzagake_ncg.bin
23: Ghost House d_2d_S_M_tikei_obakeyasiki_ncg.bin
24: Cliffs d_2d_W_M_tikei_kazangake2_ncg.bin
25: Cliffs d_2d_W_M_tikei_kazangake2_ncg.bin
26: Snow (with ice) d_2d_I_M_tikei_setsugen_ncg.bin
27: Grassland d_2d_I_M_tikei_nohara_ncg.bin
28: Snow (with ice) d_2d_I_M_tikei_setsugen_ncg.bin
29: Factory (W7-A) d_2d_W_M_tikei_dokansoto_ncg.bin
30: Sewer (W2-3) d_2d_W_M_tikei_dokannaka_ncg.bin
31: Volcano (yellow) d_2d_W_M_tikei_yougantate_ncg.bin
32: Castle d_2d_I_M_tikei_yakata_ncg.bin
33: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_ncg.bin
34: Grassland d_2d_I_M_tikei_nohara_ncg.bin
35: Underground d_2d_I_M_tikei_chika3_ncg.bin
36: Underground (dark blue) [Unused] d_2d_I_M_tikei_chika_ncg.bin
37: Dark world (purple) d_2d_I_M_tikei_koopa_heigen_ncg.bin
38: Dark world (brown) d_2d_I_M_tikei_koopa_iwa_ncg.bin
39: Tower d_2d_I_M_tikei_toride_ncg.bin
40: Ghost house exit d_2d_S_M_tikei_obake_soto_ncg.bin
41: Final Castle d_2d_I_M_tikei_yakata_ncg.bin
42: Toad house 1 d_2d_W_M_tikei_kinokoA_ncg.bin
43: Toad house 2 d_2d_W_M_tikei_kinokoB_ncg.bin
44: Toad house 3 d_2d_W_M_tikei_kinokoC_ncg.bin
45: Final Castle d_2d_I_M_tikei_yakata_ncg.bin
46: Toad house 4 d_2d_I_M_tikei_kinokoD_ncg.bin
47: Bowser Jr battle d_2d_I_M_tikei_toride_boss_ncg.bin
48: Beach (blue) d_2d_W_M_tikei_kaigan_ncg.bin
49: Boss battle d_2d_I_M_tikei_yakata_boss_ncg.bin
50: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_boss_ncg.bin
51: Forest d_2d_W_M_tikei_jungle_ncg.bin
52: Desert d_2d_I_M_tikei_sabaku_ncg.bin
53: Desert d_2d_I_M_tikei_sabaku_ncg.bin
54: Jungle d_2d_W_M_jungle_ncg.bin
55: Final boss battle d_2d_I_M_koopa_boss_ncg.bin
56: Volcano (black) d_2d_W_M_kazan_ncg.bin
57: Underwater d_2d_W_M_suichu_ncg.bin
58: Light grey castle (W8 Castle 1) d_2d_I_M_yakata_nise_ncg.bin
59: Sky/Mushrooms (yellow-ish) d_2d_I_M_kumo2_ncg.bin
60: Beach (turquoise, without moss) d_2d_W_M_kaigan2_ncg.bin
61: Lakithunder and Monty Tank battles d_2d_I_M_yakata_bossW7_ncg.bin
62: Boss battles d_2d_I_M_yakata_boss_ncg.bin
63: Mummy-Pokey battle d_2d_I_M_sabaku_boss_ncg.bin
64: Oasis in Desert d_2d_W_M_kaigan3_ncg.bin
65: Desert d_2d_I_M_sabaku_ncg.bin
66: Oasis in Desert d_2d_W_M_kaigan3_ncg.bin
67: Bonus room [Unused] d_2d_I_M_mame_ncg.bin
68: Bonus room [Unused] d_2d_I_M_mame_ncg.bin
69: Bonus room [Unused] d_2d_I_M_mame_ncg.bin
70: Bonus room [Unused] d_2d_I_M_mame_ncg.bin
71: Bonus room [Unused] d_2d_I_M_mame_ncg.bin
72: Bonus room [Unused] d_2d_I_M_mame_ncg.bin
73: Underground (gold) [Unused] d_2d_I_M_chika4_ncg.bin
74: Bonus room d_2d_I_M_mame_bonus_ncg.bin
75: Grassland d_2d_I_M_nohara_ncg.bin

Animations Table

Slot Animations
Tileset 0 (Jyotyu) d_2d_TEN_A_J_jyotyu_ncg.bin
Tileset 2 (Sub Nohara) None
0: Grassland None
1: Castle d_2d_TEN_I_yakata_ncg.bin
2: Desert None
3: Underground (with ice) None
4: Sky/mushrooms (world 7 style) None
5: Underwater None
6: Desert None
7: Volcano (brown) None
8: Grassland None
9: Beach (blue) None
10: Beach (blue) None
11: Forest None
12: Grassland None
13: Sky/mushrooms (with flowers and bushes) None
14: Sky/mushrooms (with flowers and bushes) None
15: Volcano (black) None
16: Volcano (black 2) [Unused] None
17: Snow (with ice) None
18: Snow None
19: Forest None
20: Oasis in Desert None
21: Bonus Room [Unused] None
22: Volcano (black 2) [Unused] None
23: Ghost House None
24: Cliffs None
25: Cliffs None
26: Snow (with ice) None
27: Grassland None
28: Snow (with ice) None
29: Factory (W7-A) None
30: Sewer (W2-3) None
31: Volcano (yellow) None
32: Castle None
33: Sky/mushrooms (with flowers and bushes) None
34: Grassland None
35: Underground None
36: Underground (dark blue) [Unused] None
37: Dark world (purple) None
38: Dark world (brown) None
39: Tower d_2d_TEN_I_toride_ncg.bin
40: Ghost house exit None
41: Final Castle None
42: Toad house 1 None
43: Toad house 2 None
44: Toad house 3 None
45: Final Castle None
46: Toad house 4 None
47: Bowser Jr battle None
48: Beach (blue) None
49: Boss battle None
50: Sky/mushrooms (with flowers and bushes) None
51: Forest None
52: Desert None
53: Desert None
54: Jungle None
55: Final boss battle None
56: Volcano (black) None
57: Underwater None
58: Light grey castle (W8 Castle 1) None
59: Sky/Mushrooms (yellow-ish) None
60: Beach (turquoise, without moss) None
61: Lakithunder and Monty Tank battles None
62: Boss battles None
63: Mummy-Pokey battle None
64: Oasis in Desert None
65: Desert None
66: Oasis in Desert None
67: Bonus room [Unused] None
68: Bonus room [Unused] None
69: Bonus room [Unused] None
70: Bonus room [Unused] None
71: Bonus room [Unused] None
72: Bonus room [Unused] None
73: Underground (gold) [Unused] None
74: Bonus room None
75: Grassland None

Palette Table

Slot Palette
Tileset 0 (Jyotyu) d_2d_A_J_jyotyu_B_ncl.bin
d_2d_A_J_jyotyu_F_ncl.bin
d_2d_A_J_jyotyu_ncl.bin
d_2d_A_J_jyotyu_R_ncl.bin
d_2d_A_J_jyotyu_W_ncl.bin
Tileset 2 (Sub Nohara) d_2d_I_S_tikei_nohara_ncl.bin
0: Grassland d_2d_I_M_tikei_nohara_ncl.bin
1: Castle d_2d_I_M_tikei_yakata_ncl.bin
2: Desert d_2d_I_M_tikei_sabaku_ncl.bin
3: Underground (with ice) d_2d_I_M_tikei_cika_ncl.bin
4: Sky/mushrooms (world 7 style) d_2d_I_M_tikei_kumo_ncl.bin
5: Underwater d_2d_W_M_tikei_suichu_ncl.bin
6: Desert d_2d_I_M_tikei_sabaku_ncl.bin
7: Volcano (brown) d_2d_W_M_tikei_yougan_ncl.bin
8: Grassland d_2d_I_M_tikei_nohara_ncl.bin
9: Beach (blue) d_2d_W_M_tikei_kaigan_ncl.bin
10: Beach (blue) d_2d_W_M_tikei_kaigan_ncl.bin
11: Forest d_2d_W_M_tikei_jungle_ncl.bin
12: Grassland d_2d_I_M_tikei_nohara_ncl.bin
13: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_ncl.bin
14: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_ncl.bin
15: Volcano (black) d_2d_W_M_tikei_kazan_ncl.bin
16: Volcano (black 2) [Unused] d_2d_W_M_tikei_kazangake_ncl.bin
17: Snow (with ice) d_2d_I_M_tikei_setsugen_ncl.bin
18: Snow d_2d_I_M_tikei_setsugen2_ncl.bin
19: Forest d_2d_W_M_tikei_jungle_ncl.bin
20: Oasis in Desert d_2d_W_M_tikei_kaigan3_ncl.bin
21: Bonus Room [Unused] d_2d_I_M_tikei_mame_ncl.bin
22: Volcano (black 2) [Unused] d_2d_W_M_tikei_kanzagake_ncl.bin
23: Ghost House d_2d_S_M_tikei_obakeyasiki_ncl.bin
24: Cliffs d_2d_W_M_tikei_kazangake2_ncl.bin
25: Cliffs d_2d_W_M_tikei_kazangake2_ncl.bin
26: Snow (with ice) d_2d_I_M_tikei_setsugen_ncl.bin
27: Grassland d_2d_I_M_tikei_nohara_ncl.bin
28: Snow (with ice) d_2d_I_M_tikei_setsugen_ncl.bin
29: Factory (W7-A) d_2d_W_M_tikei_dokansoto_ncl.bin
30: Sewer (W2-3) d_2d_W_M_tikei_dokannaka_ncl.bin
31: Volcano (yellow) d_2d_W_M_tikei_yougantate_ncl.bin
32: Castle d_2d_I_M_tikei_yakata_ncl.bin
33: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_ncl.bin
34: Grassland d_2d_I_M_tikei_nohara_ncl.bin
35: Underground d_2d_I_M_tikei_chika3_ncl.bin
36: Underground (dark blue) [Unused] d_2d_I_M_tikei_chika_ncl.bin
37: Dark world (purple) d_2d_I_M_tikei_koopa_heigen_ncl.bin
38: Dark world (brown) d_2d_I_M_tikei_koopa_iwa_ncl.bin
39: Tower d_2d_I_M_tikei_toride_ncl.bin
40: Ghost house exit d_2d_S_M_tikei_obake_soto_ncl.bin
41: Final Castle d_2d_I_M_tikei_yakata_ncl.bin
42: Toad house 1 d_2d_W_M_tikei_kinokoA_ncl.bin
43: Toad house 2 d_2d_W_M_tikei_kinokoB_ncl.bin
44: Toad house 3 d_2d_W_M_tikei_kinokoC_ncl.bin
45: Final Castle d_2d_I_M_tikei_yakata_ncl.bin
46: Toad house 4 d_2d_I_M_tikei_kinokoD_ncl.bin
47: Bowser Jr battle d_2d_I_M_tikei_toride_boss_ncl.bin
48: Beach (blue) d_2d_W_M_tikei_kaigan_ncl.bin
49: Boss battle d_2d_I_M_tikei_yakata_boss_ncl.bin
50: Sky/mushrooms (with flowers and bushes) d_2d_I_M_tikei_kinoko_boss_ncl.bin
51: Forest d_2d_W_M_tikei_jungle_ncl.bin
52: Desert d_2d_I_M_tikei_sabaku_ncl.bin
53: Desert d_2d_I_M_tikei_sabaku_ncl.bin
54: Jungle d_2d_W_M_jungle_ncl.bin
55: Final boss battle d_2d_I_M_koopa_boss_ncl.bin
56: Volcano (black) d_2d_W_M_kazan_ncl.bin
57: Underwater d_2d_W_M_suichu_ncl.bin
58: Light grey castle (W8 Castle 1) d_2d_I_M_yakata_nise_ncl.bin
59: Sky/Mushrooms (yellow-ish) d_2d_I_M_kumo2_ncl.bin
60: Beach (turquoise, without moss) d_2d_W_M_kaigan2_ncl.bin
61: Lakithunder and Monty Tank battles d_2d_I_M_yakata_bossW7_ncl.bin
62: Boss battles d_2d_I_M_yakata_boss_ncl.bin
63: Mummy-Pokey battle d_2d_I_M_sabaku_boss_ncl.bin
64: Oasis in Desert d_2d_W_M_kaigan3_ncl.bin
65: Desert d_2d_I_M_sabaku_ncl.bin
66: Oasis in Desert d_2d_W_M_kaigan3_ncl.bin
67: Bonus room [Unused] d_2d_I_M_mame_ncl.bin
68: Bonus room [Unused] d_2d_I_M_mame_ncl.bin
69: Bonus room [Unused] d_2d_I_M_mame_ncl.bin
70: Bonus room [Unused] d_2d_I_M_mame_ncl.bin
71: Bonus room [Unused] d_2d_I_M_mame_ncl.bin
72: Bonus room [Unused] d_2d_I_M_mame_ncl.bin
73: Underground (gold) [Unused] d_2d_I_M_chika4_ncl.bin
74: Bonus room d_2d_I_M_mame_bonus_ncl.bin
75: Grassland d_2d_I_M_nohara_ncl.bin

Object Definitions Table

Slot Object Definitions
Tileset 0 (Jyotyu) A_J_jyotyu.bin
A_J_joytyu_hd.bin
Tileset 2 (Sub Nohara) I_S_nohara.bin
I_S_nohara_hd.bin
0: Grassland I_M_nohara.bin
I_M_nohara_hd.bin
1: Castle I_M_yakata.bin
I_M_yakata_hd.bin
2: Desert I_M_sabaku.bin
I_M_sabaku_hd.bin
3: Underground (with ice) I_M_chika.bin
I_M_chika_hd.bin
4: Sky/mushrooms (world 7 style) I_M_kumo.bin
I_M_kumo_hd.bin
5: Underwater W_M_suichu.bin
W_M_suichu_hd.bin
6: Desert I_M_sabaku
I_M_sabaku_hd.bin
7: Volcano (brown) W_M_yougan.bin
W_M_yougan_hd.bin
8: Grassland I_M_nohara.bin
I_M_nohara_hd.bin
9: Beach (blue) W_M_kaigan.bin
W_M_kaigan_hd.bin
10: Beach (blue) W_M_kaigan.bin
W_M_kaigan_hd.bin
11: Forest W_M_jungle.bin
W_M_jungle_hd.bin
12: Grassland I_M_nohara2.bin
I_M_nohara2_hd.bin
13: Sky/mushrooms (with flowers and bushes) I_M_kinoko.bin
I_M_kinoko_hd.bin
14: Sky/mushrooms (with flowers and bushes) I_M_kinoko.bin
I_M_kinoko_hd.bin
15: Volcano (black) W_M_kazan.bin
W_M_kazan_hd.bin
16: Volcano (black 2) [Unused] W_M_kazangake.bin
W_M_kazangake_hd.bin
17: Snow (with ice) I_M_setsugen.bin
I_M_setsugen_hd.bin
18: Snow I_M_setsugen2.bin
I_M_setsugen2_hd.bin
19: Forest W_M_jungle.bin
W_M_jungle_hd.bin
20: Oasis in Desert W_M_kaigan3.bin
W_M_kaigan3_hd.bin
21: Bonus Room [Unused] I_M_mame.bin
I_M_mame_hd.bin
22: Volcano (black 2) [Unused] W_M_kazangake.bin
W_M_kazangake_hd.bin
23: Ghost House S_M_obakeyasiki.bin
S_M_obakeyasiki_hd.bin
24: Cliffs W_M_kazangake2.bin
W_M_kazangake2_hd.bin
25: Cliffs W_M_kazangake2.bin
W_M_kazangake2_hd.bin
26: Snow (with ice) I_M_setsugen.bin
I_M_setsugen_hd.bin
27: Grassland I_M_yakata.bin
I_M_yakata_hd.bin
28: Snow (with ice) I_M_setsugen.bin
I_M_setsugen_hd.bin
29: Factory (W7-A) W_M_dokansoto.bin
W_M_dokansoto_hd.bin
30: Sewer (W2-3) W_M_dokannaka.bin
W_M_dokannaka_hd.bin
31: Volcano (yellow) W_M_yougantate.bin
W_M_yougantate_hd.bin
32: Castle I_M_yakata.bin
I_M_yakata_hd.bin
33: Sky/mushrooms (with flowers and bushes) I_M_kinoko.bin
I_M_kinoko_hd.bin
34: Grassland I_M_nohara.bin
I_M_nohara_hd.bin
35: Underground I_M_chika3.bin
I_M_chika3_hd.bin
36: Underground (dark blue) [Unused] I_M_chika2.bin
I_M_chika2_hd.bin
37: Dark world (purple) I_M_koopa_heigen.bin
I_M_koopa_heigen_hd.bin
38: Dark world (brown) I_M_koopa_iwa.bin
I_M_koopa_iwa_hd.bin
39: Tower I_M_toride.bin
I_M_toride_hd.bin
40: Ghost house exit I_M_obake_soto.bin
I_M_obake_soto_hd.bin
41: Final Castle I_M_yakata.bin
I_M_yakata_hd.bin
42: Toad house 1 W_M_kinokoA.bin
W_M_kinokoA_hd.bin
43: Toad house 2 W_M_kinokoB.bin
W_M_kinokoB_hd.bin
44: Toad house 3 W_M_kinokoC.bin
W_M_kinokoC_hd.bin
45: Final Castle I_M_yakata2.bin
I_M_yakata2_hd.bin
46: Toad house 4 W_M_kinokoD.bin
W_M_kinokoD_hd.bin
47: Bowser Jr battle I_M_toride_boss.bin
I_M_toride_boss_hd.bin
48: Beach (blue) W_M_kaigan.bin
W_M_kaigan_hd.bin
49: Boss battle I_M_yakata_boss.bin
I_M_yakata_boss_hd.bin
50: Sky/mushrooms (with flowers and bushes) I_M_kinoko.bin
I_M_kinoko_hd.bin
51: Forest W_M_jungle.bin
W_M_jungle_hd.bin
52: Desert I_M_sabaku.bin
I_M_sabaku_hd.bin
53: Desert I_M_sabaku.bin
I_M_sabaku_hd.bin
54: Jungle W_M_jungle.bin
W_M_jungle_hd.bin
55: Final boss battle I_M_koopa_boss.bin
I_M_koopa_boss_hd.bin
56: Volcano (black) W_M_kazan.bin
W_M_kazan_hd.bin
57: Underwater W_M_suichu.bin
W_M_suichu_hd.bin
58: Light grey castle (W8 Castle 1) I_M_yakata_nise.bin
I_M_yakata_nise_hd.bin
59: Sky/Mushrooms (yellow-ish) I_M_kumo2.bin
I_M_kumo2_hd.bin
60: Beach (turquoise, without moss) W_M_kaigan2.bin
W_M_kaigan2_hd.bin
61: Lakithunder and Monty Tank battles I_M_yakata_bossW7.bin
I_M_yakata_bossW7_hd.bin
62: Boss battles I_M_yakata_boss.bin
I_M_yakata_boss_hd.bin
63: Mummy-Pokey battle I_M_sabaku_boss.bin
I_M_sabaku_boss_hd.bin
64: Oasis in Desert W_M_kaigan3.bin
W_M_kaigan3_hd.bin
65: Desert I_M_sabaku2.bin
I_M_sabaku2_hd.bin
66: Oasis in Desert W_M_kaigan3.bin
W_M_kaigan3_hd.bin
67: Bonus room [Unused] I_M_mame.bin
I_M_mame_hd.bin
68: Bonus room [Unused] I_M_mame.bin
I_M_mame_hd.bin
69: Bonus room [Unused] I_M_mame.bin
I_M_mame_hd.bin
70: Bonus room [Unused] I_M_mame.bin
I_M_mame_hd.bin
71: Bonus room [Unused] I_M_mame.bin
I_M_mame_hd.bin
72: Bonus room [Unused] I_M_mame.bin
I_M_mame_hd.bin
73: Underground (gold) [Unused] I_M_chika4.bin
I_M_chika4_hd.bin
74: Bonus room I_M_mame_bonus.bin
I_M_mame_bonus_hd.bin
75: Grassland I_M_nohara.bin
I_M_nohara_hd.bin

Map16 Table

Slot Map16
Tileset 0 (Jyotyu) TBA
Tileset 2 (Sub Nohara) TBA
0: Grassland TBA
1: Castle TBA
2: Desert TBA
3: Underground (with ice) TBA
4: Sky/mushrooms (world 7 style) TBA
5: Underwater TBA
6: Desert TBA
7: Volcano (brown) TBA
8: Grassland TBA
9: Beach (blue) TBA
10: Beach (blue) TBA
11: Forest TBA
12: Grassland TBA
13: Sky/mushrooms (with flowers and bushes) TBA
14: Sky/mushrooms (with flowers and bushes) TBA
15: Volcano (black) TBA
16: Volcano (black 2) [Unused] TBA
17: Snow (with ice) TBA
18: Snow TBA
19: Forest TBA
20: Oasis in Desert TBA
21: Bonus Room [Unused] TBA
22: Volcano (black 2) [Unused] TBA
23: Ghost House TBA
24: Cliffs TBA
25: Cliffs TBA
26: Snow (with ice) TBA
27: Grassland TBA
28: Snow (with ice) TBA
29: Factory (W7-A) TBA
30: Sewer (W2-3) TBA
31: Volcano (yellow) TBA
32: Castle TBA
33: Sky/mushrooms (with flowers and bushes) TBA
34: Grassland TBA
35: Underground TBA
36: Underground (dark blue) [Unused] TBA
37: Dark world (purple) TBA
38: Dark world (brown) TBA
39: Tower TBA
40: Ghost house exit TBA
41: Final Castle TBA
42: Toad house 1 TBA
43: Toad house 2 TBA
44: Toad house 3 TBA
45: Final Castle TBA
46: Toad house 4 TBA
47: Bowser Jr battle TBA
48: Beach (blue) TBA
49: Boss battle TBA
50: Sky/mushrooms (with flowers and bushes) TBA
51: Forest TBA
52: Desert TBA
53: Desert TBA
54: Jungle TBA
55: Final boss battle TBA
56: Volcano (black) TBA
57: Underwater TBA
58: Light grey castle (W8 Castle 1) TBA
59: Sky/Mushrooms (yellow-ish) TBA
60: Beach (turquoise, without moss) TBA
61: Lakithunder and Monty Tank battles TBA
62: Boss battles TBA
63: Mummy-Pokey battle TBA
64: Oasis in Desert TBA
65: Desert TBA
66: Oasis in Desert TBA
67: Bonus room [Unused] TBA
68: Bonus room [Unused] TBA
69: Bonus room [Unused] TBA
70: Bonus room [Unused] TBA
71: Bonus room [Unused] TBA
72: Bonus room [Unused] TBA
73: Underground (gold) [Unused] TBA
74: Bonus room TBA
75: Grassland TBA

Tile Behaviors

Slot Tile Behaviors
Tileset 0 (Jyotyu) Overlay 0
Tileset 2 (Sub Nohara) TBA
0: Grassland TBA
1: Castle TBA
2: Desert TBA
3: Underground (with ice) TBA
4: Sky/mushrooms (world 7 style) TBA
5: Underwater TBA
6: Desert TBA
7: Volcano (brown) TBA
8: Grassland TBA
9: Beach (blue) TBA
10: Beach (blue) TBA
11: Forest TBA
12: Grassland TBA
13: Sky/mushrooms (with flowers and bushes) TBA
14: Sky/mushrooms (with flowers and bushes) TBA
15: Volcano (black) TBA
16: Volcano (black 2) [Unused] TBA
17: Snow (with ice) TBA
18: Snow TBA
19: Forest TBA
20: Oasis in Desert TBA
21: Bonus Room [Unused] TBA
22: Volcano (black 2) [Unused] TBA
23: Ghost House TBA
24: Cliffs TBA
25: Cliffs TBA
26: Snow (with ice) TBA
27: Grassland TBA
28: Snow (with ice) TBA
29: Factory (W7-A) TBA
30: Sewer (W2-3) TBA
31: Volcano (yellow) TBA
32: Castle TBA
33: Sky/mushrooms (with flowers and bushes) TBA
34: Grassland TBA
35: Underground TBA
36: Underground (dark blue) [Unused] TBA
37: Dark world (purple) TBA
38: Dark world (brown) TBA
39: Tower TBA
40: Ghost house exit TBA
41: Final Castle TBA
42: Toad house 1 TBA
43: Toad house 2 TBA
44: Toad house 3 TBA
45: Final Castle TBA
46: Toad house 4 TBA
47: Bowser Jr battle TBA
48: Beach (blue) TBA
49: Boss battle TBA
50: Sky/mushrooms (with flowers and bushes) TBA
51: Forest TBA
52: Desert TBA
53: Desert TBA
54: Jungle TBA
55: Final boss battle TBA
56: Volcano (black) TBA
57: Underwater TBA
58: Light grey castle (W8 Castle 1) TBA
59: Sky/Mushrooms (yellow-ish) TBA
60: Beach (turquoise, without moss) TBA
61: Lakithunder and Monty Tank battles TBA
62: Boss battles TBA
63: Mummy-Pokey battle TBA
64: Oasis in Desert TBA
65: Desert TBA
66: Oasis in Desert TBA
67: Bonus room [Unused] TBA
68: Bonus room [Unused] TBA
69: Bonus room [Unused] TBA
70: Bonus room [Unused] TBA
71: Bonus room [Unused] TBA
72: Bonus room [Unused] TBA
73: Underground (gold) [Unused] TBA
74: Bonus room TBA
75: Grassland TBA

Randomization Table

Slot Randomization
Tileset 0 (Jyotyu) No
Tileset 2 (Sub Nohara) No
0: Grassland Tiles 0-5
1: Castle No
2: Desert Tiles 0-5
3: Underground (with ice) Tiles 0-5, 48-53
4: Sky/mushrooms (world 7 style) None
5: Underwater Tiles 0-5
6: Desert Tiles 0-5
7: Volcano (brown) Tiles 0-5
8: Grassland Tiles 0-5
9: Beach (blue) Tiles 0-5
10: Beach (blue) Tiles 0-5
11: Forest Tiles 0-2
12: Grassland Tiles 0-5
13: Sky/mushrooms (with flowers and bushes) Tiles 0-5
14: Sky/mushrooms (with flowers and bushes) Tiles 0-5
15: Volcano (black) Tiles 0-5
16: Volcano (black 2) [Unused] Tiles 0-5
17: Snow (with ice) None
18: Snow Tiles 0-5
19: Forest Tiles 0-2
20: Oasis in Desert Tiles 0-5
21: Bonus Room [Unused] None
22: Volcano (black 2) [Unused] None
23: Ghost House None
24: Cliffs Tiles 0-5
25: Cliffs Tiles 0-5
26: Snow (with ice) None
27: Grassland Tiles 0-5
28: Snow (with ice) None
29: Factory (W7-A) None
30: Sewer (W2-3) None
31: Volcano (yellow) Tiles 0-5
32: Castle None
33: Sky/mushrooms (with flowers and bushes) Tiles 0-5
34: Grassland Tiles 0-5
35: Underground Tiles 0-5, 48-53
36: Underground (dark blue) [Unused] Tiles 0-5, 48-53
37: Dark world (purple) Tiles 0-5
38: Dark world (brown) Tiles 0-5
39: Tower Tiles 0-5
40: Ghost house exit Tiles 0-5
41: Final Castle None
42: Toad house 1 None
43: Toad house 2 None
44: Toad house 3 None
45: Final Castle None
46: Toad house 4 None
47: Bowser Jr battle None
48: Beach (blue) Tiles 0-5
49: Boss battle None
50: Sky/mushrooms (with flowers and bushes) Tiles 0-5
51: Forest Tiles 0-2
52: Desert Tiles 0-5
53: Desert Tiles 0-5
54: Jungle Tiles 0-5
55: Final boss battle None
56: Volcano (black) Tiles 0-5
57: Underwater Tiles 0-5
58: Light grey castle (W8 Castle 1) None
59: Sky/Mushrooms (yellow-ish) None
60: Beach (turquoise, without moss) Tiles 0-5
61: Lakithunder and Monty Tank battles None
62: Boss battles None
63: Mummy-Pokey battle None
64: Oasis in Desert Tiles 0-5
65: Desert None
66: Oasis in Desert Tiles 0-5
67: Bonus room [Unused] None
68: Bonus room [Unused] None
69: Bonus room [Unused] None
70: Bonus room [Unused] None
71: Bonus room [Unused] None
72: Bonus room [Unused] None
73: Underground (gold) [Unused] Tiles 0-5, 48-53
74: Bonus room None
75: Grassland Tiles 0-5
2D Graphics

Jyotyu Tileset

1. Jyotyu Palette

These files are the palettes used by the Jyotyu tileset:
- root/BG_ncl/d_2d_AJ_J_jyotyu_B_ncl.bin
- root/BG_ncl/d_2d_AJ_J_jyotyu_F_ncl.bin
- root/BG_ncl/d_2d_AJ_J_jyotyu_ncl.bin
- root/BG_ncl/d_2d_AJ_J_jyotyu_R_ncl.bin
- root/BG_ncl/d_2d_AJ_J_jyotyu_W_ncl.bin

2. List of graphics that use the Jyotyu Palette

Folder Bitmap Description
/BG_ncg d_2d_A_J_jyotyu Default jyotyu graphics
/BG_ncg d_2d_TEN_A_J_jyotyu Animated blocks, bricks and coins
/obj A_block_hahen Debris animations for destroyed blocks
/obj A_block Animations for blocks being hit
/obj A_tikuwa_block Donut lift
/obj I_item Power Ups
/obj I_kakushitobira Event Activated Door
/obj I_mark_star A star, seems to be unused
/obj I_minigame_block Animations for 1-Up Toad house blocks
/obj I_minigame_item 1-Up Toad house card graphics
/obj I_obj_kemuri Smoke (?) seems to be unused too
/obj I_obj_kira_I Sparks, they seem to be used by Mega Mario, but only with the first jyotyu palette
/obj I_obj_kira Smaller sparks, apparently used when collecting an 1-Up mushroom and after stomping on a blue Koopa
/obj I_obj_sunakemuri Smoke (?) unused as well
/obj I_obj_yajirushi Arrow, apparently unused since it was removed from the European version

3. Important

When you click "import bitmap and recreate pallete" on a file that uses the Jyotyu Pallete, it will recreate the Jyotyu Pallete, with new colours.

Other objects use the Jyotyu Pallete, but they will not match up with the pallete anymore, because it has been modified to match the Jyotyu tileset, so you have to open all the files that use the pallete and the pallete open at the same time, then click "import bitmap and recreate pallete".
Or you can modify the Jyotyu Tileset with the built in editor which will not modify the Jyotyu Pallete.

4. Jyotyu labels

The following picture shows which objects use which colors in the different Jyotyu Palletes:

jyotyulabels2.png

Credits to D.M. for the research and the image

Note: The palette colors will vary depending on the Jyotyu palette, but the objects will still use the same colors.

2D Graphics

World Map Icons

TODO: Finish the rest including the ones in uiStudio & update the description if needed.

Map Folder:

Files
Description / Information
cursor_koopa_jr.nsbca
Bowser Jr's Animation (Joint)
cursor_koopa_jr.nsbmd
Bowser Jr's World Map Textures
cursor_peach.nsbca
Peach's Animation (Joint)
cursor_peach.nsbmd
Peach's World Map Textures
hammer_map.nsbmd
Hammer Bro's Hammer Texture
map_dragon.nsbca
Star Coin Sign's Animation (Joint)
map_dragon.nsbmd
Star Coin Sign's Textures
map_dragon.nsbtp
Star Coin Sign's Animation (Pattern)
map_hole.nsbmd ?
map_point.nsbmd
World Map Node's Textures
map_point.nsbtp
World Map Node's Animation (Pattern)
map_shadow.nsbca ?
map_shadow.nsbmd ?
map_swing.nsbca ?
w1.nsbmd
World 1's Textures (Doesn't have the texture for the elevated ground near the first tower & the green layering in the background)
w1.nsbca
World 1's Animation (Joint)
w1.nsbtp
World 1's Animation (Pattern)
w1_castle.nsbca
World 1 Castle's Animation (Joint)
w1_castle.nsbmd
World 1 Castle's Textures
w1_kinoko_a.nsbmd
Blue Mushroom House's Texture
w1_kinoko_b.nsbmd
Mega Mushroom House's Texture
w1_kinoko_g.nsbmd
1-Up Mushroom House's Texture
w1_kinoko_p.nsbmd
Wood Mushroom House Holder's Texture
w1_kinoko_r.nsbmd
Item Bonus House's Texture
w1_move.nsbca
The animation where Bowser Jr. brings Peach to 1-Tower
w1_tower.nsbca
World 1 Tower's Animation (Joint)
w1_tower.nsbmd
World 1 Tower's Textures
w1_tree.nsbca
World 1 Tree's Animation (Joint)
w1_tree.nsbmd
World 1 Tree's Textures
w2.nsbmd
World 2's Textures
w2.nsbca
World 2's Animation (Joint)
w2.nsbtp
World 2's Animation (Pattern)
w2_castle.nsbmd
World 2 Castle's Textures
w2_kinoko_b.nsbmd
Mega Mushroom House's Texture
w2_kinoko_g.nsbmd
1-Up Mushroom House's Texture
w2_kinoko_p.nsbmd
Wood Mushroom House Holder's Texture
w2_kinoko_r.nsbmd
Item Bonus House's Texture
w2_move.nsbca
The animation where Bowser Jr. brings Peach to 2-Tower
w2_tower.nsbca
World 2 Tower's Animation (Joint)
w2_tower.nsbmd
World 2 Tower's Textures
w2_tree.nsbca
World 2 Tree's Animation (Joint)
w2_tree.nsbmd
World 2 Tree's Textures
2D Graphics

Enemy Palettes

1. Enemy Palettes

2. List of bitmaps which use the enemy palette

 

Folder Bitmap Description
/obj I_bubble256 Podoboo
/obj I_dokan_yajirushi Arrow signs
/obj I_fireball Fire Mario/Fire Brother fireballs
/obj I_kuribo256 Goomba
/obj I_nokonoko256 Koopa Troopa
/obj I_star_red Mario VS Luigi battle stars
/obj I_switch ? Switch, ! Switch, P Switch and Skull Switch
/obj I_ochiruhashi Beach platform
/obj I_teresa256 Boo
/obj W_kinoko Graphics for the Blue/Yellow/Red Toad house blocks and cards

World Map

Information related to modifying the world map.