This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

Super Mario and a super mushroom simultaneously on screen

Super Mario and a super mushroom simultaneously on screen
by on (#55561)
In "Super Mario Bros." it's not spectacular to get small Mario and a fire flower on screen simultaneously: Just let a fire flower appear as Super Mario and then get hit by an opponent.
Now I've got two questions about Super Mario and a super mushroom:

1. Is it possible during normal gameplay to get a super mushroom on screen while you're Super Mario?

2. Even if it's not possible during normal gameplay, what would happen, according to the game code, if Super Mario touched a super mushroom? Does that turn him into Fire Mario or does he stay as he is?

by on (#55563)
Ever heard of the small-firey bug?

by on (#55564)
The game was designed so that it is impossible to have two powerups on the same screen at a time, whether a flower and a mushroom, two flowers, etc. They are spaced apart and there is always a wall the mushroom would bump into or a pit to fall into. There is no way to bump the mushroom over a wall and follow it to the next powerup, there is always a pit or something before you get to it.

To test this you would have to edit the ROM to place several close together. I believe I have played or seen a ROM hack before that did this, and the result was that the second powerup overwrites the first, making it disappear immediately. To my knowledge there is only one set of variables for a powerup.

Since only one powerup can be on the screen at a time, Mario will never be able to pick up a mushroom and then pick up another, since the next time he hits a block it will automatically be a fire flower. You would have to hard code the game to release a mushroom instead of a fire flower in order to see what happens.

Here is an interesting site with lots of bizarre Mario glitches and tricks: http://tasvideos.org/SuperMarioBrosTricks.html

Somewhat relevant:
Quote:
Internal to the game, Mario’s powerup state is recorded in two independent variables; one describes size (0=regular; 1=super) and the other tracks the ‘upgrade state’ (0=need mushroom; 1=need flower; 2=has flower). The ‘size’ decides the sprite (small on 0; big on 1) used for Mario; the ‘upgrade state’ decides what powerup will come out of a block (mushroom on 0; flower on 1 or 2) and what will happen when Mario is hit (die on 0; switch ‘size' and clear ‘upgrade state’ on 1).

These states can be knocked out of synchronization. The game checks for all sprite collisions, knocks the ‘upgrade state’ to 0 if it hits, and switches size only when all checks are done. If Mario’s sprite strikes the King Koopa sprite and the bridge release sprite in one frame, the game will register the collision between Mario and Koopa, knock the ‘upgrade state’ to 0, register the collision between Mario and the bridge release, and jump into the level complete loop that causes Mario to walk to the right ― and never switches the ‘size’ variable.

If Mario was naturally large (state 1 or 2, size 1) when he hit the switch he will stay large (state 0, size 1). If he strikes an enemy he will die (because his ‘upgrade state’ is 0), but he can break blocks. If he gets a mushroom, he will shrink and be unable to hit blocks; if he is hit now, he will grow again. If he gets a fire flower, his palette will be changed and he will be able to shoot (but the game will use the large image for shooting; it will, however, keep Mario’s small feet if Mario is moving). Mario will now be Little Fiery Mario.

If Mario was naturally small (state 0, size 0) when he hit the switch, he will appear to die but the level will still be beat and he will not lose a life. If Mario was unnaturally small (state 1 or 2, size 0) when he hit the switch (that is, if he does this trick twice), he will revert to his normal form. When Mario dies his size is set small and his state is set unupgraded, no matter how he died or what his state was before.

Using the third part only of a 3-code Game Genie code for “Always Stay Big” will produce similar results (the code is SZLIVO). As long as Mario has gained a power-up, he will become small when hit, then grow when hit a second time. This is a much simpler way to view the “Little Fiery Mario” quirk.

This glitch appears to have been fixed in the Super Mario All-Stars version, though the two-variable mechanism behind it still exists.

by on (#55565)
PlayerSize = $0754
PlayerStatus = $0756

PlayerSize:
00 = big mario
01 = Small Mario
anything else: Small mario with glitchy background collisions

PlayerStatus:
00 = dies in 1 hit, mushrooms as item that appear.
01 = changes size when hit and PlayerStatus becomes 00, fire flowers appear.
02 or higher = Firey!

If you poke the normal Big values into PlayerSize and PlayerStatus (00, 01), then grab a mushroom that's already on the screen, you become firey.

by on (#55567)
The game probably checks PlayerStatus when a box is hit to know whether a mushroom or a flower must show up. Then, both the mushroom and the flower probably just increment PlayerStatus when Mario picks them up. So yeah, picking up a mushroom while Super Mario will turn him into Fire Mario.

by on (#55568)
Dwedit wrote:
Ever heard of the small-firey bug?

Yes, but this bug is not what I'm referring to.

UncleSporky wrote:
The game was designed so that it is impossible to have two powerups on the same screen at a time, whether a flower and a mushroom, two flowers, etc.

I know. That's the problem.

UncleSporky wrote:
Since only one powerup can be on the screen at a time, Mario will never be able to pick up a mushroom and then pick up another, since the next time he hits a block it will automatically be a fire flower. You would have to hard code the game to release a mushroom instead of a fire flower in order to see what happens.

Isn't it possible with some kind of Game Genie code to make Mario instantly big?

Dwedit wrote:
If you poke the normal Big values into PlayerSize and PlayerStatus (00, 01), then grab a mushroom that's already on the screen, you become firey.

How do I do this during gameplay?

by on (#55569)
JohnJohn wrote:
How do I do this during gameplay?

Open the game in FCEUXD. Hit the mushroom box and once the mushroom is out and moving pause the game. Open the hex editor (Tools -> Hex Editor), scroll down until you see memory locations $0754 and $0756. Change $0754 to $00 (click the old value and type the new value) to make Mario big and $0756 to $01 to make him Super. Unpause the game and pick up the mushroom.

by on (#55570)
I have Mario becoming small eating the mushroom when doing that.

by on (#55571)
Bregalad wrote:
I have Mario becoming small eating the mushroom when doing that.

Well, I just tried and he became Fire Mario. You are probably doing something wrong.