PN:New Super Mario Bros.

From Hiccup
Jump to navigationJump to search
Hmmm...
To do:
So
I just found an unused trigger in NSMBDS to get to the debug menu
In retail, pressing Start and Select on the world map takes you to the titlescreen
...for whatever reason
But if you were to nuke that,
there's a second check that makes it take you to the unused debug scene
Cheeky monkies
pretty bad coding
So apparently
NSMBDS has a param for each sprite
which offsets its x and y position by a bit by default
So
All the sprites that just appear as an effect and cover the entire level
are offset by 8 pixels for no discernible reason
today on "why the fuck, Nintendo"
In NSMBDS, the World Map is drawn by Player WorldMap actor
why the fuck does the world map even load time left at one point
xD
I found a unused round counter in MvsL
Mario:
1st is obj36
2nd is obj39 (unused)
3rd is obj37
4th is obj40 (unused)
5th is obj38
Luigi:
1st is obj43
2nd is obj46 (unused)
3rd is obj44
4th is obj47 (unused)
5th is obj45
https://cdn.discordapp.com/attachments/368564003930374149/550307142968541189/unknown.png
There are 5 round win slots, looks like Nintendo gave up on the 5 round mode and just changed the order of the objects leaving the original ones there
there are also some unused objects offscreen
  • https://nsmbhd.net/thread/3155-unknown-things-in-nsmb/
  • not all removed-in-eur files are documented: WIP:New_Super_Mario_Bros.#Removed_Files (note: replacing one of the credits level images with demo\staffroll_new.enpg to see what it looks like doesn't work)
  • jp multicart demo
  • european version adds these files:
    • enemy\m6_sign.nsbmd
    • enemy\m3_sign.nsbmd
    • enemy\m_cannon.nsbtp
    • enemy\m_cannon.nsbmd
  • There may be more oddities to find in the level headers - they aren't fully documented/implimented into NSMBe yet.
  • 3-B A2 has underground tileset set even though its not underground themed
  • "If Luigi is hit [by Mario] in singleplayer he wont do the "hurt" animation and will instantly get up like in NSMBWii" "And if I hit a block where Luigi is standing he won't be kicked out of it" (source: Shane and TheGameratorT)
  • unused instruments
  • explore SDAT data in unpacked SDK format to find all possible unused stuff/oddities
  • possible odd sfx name: in sar 38: "SE_OBJ_HIT_KOURA" -hitting boss with blue shell sfx
  • there might be more unused stuff in copy of nsmb sfx found in nsmbw (+later games?) than in nsmb itsel
  • small mario jumping and big mario jumping use different sequence table statements, but both of them point to the same sequence. this is a leftover from 2005 builds of the game, where the SMB jump sfx were used (different sfx for small and big mario).
  • there's unused singleplayer code for the mvsl pipe respawn https://cdn.discordapp.com/attachments/678668915005587460/687767235900866670/GetRespawnEntranceForPlayer.html (src: TheGameratorT)
  • there's an unused version of mario win/luigi win text (src: TheGameratorT)
  • "big text" actor seems to have unused options, possibly for "mario start"/"luigi start", but they don't seem to work (but they might do) (src: TheGameratorT)
  • screen fading bug? https://media.discordapp.net/attachments/590628817312153610/682331310928166989/unknown.png
  • unused samples
  • red ring has unused multiplayer code (source: TheGameratorT)
  • There is pictochat text in VRAM during minigames (but not on minigame menu) - check that this isn't an undocumented feature in NSMB or SM64DS and check if the graphics also exist in SM64DS
  • the unused number font does have a pallete: UI_O_1P_game_in_o_ud_ncl.bin (in-level bottom screen OAM pallete)
  • unused code for multiplayer progress bar https://cdn.discordapp.com/attachments/687046234179108940/687770425765396490/DrawBottomScreenProgressPathIcons_2P.html (source: TheGameratorT)
  • the player animation used on the title screen is the early one from e3 2005 etc (source: TheGameratorT)
  • there may be unused start entrance/midway entrance settings
  • there may be unused progress paths
  • there may be in-only entrances with bottom screen flag set
  • there may be entrance types that you cannot go into, with "out-only" flag set
  • various sprites have unused 2p code using GetPlayerCount or MvsLMode (source: TheGameratorT)
  • unused in-level player animation state (id 1) - early walk anim using anim 2 "walk" in pl_mario_LZ.bin nsbca, possibly same nsbca anim as title screen. The final's walk animation is called "run" and the final's run animations are called "b_dash" and "b_dash2" (source: TheGameratorT, Hiccup)
  • the door code checks if the game is in mario vs luigi, and if it isn't it doesn't display the door model and play and wait for its animation (source: TheGameratorT)
  • there is water at the bottom of every level - oddity/unused or just how the game works?
  • bug with screen looping and connected pipes may be the reason why the mvsl pipe stage doesn't use screen looping https://www.youtube.com/watch?v=eT-KirX3E4U
  • RNG oddities https://roadrunnerwmc.github.io/blog/2020/05/08/nsmb-rng.html https://roadrunnerwmc.github.io/blog/2020/08/22/1up-house-part-1.html
  • The final castle particle controllers are never disabled and therefore appear in every single world (but offscreen in all worlds other than World 8). (source: Overblade)
  • player_cursor.nsbmd is used by the game but can't be seen (source: Overblade)
  • unused shape screen transitions: https://cdn.discordapp.com/attachments/751163521600979022/763152066482012220/unknown.png
  • colourful blocks in World 7-A tileset are very similar to the blocks used in E3 2005 screenshot/demo castle tileset
  • Mega Goomba has unused behaviour for being touched by Invincible Mario - and interestingly plays SE_EMY_DOWN_BY_PUNCH on moment of contact. The function for this appears to be MegaGoomba__virt44 (ov14:021CFB74)
  • are there two variations of haunted lift behaviour in 5-Ghost House? what determines which is used?
  • i found more sound usage oddities in snd spreadsheet
  • you can't see the cieling of the final boss room in-game, but it is tiled
  • if you complete final castle by means other than defeating the final boss (e.g. flagpole) the screen wipe is slower - unused code or just a side effect?
  • compare credits images with final. it seems like a p switch in a Spike Bass level is misplaced in one screenshot (issue in Nintendo emulator?)
  • What is the meaning behind the sound set names?
  • The folllowing sound sets (i.e. sound groups for use in levels) are unused. Note that the IDs these sound sets point to may have been reallocated since the groups were made.
    • A (GROUP_N10) - duplicate of 17 (GROUP_M13), the most common sound set
    • F (GROUP_N20_02) - "
    • 13 (GROUP_Z03_04) - group 17 sounds, plus the Petey Piranha sounds (SAR_BOSS_PAKKUN and BANK_BOSS_PAKKUN_SE)
    • 14 (GROUP_N20_01) - group 17 sounds, plus the Squiggler sounds
    • 15 (GROUP_T01_02) - group 17 sounds, plus Mummipokey sounds. The sound set used for the Mummipokey room is 19 (GROUP_N32_03), which contains more sounds, most notably the general boss and general Bowser Jr. sounds, which are used by Mummipokey and boss contoller actor, respectively.
    • 1C (GROUP_M25_01) - group 17 sounds, plus Tornado sounds.
    • 1E (GROUP_N31) - group 17 sounds, plus Mega Goomba and the castle/lava enemy sounds. The sound set used for the Mega Goomba room is E (GROUP_P23_03), which doesn't have the castle/lava enemy sounds and has the general boss sounds and general Bowser Jr. sounds, which are used by Mega Goomba and boss controller actors, respectively. In the final game, there is no need for the boss and main level sounds to be loaded at the same time, as bosses are always in a seperate area to the main level. However, there may not have been the case in earlier versions of the game. There is evidence that different sections of a level were all in one area at one point, or at least that seperate areas were used less extensively.
  • Sound set 2D (GROUP_M33_01) is a duplicate of sound set 27 (GROUP_Q02_01). They both contain the group 17 sounds, the lava/castle sounds and fence sounds. Although as both are used sparingly it could be the case, that despite the numbering, 2D was created first.
  • Sound sets 23 and 26 (GROUP_N35_01) are duplicates of sound set 9 (GROUP_N04). They all contain the group 17 sounds and the lava/castle sounds.
  • Some models appear resized before being displayed in-game
  • Boos use 2D graphics like most other enemies, but they use the 3D engine to display them, for some reason?
  • /obj/A_hyoiju_8bit_ncg.bin is unused
  • ice tileset has decorative "terrain middle" tileset objects, and these are used in some levels at least, but the map16 graphics they point too seem to be the same as the normal "terrain middle" graphics
  • Overblade's findings:
    • Unused active block states
      • Turn to nothing
      • Turn to coin
      • Dashed air tile
      • Poof
      • AreaController
      • Unused (or hard-to-trigger) explodable block hit code that uses whomp slam sound
    • Unused multi coin block timer value
    • Lightning powerup leftovers
    • Maybe leftovers for another scrapped powerup
    • unused vertical scaling code in the Moneybag actor:
/*
Notes:
> there is a unused state which checks if the player
  is in range then it changes state and updates the animation.
> there is a partially unused feature in the onStomp function,
  which changes the MoneyBag y scale when you stomp on it.
  ( partially because the part of the code actually runs,
  but you need to set some members to make the enemy to scale )
*/

struct MoneyBag : StageEntity3DAnm
{
  PTMF executeFunction;
  u16 moneyBagState;
  // 0 = escaping player, 1 = idle
  u16 droppingCoinFrame;
  // from groundpound hit
  u16 invincibilityTimer;
  // for every hit
  u16 stompHitCount;
  u16 stompScalingTimer0;
  // increases by 1 every every frame and it wraps around
  // when it reaches 4,
  // used to run the whole y scaling code
  u16 stompYSizeElement;
  // used to change the y size to an array with this value
  // as array element,
  // used for the y scaling
  u16 stompState;
  // 0 = no stomp / after stomp 1 = during stomp,
  // only used for the y scaling
  u16 stompScalingTimer1;
  // another timer used in the scaling section of the
  // onStomp function, used to set the stompState
  // and the stompYSizeElement at the right moment
  u16 fireballHitCount;
  u16 fireballInvincibilityTimer;
  u8 groundCollisionState;
  // 0 = no collision, 1 = first collision frame, 2 = collision.
  u8 stateStep;
  u8 unused4d7[2];
};