summaryrefslogtreecommitdiff
path: root/engine/link.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/link.asm')
-rwxr-xr-xengine/link.asm1832
1 files changed, 156 insertions, 1676 deletions
diff --git a/engine/link.asm b/engine/link.asm
index a1fa0661b..8ba1702e9 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -40,7 +40,7 @@ Function2805d: ; 2805d
call Function28499
call Function28434
xor a
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
call Function87d
ld a, [hLinkPlayerNumber]
cp $2
@@ -83,8 +83,8 @@ Function2805d: ; 2805d
ld a, $fe
ld [de], a
ld hl, wc608
- ld de, wc6d0
- ld bc, $c8
+ ld de, wPlayerTrademonSpecies
+ ld bc, wPlayerTrademonSpecies - wc608
call Function75f
xor a
ld [rIF], a
@@ -105,7 +105,7 @@ Function2805d: ; 2805d
ld de, OverworldMap
ld bc, $1a2
call Function2879e
- ld de, wc6d0
+ ld de, wPlayerTrademonSpecies
ld hl, wc813
ld c, $2
.asm_280fe
@@ -226,7 +226,7 @@ Function28177: ; 28177
ld a, $fe
ld [de], a
ld hl, wc608
- ld de, wc6d0
+ ld de, wPlayerTrademonSpecies
ld bc, $c8
call Function75f
ld a, [wLinkMode]
@@ -250,7 +250,7 @@ Function28177: ; 28177
ld de, OverworldMap
ld bc, $1b9
call Function2879e
- ld de, wc6d0
+ ld de, wPlayerTrademonSpecies
ld hl, wc813
ld c, $2
.asm_28224
@@ -363,23 +363,23 @@ Function28177: ; 28177
.asm_282cc
push bc
push de
- callba Function1de5c8
+ callba IsMailEuropean
ld a, c
or a
- jr z, .asm_282ee
+ jr z, .next
sub $3
- jr nc, .asm_282e4
- callba Function1df203
- jr .asm_282ee
+ jr nc, .skip
+ callba DeutenEnglischenPost
+ jr .next
-.asm_282e4
+.skip
cp $2
- jr nc, .asm_282ee
- callba Function1df220
+ jr nc, .next
+ callba HandleSpanishItalianMail
-.asm_282ee
+.next
pop de
- ld hl, $2f
+ ld hl, MAIL_STRUCT_LENGTH
add hl, de
ld d, h
ld e, l
@@ -474,7 +474,7 @@ Function283b2: ; 283b2
ld b, $a
.asm_283b7
call DelayFrame
- call Function908
+ call LinkCommunicationsSignalDataReceived
dec b
jr nz, .asm_283b7
xor a
@@ -493,9 +493,9 @@ Function283b2: ; 283b2
pop hl
bccoord 1, 14
call PlaceWholeStringInBoxAtOnce
- call FadeToWhite
+ call RotateThreePalettesRight
call ClearScreen
- ld b, $8
+ ld b, SCGB_08
call GetSGBLayout
call Function3200
ret
@@ -802,105 +802,120 @@ Function284f6: ; 284f6
; 28595
Function28595: ; 28595
- ld de, OverworldMap
- ld a, $fd
- ld b, $6
+ ld de, wc800
+ ld a, EGG
+ ld b, PARTY_LENGTH
.loop1
ld [de], a
inc de
dec b
jr nz, .loop1
+ ; de = $c806
ld hl, PlayerName
ld bc, NAME_LENGTH
call CopyBytes
+ ; de = $c811
ld hl, PartyCount
- ld bc, 8
+ ld bc, 1 + PARTY_LENGTH + 1
call CopyBytes
+ ; de = $c819
ld hl, PlayerID
ld bc, 2
call CopyBytes
+ ; de = $c81b
ld hl, PartyMon1Species
- ld bc, $120
+ ld bc, PARTY_LENGTH * PARTYMON_STRUCT_LENGTH
call CopyBytes
+ ; de = $c93b
ld hl, PartyMonOT
- ld bc, $42
+ ld bc, PARTY_LENGTH * NAME_LENGTH
call CopyBytes
+ ; de = $c97d
ld hl, PartyMonNicknames
- ld bc, $42
+ ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH
call CopyBytes
+ ; de = $c9bf
+
+; Okay, we did all that. Now, are we in the trade center?
ld a, [wLinkMode]
cp LINK_TRADECENTER
ret nz
+
+; Fill 5 bytes at wc9f4 with $20
ld de, wc9f4
ld a, $20
call Function28682
- ld a, BANK(sPartyScratch1)
+
+; Copy all the mail messages to wc9f9
+ ld a, BANK(sPartyMail)
call GetSRAMBank
- ld hl, sPartyScratch1
+ ld hl, sPartyMail
ld b, PARTY_LENGTH
.loop2
push bc
- ld bc, $21
+ ld bc, MAIL_MSG_LENGTH + 1
call CopyBytes
- ld bc, $e
+ ld bc, sPartyMon1MailEnd - sPartyMon1MailAuthor
add hl, bc
pop bc
dec b
jr nz, .loop2
- ld hl, sPartyScratch1
+; Copy the mail metadata to wcabf
+ ld hl, sPartyMail
ld b, PARTY_LENGTH
.loop3
push bc
- ld bc, $21
+ ld bc, MAIL_MSG_LENGTH + 1
add hl, bc
- ld bc, $e
+ ld bc, sPartyMon1MailEnd - sPartyMon1MailAuthor
call CopyBytes
pop bc
dec b
jr nz, .loop3
+
ld b, PARTY_LENGTH
- ld de, sPartyScratch1
+ ld de, sPartyMail
ld hl, wc9f9
.loop4
push bc
push hl
push de
push hl
- callba Function1de5c8
+ callba IsMailEuropean
pop de
ld a, c
or a
jr z, .next
sub $3
- jr nc, .skip
- callba Function1df1e6
+ jr nc, .italian_spanish
+ callba HandleFrenchGermanMail
jr .next
-.skip
+.italian_spanish
cp $2
jr nc, .next
- callba Function1df220
+ callba HandleSpanishItalianMail
.next
pop de
- ld hl, SCRATCHMON_STRUCT_LENGTH
+ ld hl, MAIL_STRUCT_LENGTH
add hl, de
ld d, h
ld e, l
pop hl
- ld bc, $21
+ ld bc, sPartyMon1MailAuthor - sPartyMon1Mail
add hl, bc
pop bc
dec b
jr nz, .loop4
call CloseSRAM
ld hl, wc9f9
- ld bc, $c6
+ ld bc, PARTY_LENGTH * (sPartyMon1MailAuthor - sPartyMon1Mail)
.loop5
ld a, [hl]
cp $fe
jr nz, .skip2
- ld [hl], $21
+ ld [hl], sPartyMon1MailAuthor - sPartyMon1Mail
.skip2
inc hl
@@ -910,7 +925,7 @@ Function28595: ; 28595
jr nz, .loop5
ld hl, wcabf
ld de, wcb13
- ld b, $54
+ ld b, PARTY_LENGTH * (sPartyMon1MailEnd - sPartyMon1MailAuthor)
ld c, $0
.loop6
inc c
@@ -1198,7 +1213,7 @@ Function287e3: ; 287e3
call Function28ef8
callba Function16d673
xor a
- ld hl, wcf51
+ ld hl, wOtherPlayerLinkMode
rept 3
ld [hli], a
endr
@@ -1206,7 +1221,7 @@ endr
ld a, $1
ld [MenuSelection2], a
inc a
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
jp Function2888b
; 28803
@@ -1363,7 +1378,7 @@ Function28926: ; 28926
hlcoord 0, 15
ld b, $1
ld c, $12
- call Function28eef
+ call Predef_LinkTextbox
hlcoord 2, 16
ld de, String28ab4
call PlaceString
@@ -1453,9 +1468,9 @@ Function28926: ; 28926
ld [MenuSelection2], a
dec a
ld [wd002], a
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
callba Function16d6ce
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
cp $f
jp z, Function287e3
ld [wd003], a
@@ -1468,11 +1483,11 @@ Function28926: ; 28926
jp nc, Function28b87
xor a
ld [wcf57], a
- ld [wcf52], a
+ ld [wOtherPlayerLinkAction], a
hlcoord 0, 12
ld b, $4
ld c, $12
- call Function28eef
+ call Predef_LinkTextbox
callba Function4d354
ld hl, UnknownText_0x28aaf
bccoord 1, 14
@@ -1482,7 +1497,7 @@ Function28926: ; 28926
.asm_28a58
xor a
ld [wcf57], a
- ld [wcf52], a
+ ld [wOtherPlayerLinkAction], a
ld a, [wd003]
ld hl, OTPartySpecies
ld c, a
@@ -1494,7 +1509,7 @@ Function28926: ; 28926
hlcoord 0, 12
ld b, $4
ld c, $12
- call Function28eef
+ call Predef_LinkTextbox
callba Function4d354
ld hl, UnknownText_0x28ac4
bccoord 1, 14
@@ -1504,12 +1519,12 @@ Function28926: ; 28926
hlcoord 0, 12
ld b, $4
ld c, $12
- call Function28eef
+ call Predef_LinkTextbox
hlcoord 1, 14
ld de, String28ece
call PlaceString
ld a, $1
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
callba Function16d6ce
ld c, $64
call DelayFrames
@@ -1576,16 +1591,16 @@ Function28ade: ; 28ade
ld a, $ec
ldcoord_a 9, 17
ld a, $f
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
callba Function16d6ce
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
cp $f
jr nz, .asm_28ade
Function28b22: ; 28b22
- call FadeToWhite
+ call RotateThreePalettesRight
call ClearScreen
- ld b, $8
+ ld b, SCGB_08
call GetSGBLayout
call Function3200
xor a
@@ -1619,7 +1634,7 @@ String_28b61: ; 28b61
; 28b68
Function28b68: ; 28b68
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
hlcoord 6, 9
ld bc, SCREEN_WIDTH
call AddNTimes
@@ -1647,11 +1662,11 @@ Function28b77: ; 28b77
Function28b87: ; 28b87
xor a
ld [wcf57], a
- ld [wcf52], a
+ ld [wOtherPlayerLinkAction], a
hlcoord 0, 12
ld b, $4
ld c, $12
- call Function28eef
+ call Predef_LinkTextbox
callba Function4d354
ld a, [wd002]
ld hl, PartySpecies
@@ -1680,7 +1695,7 @@ Function28b87: ; 28b87
hlcoord 10, 7
ld b, $3
ld c, $7
- call Function28eef
+ call Predef_LinkTextbox
ld de, String28eab
hlcoord 12, 8
call PlaceString
@@ -1716,11 +1731,11 @@ Function28b87: ; 28b87
.asm_28c33
ld a, $1
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
hlcoord 0, 12
ld b, 4
ld c, 18
- call Function28eef
+ call Predef_LinkTextbox
hlcoord 1, 14
ld de, String28ece
call PlaceString
@@ -1729,30 +1744,30 @@ Function28b87: ; 28b87
.asm_28c54
ld a, $2
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
callba Function16d6ce
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
dec a
jr nz, .asm_28c7b
hlcoord 0, 12
ld b, 4
ld c, 18
- call Function28eef
+ call Predef_LinkTextbox
hlcoord 1, 14
ld de, String28ece
call PlaceString
jp Function28ea3
.asm_28c7b
- ld hl, sPartyScratch1
+ ld hl, sPartyMail
ld a, [wd002]
- ld bc, SCRATCHMON_STRUCT_LENGTH
+ ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
- ld a, BANK(sPartyScratch1)
+ ld a, BANK(sPartyMail)
call GetSRAMBank
ld d, h
ld e, l
- ld bc, SCRATCHMON_STRUCT_LENGTH
+ ld bc, MAIL_STRUCT_LENGTH
add hl, bc
ld a, [wd002]
ld c, a
@@ -1762,28 +1777,28 @@ Function28b87: ; 28b87
cp $6
jr z, .asm_28ca6
push bc
- ld bc, SCRATCHMON_STRUCT_LENGTH
+ ld bc, MAIL_STRUCT_LENGTH
call CopyBytes
pop bc
jr .asm_28c96
.asm_28ca6
- ld hl, sPartyScratch1
+ ld hl, sPartyMail
ld a, [PartyCount]
dec a
- ld bc, SCRATCHMON_STRUCT_LENGTH
+ ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
push hl
ld hl, wc9f4
ld a, [wd003]
- ld bc, SCRATCHMON_STRUCT_LENGTH
+ ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
pop de
- ld bc, SCRATCHMON_STRUCT_LENGTH
+ ld bc, MAIL_STRUCT_LENGTH
call CopyBytes
call CloseSRAM
ld hl, PlayerName
- ld de, wc6e7
+ ld de, wPlayerTrademonSenderName
ld bc, NAME_LENGTH
call CopyBytes
ld a, [wd002]
@@ -1792,28 +1807,28 @@ Function28b87: ; 28b87
ld c, a
add hl, bc
ld a, [hl]
- ld [wc6d0], a
+ ld [wPlayerTrademonSpecies], a
push af
ld a, [wd002]
ld hl, PartyMonOT
call SkipNames
- ld de, wc6f2
+ ld de, wPlayerTrademonOTName
ld bc, NAME_LENGTH
call CopyBytes
ld hl, PartyMon1ID
ld a, [wd002]
call GetPartyLocation
ld a, [hli]
- ld [PlayerScreens], a
+ ld [wPlayerTrademonID], a
ld a, [hl]
- ld [EnemyScreens], a
+ ld [wPlayerTrademonID + 1], a
ld hl, PartyMon1DVs
ld a, [wd002]
call GetPartyLocation
ld a, [hli]
- ld [wc6fd], a
+ ld [wPlayerTrademonDVs], a
ld a, [hl]
- ld [wPlayerMinimized], a
+ ld [wPlayerTrademonDVs + 1], a
ld a, [wd002]
ld hl, PartyMon1Species
call GetPartyLocation
@@ -1821,9 +1836,9 @@ Function28b87: ; 28b87
ld c, l
callba GetCaughtGender
ld a, c
- ld [wc701], a
+ ld [wPlayerTrademonCaughtData], a
ld hl, wd26b
- ld de, wc719
+ ld de, wOTTrademonSenderName
ld bc, NAME_LENGTH
call CopyBytes
ld a, [wd003]
@@ -1832,27 +1847,27 @@ Function28b87: ; 28b87
ld c, a
add hl, bc
ld a, [hl]
- ld [wc702], a
+ ld [wOTTrademonSpecies], a
ld a, [wd003]
ld hl, OTPartyMonOT
call SkipNames
- ld de, wc724
+ ld de, wOTTrademonOTName
ld bc, NAME_LENGTH
call CopyBytes
ld hl, OTPartyMon1ID
ld a, [wd003]
call GetPartyLocation
ld a, [hli]
- ld [wEnemyWrapCount], a
+ ld [wOTTrademonID], a
ld a, [hl]
- ld [wPlayerCharging], a
+ ld [wOTTrademonID + 1], a
ld hl, OTPartyMon1DVs
ld a, [wd003]
call GetPartyLocation
ld a, [hli]
- ld [wEnemyTrappingMove], a
+ ld [wOTTrademonDVs], a
ld a, [hl]
- ld [wPlayerWrapCount], a
+ ld [wOTTrademonDVs + 1], a
ld a, [wd003]
ld hl, OTPartyMon1Species
call GetPartyLocation
@@ -1860,7 +1875,7 @@ Function28b87: ; 28b87
ld c, l
callba GetCaughtGender
ld a, c
- ld [wEnemyCharging], a
+ ld [wOTTrademonCaughtData], a
ld a, [wd002]
ld [CurPartyMon], a
ld hl, PartySpecies
@@ -1889,18 +1904,18 @@ Function28b87: ; 28b87
call DelayFrames
call ClearTileMap
call LoadFontsBattleExtra
- ld b, $8
+ ld b, SCGB_08
call GetSGBLayout
ld a, [hLinkPlayerNumber]
cp $1
- jr z, .asm_28de4
- predef Function28f24
- jr .asm_28de9
+ jr z, .player_2
+ predef TradeAnimation
+ jr .done_animation
-.asm_28de4
- predef Function28f63
+.player_2
+ predef TradeAnimationPlayer2
-.asm_28de9
+.done_animation
pop af
ld c, a
ld [CurPartyMon], a
@@ -1916,11 +1931,11 @@ Function28b87: ; 28b87
ld de, TempMonSpecies
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
- predef Functionda96
+ predef AddTempmonToParty
ld a, [PartyCount]
dec a
ld [CurPartyMon], a
- callab Function421d8
+ callab EvolvePokemon
call ClearScreen
call Function28ef8
call Function28eff
@@ -1944,7 +1959,7 @@ Function28b87: ; 28b87
.asm_28e49
ld a, b
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
push bc
call Function862
pop bc
@@ -1954,7 +1969,7 @@ Function28b87: ; 28b87
ld a, b
and a
jr z, .asm_28e63
- ld a, [wcf52]
+ ld a, [wOtherPlayerLinkAction]
cp b
jr nz, .asm_28e49
@@ -1967,7 +1982,7 @@ Function28b87: ; 28b87
hlcoord 0, 12
ld b, 4
ld c, 18
- call Function28eef
+ call Predef_LinkTextbox
hlcoord 1, 14
ld de, String28ebd
call PlaceString
@@ -2004,10 +2019,10 @@ String28ece: ; 28ece
next "was canceled!@"
-Function28eef: ; 28eef
+Predef_LinkTextbox: ; 28eef
ld d, h
ld e, l
- callba Function16d6ca
+ callba LinkTextbox
ret
; 28ef8
@@ -2026,1551 +2041,16 @@ Function28f09: ; 28f09
hlcoord 0, 0
ld b, 6
ld c, 18
- call Function28eef
+ call Predef_LinkTextbox
hlcoord 0, 8
ld b, 6
ld c, 18
- call Function28eef
+ call Predef_LinkTextbox
callba Functionfb60d
ret
; 28f24
-Function28f24: ; 28f24
- xor a
- ld [wcf66], a
- ld hl, wc6e7
- ld de, wc719
- call Function297ff
- ld hl, wc6d0
- ld de, wc702
- call Function29814
- ld de, .data_28f3f
- jr Function28fa1
-
-.data_28f3f
- db $1b
- db $1
- db $1c
- db $21
- db $2d
- db $27
- db $23
- db $3
- db $25
- db $28
- db $25
- db $1e
- db $29
- db $6
- db $16
- db $1f
- db $19
- db $17
- db $22
- db $1f
- db $2a
- db $e
- db $3
- db $24
- db $5
- db $25
- db $2
- db $27
- db $25
- db $1d
- db $2c
- db $2e
- db $1e
- db $18
- db $1f
- db $2b
-
-Function28f63: ; 28f63
- xor a
- ld [wcf66], a
- ld hl, wc719
- ld de, wc6e7
- call Function297ff
- ld hl, wc702
- ld de, wc6d0
- call Function29814
- ld de, .data_28f7e
- jr Function28fa1
-
-.data_28f7e
- db $1a
- db $17
- db $22
- db $1f
- db $2a
- db $6
- db $3
- db $24
- db $5
- db $25
- db $2
- db $27
- db $25
- db $1d
- db $2c
- db $2f
- db $1e
- db $18
- db $1f
- db $1b
- db $1
- db $1c
- db $22
- db $27
- db $23
- db $3
- db $25
- db $28
- db $25
- db $1e
- db $29
- db $e
- db $16
- db $1f
- db $2b
-
-Function28fa1: ; 28fa1
- ld hl, BattleEnded
- ld [hl], e
- inc hl
- ld [hl], d
- ld a, [hMapAnims]
- push af
- xor a
- ld [hMapAnims], a
- ld hl, VramState
- ld a, [hl]
- push af
- res 0, [hl]
- ld hl, Options
- ld a, [hl]
- push af
- set 4, [hl]
- call Function28fdb
- ld a, [wcf66]
- and a
- jr nz, .asm_28fca
- ld de, MUSIC_EVOLUTION
- call PlayMusic2
-.asm_28fca
- call Function29082
- jr nc, .asm_28fca
- pop af
- ld [Options], a
- pop af
- ld [VramState], a
- pop af
- ld [hMapAnims], a
- ret
-; 28fdb
-
-Function28fdb: ; 28fdb
- xor a
- ld [wJumptableIndex], a
- call ClearBGPalettes
- call ClearSprites
- call ClearTileMap
- call DisableLCD
- call LoadFontsBattleExtra
- callab Function8cf53
- ld a, [hCGB]
- and a
- jr z, .asm_2900b
- ld a, $1
- ld [rVBK], a
- ld hl, VTiles0
- ld bc, sScratch - VTiles0
- xor a
- call ByteFill
- ld a, $0
- ld [rVBK], a
-
-.asm_2900b
- ld hl, VBGMap0
- ld bc, sScratch - VBGMap0
- ld a, " "
- call ByteFill
- ld hl, TradeGameBoyLZ
- ld de, VTiles2 tile $31
- call Decompress
- ld hl, TradeArrowGFX
- ld de, VTiles1 tile $6d
- ld bc, $10
- ld a, BANK(TradeArrowGFX)
- call FarCopyBytes
- ld hl, TradeArrowGFX + $10
- ld de, VTiles1 tile $6e
- ld bc, $10
- ld a, BANK(TradeArrowGFX)
- call FarCopyBytes
- xor a
- ld [hSCX], a
- ld [hSCY], a
- ld a, $7
- ld [hWX], a
- ld a, $90
- ld [hWY], a
- callba Function4d7fd
- call EnableLCD
- call Function2982b
- ld a, [wc6d0]
- ld hl, wc6fd
- ld de, VTiles0
- call Function29491
- ld a, [wc702]
- ld hl, wEnemyTrappingMove
- ld de, VTiles0 tile $31
- call Function29491
- ld a, [wc6d0]
- ld de, wc6d1
- call Function294a9
- ld a, [wc702]
- ld de, wc703
- call Function294a9
- call Function297ed
- ret
-; 29082
-
-Function29082: ; 29082
- ld a, [wJumptableIndex]
- bit 7, a
- jr nz, .asm_2909b
- call Function290a0
- callab Function8cf69
- ld hl, wcf65
- inc [hl]
- call DelayFrame
- and a
- ret
-
-.asm_2909b
- call LoadStandardFont
- scf
- ret
-; 290a0
-
-Function290a0: ; 290a0
- ld a, [wJumptableIndex]
- ld e, a
- ld d, 0
- ld hl, JumpTable290af
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 290af
-
-JumpTable290af: ; 290af
- dw Function29114
- dw Function2942e
- dw Function29461
- dw Function29348
- dw Function2937e
- dw Function29391
- dw Function29129
- dw Function291af
- dw Function291c4
- dw Function291d9
- dw Function2925d
- dw Function29220
- dw Function2925d
- dw Function29229
- dw Function2913c
- dw Function2925d
- dw Function291e8
- dw Function291fd
- dw Function29211
- dw Function29220
- dw Function2925d
- dw Function29229
- dw Function29701
- dw Function2973c
- dw Function2975c
- dw Function2977f
- dw Function297a4
- dw Function293a6
- dw Function293b6
- dw Function293d2
- dw Function293de
- dw Function293ea
- dw Function2940c
- dw Function294e7
- dw Function294f0
- dw Function2961b
- dw Function2962c
- dw Function29879
- dw Function29886
- dw Function29649
- dw Function29660
- dw Function2926d
- dw Function29277
- dw Function29123
- dw Function29487
- dw Function294f9
- dw Function29502
- dw Function2950c
-; 2910f
-
-Function2910f: ; 2910f
- ld hl, wJumptableIndex
- inc [hl]
- ret
-; 29114
-
-Function29114: ; 29114
- ld hl, BattleEnded
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, [de]
- ld [wJumptableIndex], a
- inc de
- ld [hl], d
- dec hl
- ld [hl], e
- ret
-; 29123
-
-Function29123: ; 29123
- ld hl, wJumptableIndex
- set 7, [hl]
- ret
-; 29129
-
-Function29129: ; 29129
- ld a, $ed
- call Function292f6
- ld a, [wc74c]
- ld [wd265], a
- xor a
- ld de, $2c58
- ld b, $0
- jr Function2914e
-
-Function2913c: ; 2913c
- ld a, $ee
- call Function292f6
- ld a, [wc74d]
- ld [wd265], a
- ld a, $2
- lb de, $4c, $94
- ld b, $4
-
-Function2914e: ; 2914e
- push bc
- push de
- push bc
- push de
- push af
- call DisableLCD
- callab Function8cf53
- ld hl, $9874
- ld bc, $c
- ld a, $60
- call ByteFill
- pop af
- call Function29281
- xor a
- ld [hSCX], a
- ld a, $7
- ld [hWX], a
- ld a, $70
- ld [hWY], a
- call EnableLCD
- call Function2985a
- pop de
- ld a, $11
- call Function3b2a
- ld hl, $b
- add hl, bc
- pop bc
- ld [hl], b
- pop de
- ld a, $12
- call Function3b2a
- ld hl, $b
- add hl, bc
- pop bc
- ld [hl], b
- call WaitBGMap
- ld b, $1b
- call GetSGBLayout
- ld a, $e4
- call DmgToCgbBGPals
- ld a, $d0
- call Functioncf8
- call Function2910f
- ld a, $5c
- ld [wcf64], a
- ret
-; 291af
-
-Function291af: ; 291af
- call Function2981d
- ld a, [hSCX]
- add $2
- ld [hSCX], a
- cp $50
- ret nz
- ld a, $1
- call Function29281
- call Function2910f
- ret
-; 291c4
-
-Function291c4: ; 291c4
- call Function2981d
- ld a, [hSCX]
- add $2
- ld [hSCX], a
- cp $a0
- ret nz
- ld a, $2
- call Function29281
- call Function2910f
- ret
-; 291d9
-
-Function291d9: ; 291d9
- call Function2981d
- ld a, [hSCX]
- add $2
- ld [hSCX], a
- and a
- ret nz
- call Function2910f
- ret
-; 291e8
-
-Function291e8: ; 291e8
- call Function2981d
- ld a, [hSCX]
- sub $2
- ld [hSCX], a
- cp $b0
- ret nz
- ld a, $1
- call Function29281
- call Function2910f
- ret
-; 291fd
-
-Function291fd: ; 291fd
- call Function2981d
- ld a, [hSCX]
- sub $2
- ld [hSCX], a
- cp $60
- ret nz
- xor a
- call Function29281
- call Function2910f
- ret
-; 29211
-
-Function29211: ; 29211
- call Function2981d
- ld a, [hSCX]
- sub $2
- ld [hSCX], a
- and a
- ret nz
- call Function2910f
- ret
-; 29220
-
-Function29220: ; 29220
- ld a, $80
- ld [wcf64], a
- call Function2910f
- ret
-; 29229
-
-Function29229: ; 29229
- call ClearBGPalettes
- call ClearTileMap
- call ClearSprites
- call DisableLCD
- callab Function8cf53
- ld hl, VBGMap0
- ld bc, sScratch - VBGMap0
- ld a, " "
- call ByteFill
- xor a
- ld [hSCX], a
- ld a, $90
- ld [hWY], a
- call EnableLCD
- call Function2982b
- call WaitBGMap
- call Function297ed
- call Function29114
- ret
-; 2925d
-
-Function2925d: ; 2925d
- call Function2981d
- ld hl, wcf64
- ld a, [hl]
- and a
- jr z, .asm_29269
- dec [hl]
- ret
-
-.asm_29269
- call Function2910f
- ret
-; 2926d
-
-Function2926d: ; 2926d
- call Function29114
- ld de, SFX_GIVE_TRADEMON
- call PlaySFX
- ret
-; 29277
-
-Function29277: ; 29277
- call Function29114
- ld de, SFX_GET_TRADEMON
- call PlaySFX
- ret
-; 29281
-
-Function29281: ; 29281
- and 3
- ld e, a
- ld d, 0
- ld hl, Jumptable_2928f
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 2928f
-
-Jumptable_2928f: ; 2928f
- dw Function29297
- dw Function292af
- dw Function292be
- dw Function29297
-; 29297
-
-Function29297: ; 29297
- call Function297cf
- hlcoord 9, 3
- ld [hl], $5b
- inc hl
- ld bc, $a
- ld a, $60
- call ByteFill
- hlcoord 3, 2
- call Function292ec
- ret
-; 292af
-
-Function292af: ; 292af
- call Function297cf
- hlcoord 0, 3
- ld bc, SCREEN_WIDTH
- ld a, $60
- call ByteFill
- ret
-; 292be
-
-Function292be: ; 292be
- call Function297cf
- hlcoord 0, 3
- ld bc, $11
- ld a, $60
- call ByteFill
- hlcoord 17, 3
- ld a, $5d
- ld [hl], a
- ld a, $61
- ld de, SCREEN_WIDTH
- ld c, $3
-.asm_292d9
- add hl, de
- ld [hl], a
- dec c
- jr nz, .asm_292d9
- add hl, de
- ld a, $5f
- ld [hld], a
- ld a, $5b
- ld [hl], a
- hlcoord 10, 6
- call Function292ec
- ret
-; 292ec
-
-Function292ec: ; 292ec
- ld de, TradeGameBoyTilemap
- lb bc, 8, 6
- call Function297db
- ret
-; 292f6
-
-Function292f6: ; 292f6
- push af
- call ClearBGPalettes
- call WaitTop
- ld a, VBGMap1 / $100
- ld [hBGMapAddress + 1], a
- call ClearTileMap
- hlcoord 0, 0
- ld bc, SCREEN_WIDTH
- ld a, "─"
- call ByteFill
- hlcoord 0, 1
- ld de, wc736
- call PlaceString
- ld hl, wc741
- ld de, 0
-.asm_2931e
- ld a, [hli]
- cp "@"
- jr z, .asm_29326
- dec de
- jr .asm_2931e
-
-.asm_29326
- hlcoord 0, 4
- add hl, de
- ld de, wc741
- call PlaceString
- hlcoord 7, 2
- ld bc, 6
- pop af
- call ByteFill
- call WaitBGMap
- call WaitTop
- ld a, VBGMap0 / $100
- ld [hBGMapAddress + 1], a
- call ClearTileMap
- ret
-; 29348
-
-Function29348: ; 29348
- call ClearTileMap
- call WaitTop
- ld a, $a0
- ld [hSCX], a
- call DelayFrame
- hlcoord 8, 2
- ld de, Tilemap_298f7
- lb bc, 3, 12
- call Function297db
- call WaitBGMap
- ld b, $1b
- call GetSGBLayout
- ld a, $e4
- call DmgToCgbBGPals
- ld de, $e4e4
- call DmgToCgbObjPals
- ld de, SFX_POTION
- call PlaySFX
- call Function2910f
- ret
-; 2937e
-
-Function2937e: ; 2937e
- ld a, [hSCX]
- and a
- jr z, .asm_29388
- add $4
- ld [hSCX], a
- ret
-
-.asm_29388
- ld c, $50
- call DelayFrames
- call Function29114
- ret
-; 29391
-
-Function29391: ; 29391
- ld a, [hSCX]
- cp $a0
- jr z, .asm_2939c
- sub $4
- ld [hSCX], a
- ret
-
-.asm_2939c
- call ClearTileMap
- xor a
- ld [hSCX], a
- call Function29114
- ret
-; 293a6
-
-Function293a6: ; 293a6
- ld a, $8f
- ld [hWX], a
- ld a, $88
- ld [hSCX], a
- ld a, $50
- ld [hWY], a
- call Function29114
- ret
-; 293b6
-
-Function293b6: ; 293b6
- ld a, [hWX]
- cp $7
- jr z, .asm_293c7
- sub $4
- ld [hWX], a
- ld a, [hSCX]
- sub $4
- ld [hSCX], a
- ret
-
-.asm_293c7
- ld a, $7
- ld [hWX], a
- xor a
- ld [hSCX], a
- call Function29114
- ret
-; 293d2
-
-Function293d2: ; 293d2
- ld a, $7
- ld [hWX], a
- ld a, $50
- ld [hWY], a
- call Function29114
- ret
-; 293de
-
-Function293de: ; 293de
- ld a, $7
- ld [hWX], a
- ld a, $90
- ld [hWY], a
- call Function29114
- ret
-; 293ea
-
-Function293ea: ; 293ea
- call WaitTop
- ld a, VBGMap1 / $100
- ld [hBGMapAddress + 1], a
- call WaitBGMap
- ld a, $7
- ld [hWX], a
- xor a
- ld [hWY], a
- call DelayFrame
- call WaitTop
- ld a, VBGMap0 / $100
- ld [hBGMapAddress + 1], a
- call ClearTileMap
- call Function2910f
- ret
-; 2940c
-
-Function2940c: ; 2940c
- ld a, [hWX]
- cp $a1
- jr nc, .asm_29417
- add $4
- ld [hWX], a
- ret
-
-.asm_29417
- ld a, VBGMap1 / $100
- ld [hBGMapAddress + 1], a
- call WaitBGMap
- ld a, $7
- ld [hWX], a
- ld a, $90
- ld [hWY], a
- ld a, VBGMap0 / $100
- ld [hBGMapAddress + 1], a
- call Function29114
- ret
-; 2942e
-
-Function2942e: ; 2942e
- call Function2951f
- ld a, [wc6d0]
- ld [CurPartySpecies], a
- ld a, [wc6fd]
- ld [TempMonDVs], a
- ld a, [wPlayerMinimized]
- ld [TempMonDVs + 1], a
- ld b, $1a
- call GetSGBLayout
- ld a, $e4
- call DmgToCgbBGPals
- call Function294bb
-
- ld a, [wc6d0]
- call GetCryIndex
- jr c, .asm_2945d
- ld e, c
- ld d, b
- call PlayCryHeader
-.asm_2945d
-
- call Function29114
- ret
-; 29461
-
-Function29461: ; 29461
- call Function29549
- ld a, [wc702]
- ld [CurPartySpecies], a
- ld a, [wEnemyTrappingMove]
- ld [TempMonDVs], a
- ld a, [wPlayerWrapCount]
- ld [TempMonDVs + 1], a
- ld b, $1a
- call GetSGBLayout
- ld a, $e4
- call DmgToCgbBGPals
- call Function294c0
- call Function29114
- ret
-; 29487
-
-Function29487: ; 29487
- callba Function4d81e
- call Function29114
- ret
-; 29491
-
-Function29491: ; 29491
- push de
- push af
- predef GetUnownLetter
- pop af
- ld [CurPartySpecies], a
- ld [CurSpecies], a
- call GetBaseData
- pop de
- predef GetFrontpic
- ret
-; 294a9
-
-Function294a9: ; 294a9
- push de
- ld [wd265], a
- call GetPokemonName
- ld hl, StringBuffer1
- pop de
- ld bc, NAME_LENGTH
- call CopyBytes
- ret
-; 294bb
-
-Function294bb: ; 294bb
- ld de, VTiles0
- jr Function294c3
-
-Function294c0: ; 294c0
- ld de, VTiles0 tile $31
-
-Function294c3: ; 294c3
- call DelayFrame
- ld hl, VTiles2
- ld bc, $a31
- call Request2bpp
- call WaitTop
- call Function297cf
- hlcoord 7, 2
- xor a
- ld [hFillBox], a
- lb bc, 7, 7
- predef FillBox
- call WaitBGMap
- ret
-; 294e7
-
-Function294e7: ; 294e7
- ld c, $50
- call DelayFrames
- call Function29114
- ret
-; 294f0
-
-Function294f0: ; 294f0
- ld c, $28
- call DelayFrames
- call Function29114
- ret
-; 294f9
-
-Function294f9: ; 294f9
- ld c, $60
- call DelayFrames
- call Function29114
- ret
-; 29502
-
-Function29502: ; 29502
- call Function29516
- ret nz
- ld c, $50
- call DelayFrames
- ret
-; 2950c
-
-Function2950c: ; 2950c
- call Function29516
- ret nz
- ld c, $b4
- call DelayFrames
- ret
-; 29516
-
-Function29516: ; 29516
- call Function29114
- ld a, [wc702]
- cp $fd
- ret
-; 2951f
-
-Function2951f: ; 2951f
- ld de, wc6d0
- ld a, [de]
- cp $fd
- jr z, Function295a1
- call Function29573
- ld de, wc6d0
- call Function295e3
- ld de, wc6d1
- call Function295ef
- ld a, [wc701]
- ld de, wc6f2
- call Function295f6
- ld de, PlayerScreens
- call Function29611
- call Function295d8
- ret
-; 29549
-
-Function29549: ; 29549
- ld de, wc702
- ld a, [de]
- cp $fd
- jr z, Function295a1
- call Function29573
- ld de, wc702
- call Function295e3
- ld de, wc703
- call Function295ef
- ld a, [wEnemyCharging]
- ld de, wc724
- call Function295f6
- ld de, wEnemyWrapCount
- call Function29611
- call Function295d8
- ret
-; 29573
-
-Function29573: ; 29573
- call WaitTop
- call Function297cf
- ld a, VBGMap1 / $100
- ld [hBGMapAddress + 1], a
- hlcoord 3, 0
- ld b, $6
- ld c, $d
- call TextBox
- hlcoord 4, 0
- ld de, String29591
- call PlaceString
- ret
-; 29591
-
-String29591: ; 29591
- db "─── №."
- next ""
- next "OT/"
- next $73, "№.@"
-; 295a1
-
-Function295a1: ; 295a1
- call WaitTop
- call Function297cf
- ld a, VBGMap1 / $100
- ld [hBGMapAddress + 1], a
- hlcoord 3, 0
- ld b, $6
- ld c, $d
- call TextBox
- hlcoord 4, 2
- ld de, String295c2
- call PlaceString
- call Function295d8
- ret
-; 295c2
-
-String295c2: ; 295c2
- db "EGG"
- next "OT/?????"
- next $73, "№.?????@"
-; 295d8
-
-Function295d8: ; 295d8
- call WaitBGMap
- call WaitTop
- ld a, VBGMap0 / $100
- ld [hBGMapAddress + 1], a
- ret
-; 295e3
-
-Function295e3: ; 295e3
- hlcoord 10, 0
- lb bc, PRINTNUM_LEADINGZEROS | 1, 3
- call PrintNum
- ld [hl], $7f
- ret
-; 295ef
-
-Function295ef: ; 295ef
- hlcoord 4, 2
- call PlaceString
- ret
-; 295f6
-
-Function295f6: ; 295f6
- cp 3
- jr c, .asm_295fb
- xor a
-
-.asm_295fb
- push af
- hlcoord 7, 4
- call PlaceString
- inc bc
- pop af
- ld hl, Unknown_2960e
- ld d, 0
- ld e, a
- add hl, de
- ld a, [hl]
- ld [bc], a
- ret
-; 2960e
-
-Unknown_2960e: ; 2960e
- db " ", "♂", "♀"
-; 29611
-
-Function29611: ; 29611
- hlcoord 7, 6
- lb bc, PRINTNUM_LEADINGZEROS | 2, 5
- call PrintNum
- ret
-; 2961b
-
-Function2961b: ; 2961b
- lb de, $54, $58
- ld a, $e
- call Function3b2a
- call Function29114
- ld a, $20
- ld [wcf64], a
- ret
-; 2962c
-
-Function2962c: ; 2962c
- lb de, $54, $58
- ld a, $e
- call Function3b2a
- ld hl, $b
- add hl, bc
- ld [hl], $1
- ld hl, $7
- add hl, bc
- ld [hl], $dc
- call Function29114
- ld a, $38
- ld [wcf64], a
- ret
-; 29649
-
-Function29649: ; 29649
- lb de, $54, $58
- ld a, $f
- call Function3b2a
- call Function29114
- ld a, $10
- ld [wcf64], a
- ld de, SFX_BALL_POOF
- call PlaySFX
- ret
-; 29660
-
-Function29660: ; 29660
- ld a, $e4
- call Functioncf8
- lb de, $28, $58
- ld a, $10
- call Function3b2a
- call Function29114
- ld a, $40
- ld [wcf64], a
- ret
-; 29676
-
-Function29676: ; 29676 (a:5676)
- ld hl, $b
- add hl, bc
- ld e, [hl]
- ld d, 0
- ld hl, Jumptable_29686
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 29686
-
-Jumptable_29686: ; 29686 (a:5686)
- dw Function2969a
- dw Function296a4
- dw Function296af
- dw Function296bd
- dw Function296cf
- dw Function296dd
- dw Function296f2
-; 2969a
-
-Function29694: ; 29694 (a:5694)
- ld hl, $b
- add hl, bc
- inc [hl]
- ret
-
-Function2969a: ; 2969a (a:569a)
- call Function29694
- ld hl, $c
- add hl, bc
- ld [hl], $80
- ret
-
-Function296a4: ; 296a4 (a:56a4)
- ld hl, $c
- add hl, bc
- ld a, [hl]
- dec [hl]
- and a
- ret nz
- call Function29694
-
-Function296af: ; 296af (a:56af)
- ld hl, $4
- add hl, bc
- ld a, [hl]
- cp $94
- jr nc, .asm_296ba
- inc [hl]
- ret
-.asm_296ba
- call Function29694
-
-Function296bd: ; 296bd (a:56bd)
- ld hl, $5
- add hl, bc
- ld a, [hl]
- cp $4c
- jr nc, .asm_296c8
- inc [hl]
- ret
-.asm_296c8
- ld hl, $
- add hl, bc
- ld [hl], $0
- ret
-
-Function296cf: ; 296cf (a:56cf)
- ld hl, $5
- add hl, bc
- ld a, [hl]
- cp $2c
- jr z, .asm_296da
- dec [hl]
- ret
-.asm_296da
- call Function29694
-
-Function296dd: ; 296dd (a:56dd)
- ld hl, $4
- add hl, bc
- ld a, [hl]
- cp $58
- jr z, .asm_296e8
- dec [hl]
- ret
-.asm_296e8
- call Function29694
- ld hl, $c
- add hl, bc
- ld [hl], $80
- ret
-
-Function296f2: ; 296f2 (a:56f2)
- ld hl, $c
- add hl, bc
- ld a, [hl]
- dec [hl]
- and a
- ret nz
- ld hl, $
- add hl, bc
- ld [hl], $0
- ret
-; 29701 (a:5701)
-
-Function29701: ; 29701
- ld a, [wLinkMode]
- cp LINK_TIMECAPSULE
- jr z, .asm_29725
- ld hl, UnknownText_0x29737
- call PrintText
- ld c, $bd
- call DelayFrames
- ld hl, UnknownText_0x29732
- call PrintText
- call Function297c9
- ld c, $80
- call DelayFrames
- call Function29114
- ret
-
-.asm_29725
- ld hl, UnknownText_0x29732
- call PrintText
- call Function297c9
- call Function29114
- ret
-; 29732
-
-UnknownText_0x29732: ; 0x29732
- ; was sent to @ .
- text_jump UnknownText_0x1bc6e9
- db "@"
-; 0x29737
-
-UnknownText_0x29737: ; 0x29737
- ;
- text_jump UnknownText_0x1bc701
- db "@"
-; 0x2973c
-
-Function2973c: ; 2973c
- ld hl, UnknownText_0x29752
- call PrintText
- call Function297c9
- ld hl, UnknownText_0x29757
- call PrintText
- call Function297c9
- call Function29114
- ret
-; 29752
-
-UnknownText_0x29752: ; 0x29752
- ; bids farewell to
- text_jump UnknownText_0x1bc703
- db "@"
-; 0x29757
-
-UnknownText_0x29757: ; 0x29757
- ; .
- text_jump UnknownText_0x1bc719
- db "@"
-; 0x2975c
-
-Function2975c: ; 2975c
- call WaitTop
- hlcoord 0, 10
- ld bc, 8 * SCREEN_WIDTH
- ld a, " "
- call ByteFill
- call WaitBGMap
- ld hl, UnknownText_0x2977a
- call PrintText
- call Function297c9
- call Function29114
- ret
-; 2977a
-
-UnknownText_0x2977a: ; 0x2977a
- ; Take good care of @ .
- text_jump UnknownText_0x1bc71f
- db "@"
-; 0x2977f
-
-Function2977f: ; 2977f
- ld hl, UnknownText_0x2979a
- call PrintText
- call Function297c9
- ld hl, UnknownText_0x2979f
- call PrintText
- call Function297c9
- ld c, $e
- call DelayFrames
- call Function29114
- ret
-; 2979a
-
-UnknownText_0x2979a: ; 0x2979a
- ; For @ 's @ ,
- text_jump UnknownText_0x1bc739
- db "@"
-; 0x2979f
-
-UnknownText_0x2979f: ; 0x2979f
- ; sends @ .
- text_jump UnknownText_0x1bc74c
- db "@"
-; 0x297a4
-
-Function297a4: ; 297a4
- ld hl, UnknownText_0x297bf
- call PrintText
- call Function297c9
- ld hl, UnknownText_0x297c4
- call PrintText
- call Function297c9
- ld c, $e
- call DelayFrames
- call Function29114
- ret
-; 297bf
-
-UnknownText_0x297bf: ; 0x297bf
- ; will trade @ @
- text_jump UnknownText_0x1bc75e
- db "@"
-; 0x297c4
-
-UnknownText_0x297c4: ; 0x297c4
- ; for @ 's @ .
- text_jump UnknownText_0x1bc774
- db "@"
-; 0x297c9
-
-Function297c9: ; 297c9
- ld c, $50
- call DelayFrames
- ret
-; 297cf
-
-Function297cf: ; 297cf
- hlcoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- ld a, " "
- call ByteFill
- ret
-; 297db
-
-Function297db: ; 297db
-.asm_297db
- push bc
- push hl
-.asm_297dd
- ld a, [de]
- inc de
- ld [hli], a
- dec c
- jr nz, .asm_297dd
- pop hl
- ld bc, SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .asm_297db
- ret
-; 297ed
-
-Function297ed: ; 297ed
- ld a, [hSGB]
- and a
- ld a, $e4
- jr z, .asm_297f6
- ld a, $f0
-
-.asm_297f6
- call Functioncf8
- ld a, $e4
- call DmgToCgbBGPals
- ret
-; 297ff
-
-Function297ff: ; 297ff
- push de
- ld de, wc736
- ld bc, NAME_LENGTH
- call CopyBytes
- pop hl
- ld de, wc741
- ld bc, NAME_LENGTH
- call CopyBytes
- ret
-; 29814
-
-Function29814: ; 29814
- ld a, [hl]
- ld [wc74c], a
- ld a, [de]
- ld [wc74d], a
- ret
-; 2981d
-
-Function2981d: ; 2981d
- ld a, [wcf65]
- and $7
- ret nz
- ld a, [rBGP]
- xor $3c
- call DmgToCgbBGPals
- ret
-; 2982b
-
-Function2982b: ; 2982b
- call DelayFrame
- ld de, TradeBallGFX
- ld hl, VTiles0 tile $62
- lb bc, BANK(TradeBallGFX), $6
- call Request2bpp
- ld de, TradePoofGFX
- ld hl, VTiles0 tile $68
- lb bc, BANK(TradePoofGFX), $c
- call Request2bpp
- ld de, TradeCableGFX
- ld hl, VTiles0 tile $74
- lb bc, BANK(TradeCableGFX), $4
- call Request2bpp
- xor a
- ld hl, wc300
- ld [hli], a
- ld [hl], $62
- ret
-; 2985a
-
-Function2985a: ; 2985a
- call DelayFrame
- ld e, $3
- callab Function8e83f
- ld de, TradeBubbleGFX
- ld hl, VTiles0 tile $72
- lb bc, BANK(TradeBubbleGFX), $4
- call Request2bpp
- xor a
- ld hl, wc300
- ld [hli], a
- ld [hl], $62
- ret
-; 29879
-
-Function29879: ; 29879
- ld hl, wcf64
- ld a, [hl]
- and a
- jr z, .asm_29882
- dec [hl]
- ret
-
-.asm_29882
- call Function29114
- ret
-; 29886
-
-Function29886: ; 29886
- ld hl, wcf64
- ld a, [hl]
- and a
- jr z, .asm_2988f
- dec [hl]
- ret
-
-.asm_2988f
- call Function29114
- ret
-; 29893
-
-
-Function29893: ; 29893
-; This function is unreferenced.
-; It was meant for use in Japanese versions, so the
-; constant used for copy length was changed by accident.
-
- ld hl, Unknown_298b5
-
- ld a, [hli]
- ld [wc6d0], a
- ld de, wc6e7
- ld c, 13 ; jp: 8
-.asm_2989f
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .asm_2989f
-
- ld a, [hli]
- ld [wc702], a
- ld de, wc719
- ld c, 13 ; jp: 8
-.asm_298ae
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .asm_298ae
- ret
-; 298b5
-
-Unknown_298b5: ; 298b5
- db $03, "ゲーフり@@", $23, $01 ; GAME FREAK
- db $06, "クりーチャ@", $56, $04 ; Creatures Inc.
-; 298c7
-
-
-TradeGameBoyTilemap: ; 298c7
-; 6x8
- db $31, $32, $32, $32, $32, $33
- db $34, $35, $36, $36, $37, $38
- db $34, $39, $3a, $3a, $3b, $38
- db $3c, $3d, $3e, $3e, $3f, $40
- db $41, $42, $43, $43, $44, $45
- db $46, $47, $43, $48, $49, $4a
- db $41, $43, $4b, $4c, $4d, $4e
- db $4f, $50, $50, $50, $51, $52
-; 297f7
-
-Tilemap_298f7: ; 297f7
-; 12x3
- db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
- db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
- db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43
-; 2991b
-
-TradeArrowGFX: INCBIN "gfx/trade/arrow.2bpp"
-TradeCableGFX: INCBIN "gfx/trade/cable.2bpp"
-TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp"
-TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz"
-TradeBallGFX: INCBIN "gfx/trade/ball.2bpp"
-TradePoofGFX: INCBIN "gfx/trade/poof.2bpp"
+INCLUDE "engine/trade/animation.asm"
Special_CheckTimeCapsuleCompatibility: ; 29bfb
; Checks to see if your Party is compatible with the generation 1 games. Returns the following in ScriptVar:
@@ -3668,11 +2148,11 @@ Function29c67: ; 29c67
; 29c7b
Special_EnterTimeCapsule: ; 29c7b
- ld c, $a
+ ld c, 10
call DelayFrames
ld a, $4
call Function29f17
- ld c, $28
+ ld c, 40
call DelayFrames
xor a
ld [hVBlank], a
@@ -3730,15 +2210,15 @@ Special_AbortLink: ; 29c92
; 29ce8
Special_SetBitsForLinkTradeRequest: ; 29ce8
- ld a, $1
- ld [wcf56], a
+ ld a, LINK_TRADECENTER - 1
+ ld [wPlayerLinkAction], a
ld [wd265], a
ret
; 29cf1
Special_SetBitsForBattleRequest: ; 29cf1
- ld a, $2
- ld [wcf56], a
+ ld a, LINK_COLOSSEUM - 1
+ ld [wPlayerLinkAction], a
ld [wd265], a
ret
; 29cfa
@@ -3752,14 +2232,14 @@ Special_SetBitsForTimeCapsuleRequest: ; 29cfa
ld [rSC], a
ld a, $80
ld [rSC], a
- xor a
- ld [wcf56], a
+ xor a ; LINK_TIMECAPSULE - 1
+ ld [wPlayerLinkAction], a
ld [wd265], a
ret
; 29d11
Special_WaitForLinkedFriend: ; 29d11
- ld a, [wcf56]
+ ld a, [wPlayerLinkAction]
and a
jr z, .asm_29d2f
ld a, $2
@@ -3815,9 +2295,9 @@ Special_WaitForLinkedFriend: ; 29d11
jr .asm_29d39
.asm_29d79
- call Function908
+ call LinkCommunicationsSignalDataReceived
call DelayFrame
- call Function908
+ call LinkCommunicationsSignalDataReceived
ld c, $32
call DelayFrames
ld a, $1
@@ -3832,7 +2312,7 @@ Special_WaitForLinkedFriend: ; 29d11
Special_CheckLinkTimeout: ; 29d92
ld a, $1
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
ld hl, wcf5b
ld a, $3
ld [hli], a
@@ -3854,7 +2334,7 @@ Special_CheckLinkTimeout: ; 29d92
Function29dba: ; 29dba
ld a, $5
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
ld hl, wcf5b
ld a, $3
ld [hli], a
@@ -3875,17 +2355,17 @@ Function29dba: ; 29dba
ld a, b
or c
jr nz, .asm_29de0
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
cp $5
jr nz, .asm_29e03
ld a, $6
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
ld hl, wcf5b
ld a, $1
ld [hli], a
ld [hl], $32
call Function29e0c
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
cp $6
jr z, .asm_29e08
@@ -3946,7 +2426,7 @@ Function29e47: ; 29e47
ld b, $a
.asm_29e49
call DelayFrame
- call Function908
+ call LinkCommunicationsSignalDataReceived
dec b
jr nz, .asm_29e49
ret
@@ -3969,7 +2449,7 @@ Function29e53: ; 29e53
Special_TryQuickSave: ; 29e66
ld a, [wd265]
push af
- callba Function14ab2
+ callba Link_SaveGame
ld a, $1
jr nc, .asm_29e75
xor a
@@ -3987,14 +2467,14 @@ Special_CheckBothSelectedSameRoom: ; 29e82
ld a, [wd265]
call Function29f17
push af
- call Function908
+ call LinkCommunicationsSignalDataReceived
call DelayFrame
- call Function908
+ call LinkCommunicationsSignalDataReceived
pop af
ld b, a
ld a, [wd265]
cp b
- jr nz, .asm_29eaa
+ jr nz, .fail
ld a, [wd265]
inc a
ld [wLinkMode], a
@@ -4004,7 +2484,7 @@ Special_CheckBothSelectedSameRoom: ; 29e82
ld [ScriptVar], a
ret
-.asm_29eaa
+.fail
xor a
ld [ScriptVar], a
ret
@@ -4052,14 +2532,14 @@ Special_CloseLink: ; 29eee
; 29efa
Special_FailedLinkToPast: ; 29efa
- ld c, $28
+ ld c, 40
call DelayFrames
ld a, $e
jp Function29f17
; 29f04
Function29f04: ; 29f04
- ld c, $3
+ ld c, 3
call DelayFrames
ld a, -1
ld [hLinkPlayerNumber], a
@@ -4073,26 +2553,26 @@ Function29f04: ; 29f04
Function29f17: ; 29f17
add $d0
- ld [wcf56], a
+ ld [wPlayerLinkAction], a
ld [wcf57], a
ld a, $2
ld [hVBlank], a
call DelayFrame
call DelayFrame
-.asm_29f29
+.receive_loop
call Function83b
- ld a, [wcf51]
+ ld a, [wOtherPlayerLinkMode]
ld b, a
and $f0
cp $d0
- jr z, .asm_29f40
- ld a, [wcf52]
+ jr z, .done
+ ld a, [wOtherPlayerLinkAction]
ld b, a
and $f0
cp $d0
- jr nz, .asm_29f29
+ jr nz, .receive_loop
-.asm_29f40
+.done
xor a
ld [hVBlank], a
ld a, b