14 users online:  Ahrion, Angelito,  Anorakun, autisticsceptile1993, Dolphinity, extyman, Foxy_9000_, GangsterJerby, JUMPY_NEB, Panther-T, Pink Gold Peach, RZRider,  shovda, SourlessCream - Guests: 115 - Bots: 198
Users: 62,818 (2,617 active)
Latest user: Gramos

Lock mario in place with L or R by ageVerrly

File Name: Lock mario in place with L or R
Submitted: by ageVerrly
Authors: ageVerrly
Type: Level
Includes GFX: No
Includes Hijack: No
Featured: No
Description: I was asked for this very simple level ASM multiple times so I think it is a good idea to upload it.

All this does is set mario's position next frame to his position this frame if L is pressed. That means momentum is stored and can be gained even when locked. You can gain p-speed that way and change your direction midair.

You can die if you lock mario during an autoscroll as the screen will go past him.

Works in vertical levels as well.
The code almost works properly now, but there's one issue; $88 is set on contact with a pipe, not when you enter a pipe. This means that if you step on/touch a pipe, the locking mechanic gets disabled for the entire level and screen scrolling is re-enabled, even if you don't enter the pipe. I recommend using $71 (the player animation trigger) to do these checks - the RAM map lists all it's values and the corresponding states for those values.

As a side note, you don't need to CMP #$00 to check if something is 0 or not - just loading a value into the accumulator sets/clears the zero flag.

Tested with:

• Lunar Magic 3.21
• SA-1 Pack v1.32
• UberASM Tool 1.4
• Snes9x v1.60
• bsnes plus v05