This program allows the user to control Pikachu with the d-pad, provided the player is stuck in a wall in all four directions (or for the directions they wish to move Pikachu).
Steps
1. Trap yourself in a wall with Pikachu following you.2. Use a method (such as TheZZAZZGlitch's memory editor, offgao's memory editor) to write the following bytes at a place in RAM.
AF FA 36 D4 B7 FA B3 FF D6 80 FE 01 38 02 30 09 3E 01 EA 36 D4 EA 37 D4 C9 FA B3 FF D6 40 FE 01 38 02 30 0A 3E 02 EA 37 D4 3D EA 36 D4 C9 FA B3 FF D6 20 FE 01 38 02 30 0B 3E 03 EA 37 D4 3E 01 EA 36 D4 C9 FA B3 FF D6 10 FE 01 38 02 30 0B 3E 04 EA 37 D4 3E 01 EA 36 D4 C9 FA B3 FF D6 04 FE 01 38 02 30 04 AF EA F1 C1 C9
As code:
xor a
ld a,(d436)
or a
ld a,(ffb3)
sub a,80
cp a,01
jr c,$02
jr nc,$09
ld a,01
ld (d436),a
ld (d437),a
ret
ld a,(ffb3)
sub a,40
cp a,01
jr c,$02
jr nc,$0A
ld a,02
ld (d437),a
ld (d436),a
ret
ld a,(ffb3)
sub a,20
cp a,01
jr c,$02
jr nc,$0b
ld a,03
ld (d437),a
ld a,01
ld (d436),a
ret
ld (ffb3),a
sub a,10
cp a,01
jr c,$02
jr nc,$0b
ld a,04
ld (d437),a
ld a,01
ld (d436),a
ret
ld a,(ffb3)
sub a,04
cp a,01
jr c,$02
jr nc,$04
xor a
ld (c1f1),a
ret
3. Change D36D/D36E (map script pointer) to point to the little-endian (smaller byte first) address where you wrote your code. For example, if you wrote your code at DB7D the values would be 7D and DB.
How to move Pikachu
The up, down, left and right buttons will move Pikachu in that direction. If Pikachu is forced off the screen, pressing Select and then another direction will return Pikachu one step away from the player.
As of yet there is no support for scrolling the screen when Pikachu is moved off the screen.
This code reads from the joypad and manipulates three addresses; D436 (amount of steps Pikachu will take), D437 (direction Pikachu will move) and C1F1 (Pikachu's state on the map).