Assuming the character is facing right.
Left, Right, Down, RunButton, JumpButton

Command: Right
Move forward until an object stands in the way.
This is not restricted by whether or not he is standing on an object.
Command: Right + RunButton
Like walking except faster.
Command: JumpButton
Moves up vertically until the peak of the jump is reached then comes down.
If an object gets in the way, the jump will be cut short somewhat. However
he still manages to give some objects a little nudge. Any enemies sitting
on such a block will be knocked upside down.
Walking and running can be performed while jumping. It is in this way that
an arched jump is achieved. Mario can move left and right while jumping to
an extent.

Command: Down
Super Mario changes size to that of Little Mario, but he cannot walk in this
state.
Given acceleration, he can slide while ducking. I am uncertain of the
extent to which he can jump while ducking.
As Super Mario, he can destroy certain blocks that get in his way as he goes up. Otherwise, like little mario he may be able to nudge them.

Command: RunButton
Not content with being large, upon becoming Fire Mario he can throw bouncing fire balls against his enemies. Some enemies will be destroyed, some will not. There may be some limitation on how many fireballs he can throw.
The graphics are perhaps dependant on the hardware system. The NES/Famicom has sufficient capability for animating Mario. Issues of frame-rate and sprite-size are peripheral. Shigeru Miyamoto presses this point in an interview that I must reference sometime.
Nothing on this page so far has any relation to the graphics issues I have just introduced. If you are making a movie or a cartoon, then these things become the signifigant process. Well, and the voice actors and music have a large role too. Who is to say whats more important.
Hironobu Sakaguchi is said to seek a merging of the two disciplines. Final Fantasy X introduced voice actors. Mario also introduced voice acting with Super Mario 64. Pondering carefully on this, Mario had voice before Final Fantasy.
Rather than to suggest that either idea is superior or contradictory, I suppose it is something to ponder on.
So I read somewhere that Super Mario was developed using grey boxes. The sprites came later. Mario was suitable as a good character design.
Well, I shall now say, in the field of software engineering there is the SDLC(Software Development Life Cycle) which tries to complete one stage, before moving on to the next one. Adaptions of this recognise that this is not possible. And so, gameplay followed by graphics is not suggested here. Rather, they will feedback into each other.
Did Mario's graphics which came about from technical issues not influence the world of Super Mario? Eg. the pipes around the place.
In some interview, Miyamoto speaks of gameplay experimentation coming first in game development. This suggests to me that one should seek fun ideas. Not by copying, but somehow.
I think Miyamoto has proven that fun ideas do infact exist. Not like treasure to be uncovered, rather we already know what fun is. But how to take advantage of the technology to make the most fun.
In this age it is hard not to be entranced by computers. They are the essential component of video games.
Returning to Software Engineering, allocation of resources is very important and there is no room to create virtual reality just for a game. Who needs it?
Looking in an old pre-video games dictionary "Level" in our context is defined as either the quality of being horizontal, or a horizontal line/plane. Computer graphics have traditionally assumed a rightwards positive x axis. I think this would be the signifigant reason that Super Mario happens to head to the right. As far as not being able to go backwards.. probably a technical limitation. Note that this changed in SMB3. Note further that SMB2 is irrelevant as it is just a mario license applied to doki doki panic.

To use mathematical speak, walking involves a translation along the x axis.
There is some acceleration involved.
Some psuedocode:
onRightButton
{
if (dir == LEFT) AND (acceleration < 0) frame = braking;
dir = RIGHT;
if (acceleration < 5) acceleration++;
if (collision() == FALSE)
x = x + (acceleration * walk_speed);
}
onLeftButton
{
if (dir == RIGHT) AND (acceleration > 0) frame = braking;
dir = LEFT;
if (acceleration > -5) acceleration--;
if (collision() == FALSE)
x = x + (acceleration * walk_speed);
}
onNoButton
{
if (acceleration < 0)
acceleration++;
if (acceleration > 0)
acceleration--;
}

Running is similar to walking. One difference is that you can pass over a 1 block hole without falling in while running.
Running is in theory like walking except with an increased walk_speed.
So that run_speed * max_acceleration (run_speed * 5) is larger than the size of
a block.
Looking at the above sprites, it is clear that SMB used 16x16 blocks.
A run_speed of 4 multiplied by an acceleration of 5 gives us 20.
Sufficient to clear a single block.
Under this system I would imagine walk_speed to be 2.
Time |
X |
Event |
| 0 | 10 | None |
| 1 | 12 | RightButton |
| 2 | 16 | RightButton |
| 3 | 22 | RightButton |
| 4 | 30 | RightButton |
| 5 | 40 | RightButton |
| 6 | 50 | RightButton |
| 7 | 60 | RightButton |
| 8 | 80 | RightButton + RunButton |
| 9 | 100 | RightButton + RunButton |
| 10 | 120 | RightButton + RunButton |
| 11 | 140 | RightButton + RunButton |
| 12 | 148 | LeftButton |
| 13 | 154 | LeftButton |
| 14 | 158 | LeftButton |
| 15 | 160 | LeftButton |
| 16 | 160 | LeftButton |