Unlike screen constrain, this patch constrains the player and sprite's interaction with blocks within the level (properly, check out the first gif to see why).
V3 update: Now works properly with LMv3.00 dynamic levels patch.
Tester's Note: Does not work with Morton, Roy, Bowser, and Reznor.
3.1 update: now you can disable the patch's effect via a RAM if you want to have only specific levels not to have this effect.
Replaced the very specific tags over the level and under the level with physics, fixed a missing SA-1 conversion.
Definitively a useful patch in certain cases. Having it dependent on RAM also fixed incompatibility with Mode 7 bosses and is a useful addition in general (as you sometimes want to go above the level but not always).
Possible suggestions: Use two or even four flags: One for each direction as e.g. you sometimes want to go above but not below the level. The code also could be improved a bit as you can only change the data bank with PLB whereas neither JML nor JSL can change it.
The 4 directional can be emulated via having blocks that enable/disable the flags and the player triggering it at specific locations of the level.
Replaced the very specific tags over the level and under the level with physics, fixed a missing SA-1 conversion.
Definitively a useful patch in certain cases. Having it dependent on RAM also fixed incompatibility with Mode 7 bosses and is a useful addition in general (as you sometimes want to go above the level but not always).
Possible suggestions: Use two or even four flags: One for each direction as e.g. you sometimes want to go above but not below the level. The code also could be improved a bit as you can only change the data bank with PLB whereas neither JML nor JSL can change it.
A better way to do this is by “defaulting” the value to #$01 on the overworld init (gamemode $0E), and only in levels you want this off, you use STZ !Freeram_LevelConstrain (don't forget to have !Freeram_LevelConstrain = $60 at the top).
Hmm, and I assume that in order to do that, you do something like STZ !Freeram_LevelConstrain in the UberASM code? Just making sure.
Yes, but remember that for levels you do want its effects in other levels, you set this to #$01. This means if you go to a level that doesn't have this effect, then go to a level that is intended to have that effect, it remains off if you leave the RAM set to #$00.
One question: how do you call the RAM that turns the patch's effect off in your level via UberASM? I don't think the readme explains it, so people will get confused and frustrated by that.
To turn the effects off, just have the RAM it's using set to $00. It's explained on the ASM patch:
Code
!Freeram_LevelConstrain = $60
;^[1 byte] (not used if !Setting_LevelConstrain_RAM_Based = 0)
; RAM address that applies the level constain (block interaction
; applies off-level) when nonzero.
Hmm, the first GIF is pretty odd 'cause the screen doesn't push the player but I can see why you did that. Anyhow, thanks for the update! Now I can use this per-level! One question: how do you call the RAM that turns the patch's effect off in your level via UberASM? I don't think the readme explains it, so people will get confused and frustrated by that.
Follow Us On