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