New Super Mario Bros. Wii
|New Super Mario Bros. Wii|
Developer: Nintendo EAD
This game has unused animations.
This game has a prerelease article
This game has a notes page
This game has a bugs page
New Super Mario Bros. Wii takes the revamped 2D side-scrolling action from the DS title and kicks it up a notch by what many fans would consider a dream come true: simultaneous cooperative multiplayer in the main game. It also marks the return of Yoshi, the Koopalings, and Kamek, and pretty much set the standard for the Mario universe in the years that followed.
- 1 Sub-Pages
- 2 Tournament Mode
- 3 E3 Demo Leftovers
- 4 Unused Hint Movies
- 5 Unused Behaviors
- 6 Unused Darkness Setting
- 7 Unused Camera Settings
- 8 Unused Text
- 9 Unused Audio
- 10 Unused World Map Cutscenes
- 11 Early Level Configuration
- 12 Early Features
- 13 Oddities
- 14 Exception Handler
- 15 Development Text
- 16 Anti-Piracy
| Unused Objects|
New hits and old favorites.
| Unused Level Features|
Things that just don't come into play.
| Unused Graphics|
Quite a lot of graphics ended up getting scrapped.
| Version Differences|
Having Wii in the title when it's on an entirely different platform.
| English Translation Differences|
Sigh. Yep. This again.
From February to March 2010, Nintendo hosted a Coin Battle tournament in Japan (NewスーパーマリオブラザーズWii コインバトル日本一決定戦). This apparently used a special version of the game. There was also a "Coin Battle Championship" in Italy and a "National Coin Challenge" in Australia, but for the latter at least, it seems like the retail version of the game was used.
Interestingly, layout files for some of the special screens used for the tournament still exist, but only in the Korean, Taiwanese, and NVIDIA Shield TV versions, which were built after the tournament. They are "MultiCourseSelect_tournament" and "MultiCourseSelect_tournamentButton". There are also code leftovers in the Korean, Taiwanese, and NVIDIA Shield TV versions. There are strings that reference layout files and actors that aren't in the other versions, "MULTI_COURSE_SELECT_TOURNAMENT" and "MULTI_COURSE_SELECT_TOURNAMENT_BUTTON".
E3 Demo Leftovers
There are a few leftovers from the E3 2009 demo (which was also used at later events that year).
You can play for 10 minutes. After 10 minutes, the session will automatically end.
This was shown on the title screen.
Shown on the level selection screen and the time up screen.
Thank you for playing! You can continue your adventure in the retail version!
Displayed when the session ended.
Displayed in the Free for All results.
Displayed when the session ended, after which the game would reboot. Renders a layout from /Layout/timeUp/timeUp.arc.
You can display this actor in-game by enabling the following Action Replay code (for PAL version 1) and entering any stage:
cc30a6b8 fffffff0 04926010 386002be 047b35f4 989f0259
Earlier Time Up Layout
Present in the Korean version (and all versions thereafter) is a "timeUp_trialPlay" layout, which seems to be an earlier or alternate version of the layout used by the above actor.
Unused Hint Movies
There are a total of 82 hint movies. While 62 of them are used, the rest of them go unused. They mostly contain Super Skills, and are broken due to the level layout being different from when the inputs were recorded.
1-3: Four unused Super Skills 2-2: Four unused Super Skills 2-5: Three unused Super Skills 3-2: One unused Infnite 1-Ups 3-5: Three unused Super Skills 6-Castle: One unused Super Skills 7-Tower: One unused Star Coin & one Super Skill 9-8: Two unused Super Skills
~ Player jumps on Bullet Bills to get 1-Ups ~ Collects the first star coin above the Banzai Bill ~ Breaks the hidden block and jumps onto the roof ~ He goes into the pipe and collects the second star coin ~ Jumps onto the moving platform and kills himself
~ Player starts with a Propeller Suit ~ The player gets hurt two times ~ Shows the secret exit
Star Coins can be moved by Sand Spouts, even before being displaced with a POW Block?
- Spike Tops and Chain Chomps can be bounced off with Yoshi. The former is also unused in New Super Mario Bros. U but the latter doesn't work in that game. Both are used in Super Mario Maker.
- Chain Chomps, Thwomps and Prickly Goombas have hitboxes that are impenetrable by Yoshi's tongue.
- Switches can be pressed by Yoshi, even when the player is not riding Yoshi.
- Dry Bones have the standard behavior for overworld enemies being in water (splashing when entering and moving slowly when in).
- Yoshi detaches from Mario if they enter water.
The game has good support for changing Mario's active layer, letting him stand on foreground or background tiles. This is used to implement the Mini-Mario pipe secrets in 1-3, but it seems Nintendo planned to do more with it:
- Entrances have an unused setting to spawn Mario on any layer.
- The unused sprite EN_REVERSE can switch Mario between layers, too.
- Every sprite can be placed on any layer; this is the only configurable setting in the game that applies to all types of sprites. This feature is only used in 1-3 to move three types of sprites (coin, invisible 1UP, and special exit controller) to the background layer.
Unused Darkness Setting
There is an unused darkness setting which causes triangular light beams to be generated by each player. The beams face the same way as the players and each can be rotated between 0 and 180 degrees by tilting the relevant Wii Remote.
Unused Camera Settings
All settings described here are configurable in level files.
The camera has eight modes, of which 2, 5 and 7 go unused.
Mode 2 causes the camera to only zoom out in multiplayer mode if the players are far apart vertically, instead of in any direction. Even then, it won't zoom out the entire way unless the player who's moving away vertically is flying with a Propeller Suit or Block. Interestingly, this mode has its own unique list of zoom-level options.
Mode 7 is the horizontal equivalent of Mode 2, but without the unique zoom levels.
Mode 5 enables an unused feature that lets the level designer switch the camera to different settings (mode, zoom, bounds, and "ZoomChange") based on activated flag IDs. The configuration for this is actually stored in its own section of the level data, which is empty in all levels in the final game.
Unfortunately, there's no transition when the settings change, making this feature jarring and unusable unless zoom sprites (206) are used to hide the change. It's also buggy: the first set of camera settings in the level data can't be the first one to activate, due to an incorrectly initialized variable, and any changes to the camera bounds are immediately reverted on the next frame.
There are a few unused zoom level options, but most aren't very interesting. One fixes the camera's size at just 7 tiles tall. Another is similar, but also allows the camera to expand in multiplayer mode up to the absolute maximum of 28, which is the size used in the giant bonus area in World 9-3.
Flying-Only Upward Scrolling
One unused camera setting is the direct equivalent of one used in New Super Mario Bros. and New Super Mario Bros. 2. In those games, it prevents the camera from scrolling upward more than a certain, adjustable number of tiles unless Mario is climbing a vine (in the former) or flying as Raccoon Mario (in the latter), and is used for hiding secret areas. Here, it prevents the camera from scrolling upward at all unless Mario is flying using a Propeller Suit or Block. Oddly, instead of adjusting the scroll distance as in the other games, the attached numeric value adjusts the camera's size in multiplayer mode.
This is actually enabled in a few areas, but only ones where the camera can't scroll at all anyway. It might be enabled just due to laziness, since value "0" enables it and "15" is needed to disable it.
The feature was probably scrapped in this game because it looks glitchy and probably wouldn't work well in multiplayer.
- Bounds: Levels can specify how close the players need to be to the top/bottom edges of the screen for the camera to scroll vertically. That's used, but the values can also be different between single-player and multiplayer modes, which isn't.
- "ZoomChange": This unused setting does nothing.
- The camera can be configured to consider any cardinal direction as "forward" through the area, including leftward, which is unused.
First message in the file with obvious purpose. In the Japanese, USA Spanish text, it is the same, the meaning is the same, except there is no "1" on the end.
Seems to be a label for the main mode on the menu.
As you make progress in Story mode, you'll unlock more courses to play in VS mode.
Seems to be text for an early/scrapped multiplayer mode.
Select a Mode
Another piece of unused text for the main menu.
Many, if not all, the sounds that were in New Super Mario Bros. are also present here with their original filenames. They aren't listed below.
Unused track in the game, named cheepfanfare_lr.ry.32.
This fanfare, named down_multi_lr.n.32, uses the same melody as "all players in bubble", but is never heard anywhere, not even in the other multiplayer modes.
BGM_MINIGAME_FANFARE_KOOPA.32 is an empty music file.
The BRSAR has a entry called "STRM_BGM_DEMO_OMAKE" (demo = cutscene, omake = bonus), but there is no BRSTM to go along with it.
Sequence Data for Animations
Similar to the "bahps" in much of the game's level music, all of the world map themes contain sequence data instructing certain actors to animate at a handful of points in the song. World 9 is the only world to have no such actors, making this data unused there.
Sounds 1648 to 1846 seem to be ported straight from NSMB's sounds (with some of them playing improperly). Are they changed at all and are any of them used?
135 - SE_SYS_CTRL_0_CONNECTED_RC
137 - SE_SYS_CTRL_1_CONNECTED_RC
139 - SE_SYS_CTRL_2_CONNECTED_RC
141 - SE_SYS_CTRL_3_CONNECTED_RC
181 - SE_SYS_ONE_DOWN
Inaudible. Used in New Super Mario Bros.
181 - SE_SYS_STOCK_ITEM
Used in New Super Mario Bros.
182 - SE_SYS_STOCK_ITEM_USE
Used in New Super Mario Bros.
306 - SE_PLY_JUMP_CLIFF
307 - SE_PLY_SCALE_CLIFF
332 - SE_PLY_OTHER_OFF
333 - SE_PLY_BREAK_FREE
334 - SE_PLY_BREAK_FREE_PRPL
354 - SE_PLY_PNGN_WATER_SLIDE
359 - SE_OBJ_RADAR_ONPU
"Onpu" means "note". This could be related to the strange note icon seen in the E3 2009 trailer.
360 - SE_OBJ_RADAR_ONPU_1
361 - SE_OBJ_RADAR_ONPU_2
362 - SE_OBJ_RADAR_ONPU_3
363 - SE_OBJ_RADAR_ONPU_4
364 - SE_OBJ_RADAR_ONPU_5
365 - SE_OBJ_RADAR_ONPU_1_1
366 - SE_OBJ_RADAR_ONPU_2_1
367 - SE_OBJ_RADAR_ONPU_3_1
368 - SE_OBJ_RADAR_ONPU_4_1
369 - SE_OBJ_RADAR_ONPU_5_1
370 - SE_OBJ_ONPU
498 - SE_EMY_IGAKURIBO_OPEN
"IGAKURIBO" refers to the Chestnut Goomba.
499 - SE_EMY_IGAKURIBO_OPEN
566 - SE_OBJ_GET_COIN_OLD
A coin sounds similar to the Super Mario Bros. and New Super Mario Bros. coin sound, but cut off earlier and with a slight echo.
681 - SE_OBJ_RC_CANNON_READY
Inaudible. "RC_CANNON" refers to the Wii Remote-controlled cannons in the Green Toad Houses.
686 - SE_OBJ_RC_LIFTLINE_MOVE
Inaudible. Possibly refers to the Wii Remote-controlled on-track lifts, as the sounds for those come right before this one.
691 - SE_OBJ_SUISHA_ROLL
752 - SE_OBJ_FREE_FALL
756 - SE_OBJ_RC_FENCE_ROLL
868 - SE_VOC_MA_THANK_YOU
Inaudible. There is no equivalent for the other players.
1080 - SE_VOC_ITEM_KO_CRY_FAR
Inaudible. "ITEM_KO" refers to the Toads that Mario has to rescue.
1080 - SE_VOC_ITEM_KO_CRY_MID
1080 - SE_VOC_ITEM_KO_CRY_NEAR
1275 - SE_VOC_BOSS_KP_CS_LAUGH
Bowser ("KP") doesn't appear in the World Map ("CS").
1524 - SE_MG_UH_LIFT_START
Inaudible. "MG" refers to Toad Houses and Enemy Battles.
1531 - SE_MG_UH_LIFT_STOP
Inaudible. "MG" refers to Toad Houses and Enemy Battles.
1633 - SE_OBJ_CS_KINOPIO_HERE
1561 - SE_PLY_FOOTNOTE_CS_YOSHI
You can't bring Yoshi onto the World Map.
Unused World Map Cutscenes
16 - smc_demo_cannon
The player sinks downward before blasting to another world.
It seems this would've been triggered when standing on top of a cannon. In the final game, cannons are short 2D stages, not animations on the world map, and the world-map cannon models aren't animated at all.
The following Action Replay code (for PAL version 1) replaces the item menu with this cutscene:
17 - smc_demo_trship_appear
A music note appears above the player's head and glides to a random map node. Then a Treasure Ship appears above it and descends downward, before the camera returns to the player.
19 - smc_demo_dokan_warp
20 - smc_demo_dokan_start
These would be used for traveling to and from sub-maps using warp pipes. In the final game, only world 3 has a sub-map (and it doesn't use a pipe), but map filenames suggest that more worlds had this feature planned.
The code that uses these cutscenes still exists. By editing RouteInfo.arc to create sub-map warp points that have the "dokan" ("pipe") flag active, it can be seen that this feature is actually fully implemented, and works perfectly.
23 - smc_demo_W_Flying_in
An unused cutscene for entering a world for the first time, in which the airship flies in and stops to drop the player off on the start node before continuing to the tower as normal. The player's voice sound effect is very delayed for some reason.
The function that chooses the world map load-in cutscene can select this one when entering a new world with the airship present, if the player's movement type is 2 (meaning "airship"). When the airship flies away after beating it in the previous world, it actually does write 2 to that field despite the player not being on board anymore, but the player actor overwrites it with 1 ("walking") when he starts chasing after it. This seems to suggest that in an earlier design, the player would ride the airship into the next world after completing its stage, instead of getting kicked out and running after it.
It also means that if the cutscene for completing an airship stage is modified to skip the player getting kicked out of the airship, he'll actually ride it into the next world and demonstrate the unused cutscene. The following Action Replay code (for PAL version 1) does that:
042F4730 00000000 042F4734 00000000 042F4750 00000000 042F4754 00000000
29 - smc_demo_fade_test
Fades the screen out and back in, twice.
The following Action Replay code (for PAL version 1) replaces the item menu with this cutscene:
32 - smc_demo_kinoko_out
Hides a Toad house if the player just completed one.
The default cutscene for completing a course, smc_demo_default_clr, incorporates that functionality directly, making this one redundant.
35 - smc_demo_start_kinoko_in
Does nothing at all.
44 - smc_demo_KinopioStart
Shows or hides a Toad-rescue indicator bubble.
This may have been intended to be used when switching between single-player and multiplayer mode. In the final game, though, that's not done with a cutscene at all.
Early Level Configuration
Present in the World Map folder on the disc is an unused configuration file for the "Collected Star Coins" screen (CollectionCoinCourseSort.arc), which indicates an early level layout. The full contents can be seen on the Notes page, but among the more notable differences:
- The game as a whole was generally more linear, given some levels were placed between what ended up being branches in the final game.
- World 1 didn't have 1-6, and had a secret airship.
- World 2 had a Ghost House after the tower, lacked 2-6, and had a secret airship.
- World 3 had two Ghost Houses, the first being between 3-1 and 3-2, and the second between the tower and 3-4. It also had an airship that wasn't secret.
- World 4's tower was not until between 4-5 and 4-6, had 4-7, and had no Ghost House.
- World 5 had 5-7, followed immediately by a tower, the castle, and an airship.
- World 6 had a ghost house between 6-Tower and 6-4, had 6-7, and the airship would not have been a secret.
- World 7's tower was located between 7-4 and 7-5, had 7-7, and didn't have a Ghost House. World 7-6 and 7-7 were also not going to be secret levels.
- World 8 had a secret second Tower. Its placement in the list after the castle suggests a very different final castle was planned. The used first tower was between 8-4 and 8-5, 8-7 would not have been a secret level.
- World 9 did not exist.
In pre-release screenshots, we see that the game originally had a Red and a Blue Yoshi. They were changed to Pink and Light Blue in the final version. The filenames for the Yoshi models, though, still follow the old coloring: Y_tex_red.arc, Y_tex_blue.arc.
The game was originally going to have Mega Mario, but it seems to have been canned very early on - EN_ITEM (the actor which manages the various powerup items) has an empty value which loads a mushroom model from I_big_kinoko.arc, but it crashes the game when used, and it does not have any other code which uses the value. There is no way to enable it without ASM hacking.
The file I_big_kinoko.arc does not exist, and it is not referenced by the game otherwise. Also, as other evidence of Mega Mario having been planned, the "flying pipe" objects were ported over from New Super Mario Bros. but are not used in the final game.
The pipe joint texture used in the World 6 Map and the World 6 Map icon depicts an earlier pipe joint. It can also be seen in the E3 2009 demo version.
World 7 Cliff
The cliff model used in the World 7 Map depicts an earlier athletic tileset design.
Most of the brick blocks in the credits scene have contents chosen randomly at runtime (between "empty," "one coin" and "15 coins," weighted unequally). However, two names are overridden to always have the same contents. Executive producer Satoru Iwata's name is spelled out using 15-coin bricks. More unexpectedly, though, coordinator Rina Yamauchi's bricks are always empty. Since most of the random bricks are selected to be empty anyway, it's unlikely that anyone would ever notice this without hacking.
Useless Zone Themes
Each zone in the game can have a "theme", which changes how things are rendered, adds effects and so on. But some levels are set to themes that are identical to the default overworld theme, rendering them useless. The following "useless" themes are used:
- 8 - Sky/Bonus
- 17 - Icy Cave
- 21 - World 8 Airship
Empty openingTitle Folder
The directory /Layout/openingTitle, which corresponds to the title screen's layout, is empty. The archive containing the layout and its assets is actually located in the folder dedicated to resources exclusive to the disc's region instead, so someone moved the openingTitle data without deleting the folder in which it was originally located.
Alternate Level Slots
The world map supports and reserves level IDs for two warp cannons, towers, castles, and airships per world, even though there is only up to one of each in a single world.
World 3 is split up into two maps: W3a and W3b. Interestingly enough, though, the files for Worlds 2 and 6 are named as if they were also split up (W2a and W6a). This suggests they were originally meant to have multiple segments. As a consequence, the game will attempt to load route information from W2b and W6b, but it fails and moves onto loading the next world's data instead.
In addition, the game will attempt to load info about W3c and WAa (and also fail), but this is simply due to how the game loops through the worlds, not an indication of there being more maps. If there's not a single map for the next world, it will try to load subworld a, and if the current world is a subworld, it will try loading the next subworld. It stops loading data if the next world doesn't exist, which is why it stops at World A (which comes after 9 in hexadecimal).
The exception handler is still in the game's code, but can't be seen normally without hacking or causing an exceptionally heinous glitch. When it does crash, press HOME, -, +, -, +, 1, 2, 1, 2, A on Player 1's Wii remote. The player will then see the processor state at the time of the crash, as well as some trace info. You can see it in action, for example, via the "Yoshi Berry Crash".
Title Screen Date
The title screen layout contains a pane called T_E3verCheck, which is deliberately disabled by the game's code. When viewed, it displays the date of Apr 13 2009 19:01:59, which is presumably when the layout was created. This date does not change in any release, even as the title screen layout kept getting updated.
You can see it in-game with the following PAL version 1 Action Replay code:
cc30a6b8 fffffff0 04781ca8 38a00000
Internal Project Name
The project's internal name is "wiimj2d" or just "mj2d" (mario journey/jump 2d?), according to multiple filenames.
Build Date and Number
Four empty files exist in the main folder with filenames listing build dates and some kind of build number.
|Japan Revision 1||USA Revision 1||Europe Revision 1|
COPYDATE_CODE_2009-10-03_231655 COPYDATE_DATA_2009-10-03_231209 COPYDATE_LAST_2009-10-03_231655 REV_INFO_r37675
COPYDATE_CODE_2009-10-03_232303 COPYDATE_DATA_2009-10-03_231822 COPYDATE_LAST_2009-10-03_232303 REV_INFO_r37675
COPYDATE_CODE_2009-10-03_232911 COPYDATE_DATA_2009-10-03_232433 COPYDATE_LAST_2009-10-03_232911 REV_INFO_r37675
|USA Revision 2||Europe Revision 2||Japan Revision 2|
COPYDATE_CODE_2010-01-05_143554 COPYDATE_DATA_2010-01-05_141949 COPYDATE_LAST_2010-01-05_143554 REV_INFO_r37821
COPYDATE_CODE_2010-01-05_152101 COPYDATE_DATA_2010-01-05_150453 COPYDATE_LAST_2010-01-05_152101 REV_INFO_r37821
COPYDATE_CODE_2010-01-05_160530 COPYDATE_DATA_2010-01-05_154947 COPYDATE_LAST_2010-01-05_160530 REV_INFO_r37821
|Korea||Hong Kong/Taiwan||China (NVIDIA Shield TV)|
COPYDATE_CODE_2010-03-12_153510 COPYDATE_DATA_2010-03-12_153506 COPYDATE_LAST_2010-03-12_153510 REV_INFO_r38018
COPYDATE_CODE_2010-03-15_160349 COPYDATE_DATA_2010-03-15_160345 COPYDATE_LAST_2010-03-15_160349 REV_INFO_r38019
COPYDATE_CODE_2016-05-03_111248 COPYDATE_LAST_2016-05-03_111248 COPYDATE_DATA_2016-05-03_111228
A file called WIIMJ2DNP.str is present in the root folder and lists the locations of some partially-linked code. "hayakawa" is likely Kenzo Hayakawa, listed under "System Programming" in the game's credits.
|Japan Revision 1||USA Revision 1|
d:\home\Project\WIIMJ2D\JP\PRD\RVL\bin\d_profileNP.plf d:\home\Project\WIIMJ2D\JP\PRD\RVL\bin\d_basesNP.plf d:\home\Project\WIIMJ2D\JP\PRD\RVL\bin\d_enemiesNP.plf d:\home\Project\WIIMJ2D\JP\PRD\RVL\bin\d_en_bossNP.plf
d:\home\Project\WIIMJ2D\US\PRD\RVL\bin\d_profileNP.plf d:\home\Project\WIIMJ2D\US\PRD\RVL\bin\d_basesNP.plf d:\home\Project\WIIMJ2D\US\PRD\RVL\bin\d_enemiesNP.plf d:\home\Project\WIIMJ2D\US\PRD\RVL\bin\d_en_bossNP.plf
|Europe Revision 1||Japan Revision 2|
d:\home\Project\WIIMJ2D\EU\PRD\RVL\bin\d_profileNP.plf d:\home\Project\WIIMJ2D\EU\PRD\RVL\bin\d_basesNP.plf d:\home\Project\WIIMJ2D\EU\PRD\RVL\bin\d_enemiesNP.plf d:\home\Project\WIIMJ2D\EU\PRD\RVL\bin\d_en_bossNP.plf
D:\home\hayakawa\PROJECT\wii-mj2d_ver2\JP\PRD\RVL\bin\d_profileNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\JP\PRD\RVL\bin\d_basesNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\JP\PRD\RVL\bin\d_enemiesNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\JP\PRD\RVL\bin\d_en_bossNP.plf
|USA Revision 2||Europe Revision 2|
D:\home\hayakawa\PROJECT\wii-mj2d_ver2\US\PRD\RVL\bin\d_profileNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\US\PRD\RVL\bin\d_basesNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\US\PRD\RVL\bin\d_enemiesNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\US\PRD\RVL\bin\d_en_bossNP.plf
D:\home\hayakawa\PROJECT\wii-mj2d_ver2\EU\PRD\RVL\bin\d_profileNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\EU\PRD\RVL\bin\d_basesNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\EU\PRD\RVL\bin\d_enemiesNP.plf D:\home\hayakawa\PROJECT\wii-mj2d_ver2\EU\PRD\RVL\bin\d_en_bossNP.plf
d:\Project\wii-mj2d\KR\PRD\RVL\bin\d_profileNP.plf d:\Project\wii-mj2d\KR\PRD\RVL\bin\d_basesNP.plf d:\Project\wii-mj2d\KR\PRD\RVL\bin\d_enemiesNP.plf d:\Project\wii-mj2d\KR\PRD\RVL\bin\d_en_bossNP.plf
d:\Project\wii-mj2d\TW\PRD\RVL\bin\d_profileNP.plf d:\Project\wii-mj2d\TW\PRD\RVL\bin\d_basesNP.plf d:\Project\wii-mj2d\TW\PRD\RVL\bin\d_enemiesNP.plf d:\Project\wii-mj2d\TW\PRD\RVL\bin\d_en_bossNP.plf
|China (NVIDIA Shield TV)|
d:\Project\wii-mj2d\CN\PRD\RVL\bin\d_profileNP.plf d:\Project\wii-mj2d\CN\PRD\RVL\bin\d_basesNP.plf d:\Project\wii-mj2d\CN\PRD\RVL\bin\d_enemiesNP.plf d:\Project\wii-mj2d\CN\PRD\RVL\bin\d_en_bossNP.plf
Wii Physical Releases
Every Wii disc contains 0xBC bytes of burst cutting area (BCA) data, the majority of which is part of the standard disc authentication system, but the last 0x40 bytes are exposed to games via DVDLowReadDiskBca. Although most games do nothing with this data, New Super Mario Bros. Wii uses it to perform an anti-piracy check. Nintendo implementing this check was unprecedented at the time.
On startup, the game calls a function to check the BCA. If it fails, the game waits a random amount of time between 3 and 10 minutes, then halts and presents an error message. Otherwise, it checks that the BCA area starts with 0x33 zero bytes and one 1 byte. (The remaining 0x0c bytes seem to contain manufacturing information that varies with each disc.)
Most other Wii games have 0x34 zero bytes in this region. The different values can actually be seen with a microscope; see the images, which compare New Super Mario Bros. Wii (red) and Wii Sports (blue).
The BCA not matching has no significant consequences; it records a value of 0x0123456A in /shared2/test2/dvderror.dat, which could possibly be seen at Nintendo's factory, but the game launches normally. The check is not performed any other time during gameplay. The comparison is also not performed if the console's model starts with
RVT (as is the case for devkits), though it still attempts to read the BCA in this case. After the comparison is performed, the buffer is cleared for some reason; this does not happen if an error occurred.
This check caused issues for pirates because most modchips did not implement the read BCA command properly, resulting in a drive error that caused the check to fail. Furthermore, burned discs did not have a BCA on them. However, the check was fairly quickly patched out of the game.
NVIDIA Shield TV
The NVIDIA Shield TV release of the game includes a change to ensure that the game only functions properly on the "Lingcod" emulator it's intended to run on.
Part of the function for generating camera matrices has been replaced with a call to
lingcod_callNVSISnippet(), which the emulator reimplements in native code. The deleted code isn't important for performance, but if the hook fails, level graphics don't render.
Graphics for cutscenes, menus, and world maps are unaffected.
A patch to undo this and restore the level graphics can be found here.