From c44da8221fc9292e96c74968dcaeab43fadc19a2 Mon Sep 17 00:00:00 2001 From: mid-kid Date: Wed, 19 Aug 2020 13:32:11 +0200 Subject: 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. --- engine/link/link.asm | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'engine') 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 -- cgit v1.2.3