Remote control Pikachu: Difference between revisions

From Glitch City Wiki
Jump to navigation Jump to search
Content added Content deleted
>Torchickens
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
'''Remote control Pikachu''' is a [[ItemDex/Y:099|ws m (hex:63)]] code for {{Yellow}}, created by Torchickens (ChickasaurusGL).
'''Remote control Pikachu''' is a continuous arbitrary code execution method (for methods such as a custom map script pointer address) for {{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).
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==
==Steps==
1. Trap yourself in the wall with Pikachu following you.
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.
2. Use a method (such as [[TheZZAZZGlitch's memory editor]], [[offgao's memory editor]]) to write the following bytes at a place in RAM.
Line 18: Line 18:
xor a
xor a


ld a,(d436)
ld a,[d436]


or a
or a


ld a,(ffb3)
ld a,[ffb3]


sub a,80
sub a,80
Line 34: Line 34:
ld a,01
ld a,01


ld (d436),a
ld [d436],a


ld (d437),a
ld [d437],a


ret
ret


ld a,(ffb3)
ld a,[ffb3]


sub a,40
sub a,40
Line 52: Line 52:
ld a,02
ld a,02


ld (d437),a
ld [d437],a


ld (d436),a
ld [d436],a


ret
ret


ld a,(ffb3)
ld a,[ffb3]


sub a,20
sub a,20
Line 70: Line 70:
ld a,03
ld a,03


ld (d437),a
ld [d437],a


ld a,01
ld a,01


ld (d436),a
ld [d436],a


ret
ret


ld (ffb3),a
ld [ffb3],a


sub a,10
sub a,10
Line 84: Line 84:
cp a,01
cp a,01


jr c,d04f
jr c,$02


jr nc,$0b
jr nc,$0b
Line 90: Line 90:
ld a,04
ld a,04


ld (d437),a
ld [d437],a


ld a,01
ld a,01


ld (d436),a
ld [d436],a


ret
ret


ld a,(ffb3)
ld a,[ffb3]


sub a,04
sub a,04
Line 110: Line 110:
xor a
xor a


ld (c1f1),a
ld [c1f1],a


ret
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.
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).
<pre>
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
</pre>


==How to move Pikachu==
==How to move Pikachu==

Latest revision as of 19:01, 5 January 2022

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