Walk Through Walls 2D
Walk Through Walls abbreviated (WTW) allows a character to pass freely through said boundaries by manipulating certain aspects of the game that may prevent such action. The checks that may prevent such action can vary per game and may involve modifying very complex routines to achieve a successful code. Usually in 2D based games however the checks are fairly simple to get around. Below is an example of the checks you will most likely run into:
This method will continually force your position based on your X or Y coordinate. Games that follow this routine are usually very easy to hack WTW codes for because you can usually set a break on write to find what address is writing the forced value and then implement a standard NOP on the found address. This basically gives the address forcing your position no operation stopping it from thwarting you any longer. Some games using this method will also have a secondary check which you can also NOP and should be found after the first address has been NOPed.
Removed Control (Given Direction):
This method involves the game taking away the ability progress further in a given direction. This check usually revolves around a branch element that will skip over the movement section of code (Per Direction) for the given game. To bypass these type of checks you will want to basically disable the branch which is triggering the skip in code. You can use a simple NOP or can change the branch to address to 00. Doing so will always allow movement in that direction regardless of obstacles that may be in your way.
This method involves the game setting a boundary of the "area" allocated for a given room which it uses as a boundary limitation for your character. To hack these you need to find the allocated area for each room. This can be found by moving from room to room and by using less than, equal to, greater than accordingly for each room. Once you have your allocated boundary number set the address value to 0. This will make the allocated "area" for each room 0 which will allow you to walk around freely since your considered outside said container.
Where to begin:
Hacking this type of code will usually require an emulator with debugger/breakpoint support. Once you have the tools your first move will be to find the X/Y coordinate for your character. Once these are found you will need to set a breakpoint for write or (BPW) on the address for the given direction you would like hack. Once you have found the routine controlling the check (by disassembling up from the break address) , try to figure out which of the above is being used and apply a fix to the given routine.