Remote control Pikachu

From Glitch City Wiki
Jump to navigation Jump to search

Remote control Pikachu is a continuous arbitrary code execution method (for methods such as a custom map script pointer address) for Pokémon Yellow, created by Torchickens (ChickasaurusGL).

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.

Notes

This code reads from FFB3; a joypad address in the HRAM.

The value in FFB3 is determined by the combination of the bits set when pressing buttons, for example, moving down enables bit 0x7 (+0x80 to the value). If one wanted to modify the code for an input with (for instance) down and left at the same time, FFB3 would read 0xA0 (0x80+0x20).

Bit 0x7/+0x80 - Down
Bit 0x6/+0x40 - Up
Bit 0x5/+0x20 - Left
Bit 0x4/+0x10 - Right
Bit 0x3/+0x08 - Start
Bit 0x2/+0x04 - Select
Bit 0x1/+0x02 - B
Bit 0x0/+0x01 - A

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).

YouTube video

YouTube video by ChickasaurusGL