shithub: pokecrystal

Download patch

ref: 7dad9fd1d854f17c6dd1290ed431a77204573005
parent: 0b31d12daceb9f431387951ee275e6147285cffd
parent: e40f421ffb1b0029eaddab21252e324aa3ed4ac2
author: Rangi <35663410+Rangi42@users.noreply.github.com>
date: Wed Aug 19 06:19:44 EDT 2020

Merge pull request #761 from mid-kid/master

Linkcable and the Mystery of Mew

--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -1882,24 +1882,31 @@
 	call LoadTradeScreenBorder
 	call SetTradeRoomBGPals
 	farcall Link_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
@@ -1913,7 +1920,7 @@
 	jr z, .save
 	ld a, [wOtherPlayerLinkAction]
 	cp b
-	jr nz, .loop
+	jr nz, .send_checkbyte
 
 .save
 	farcall SaveAfterLinkTrade