summaryrefslogtreecommitdiff
path: root/engine/link/link.asm
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2020-08-19 13:32:11 +0200
committermid-kid <esteve.varela@gmail.com>2020-08-19 15:59:49 +0200
commitc44da8221fc9292e96c74968dcaeab43fadc19a2 (patch)
tree6d44c02d6df90e2fa5a5fc2692bc59dc791db887 /engine/link/link.asm
parent34ad9498ea399405ddc68aea91af9dd64319417c (diff)
Document weird code involving link trades of mew and celebi
This piece of code is frankly rather confusing, as it seemingly doesn't serve much of a purpose. Documenting it here for future reference.
Diffstat (limited to 'engine/link/link.asm')
-rw-r--r--engine/link/link.asm25
1 files changed, 16 insertions, 9 deletions
diff --git a/engine/link/link.asm b/engine/link/link.asm
index 53f0e004..a0f67f40 100644
--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -1719,24 +1719,31 @@ LinkTrade:
call LoadTradeScreenBorder
call SetTradeRoomBGPals
call WaitBGMap
- ld b, $1
+
+; Check if either of the Pokémon sent was a Mew or Celebi, and send a different
+; byte depending on that. Presumably this would've been some prevention against
+; illicit trade machines, but it doesn't seem like a very effective one.
+; Removing this code breaks link compatibility with the vanilla gen2 games, but
+; has otherwise no consequence.
+ ld b, 1
pop af
ld c, a
cp MEW
- jr z, .loop
+ jr z, .send_checkbyte
ld a, [wCurPartySpecies]
cp MEW
- jr z, .loop
- ld b, $2
+ jr z, .send_checkbyte
+ ld b, 2
ld a, c
cp CELEBI
- jr z, .loop
+ jr z, .send_checkbyte
ld a, [wCurPartySpecies]
cp CELEBI
- jr z, .loop
- ld b, $0
+ jr z, .send_checkbyte
-.loop
+; Send the byte in a loop until the desired byte has been received.
+ ld b, 0
+.send_checkbyte
ld a, b
ld [wPlayerLinkAction], a
push bc
@@ -1750,7 +1757,7 @@ LinkTrade:
jr z, .save
ld a, [wOtherPlayerLinkAction]
cp b
- jr nz, .loop
+ jr nz, .send_checkbyte
.save
farcall SaveAfterLinkTrade