summaryrefslogtreecommitdiff
path: root/engine/link/link.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/link/link.asm')
-rw-r--r--engine/link/link.asm213
1 files changed, 73 insertions, 140 deletions
diff --git a/engine/link/link.asm b/engine/link/link.asm
index e0b7f7972..e5f354f57 100644
--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -1,4 +1,4 @@
-LinkCommunications: ; 28000
+LinkCommunications:
call ClearBGPalettes
ld c, 80
call DelayFrames
@@ -35,7 +35,7 @@ LinkCommunications: ; 28000
cp LINK_TIMECAPSULE
jp nz, Gen2ToGen2LinkComms
-Gen2ToGen1LinkComms: ; 2805d
+Gen2ToGen1LinkComms:
call ClearLinkData
call Link_PrepPartyData_Gen1
call FixDataForLinkTransfer
@@ -177,9 +177,8 @@ Gen2ToGen1LinkComms: ; 2805d
ld de, MUSIC_ROUTE_30
call PlayMusic
jp InitTradeMenuDisplay
-; 28177
-Gen2ToGen2LinkComms: ; 28177
+Gen2ToGen2LinkComms:
call ClearLinkData
call Link_PrepPartyData_Gen2
call FixDataForLinkTransfer
@@ -474,9 +473,8 @@ Gen2ToGen2LinkComms: ; 28177
ld de, MUSIC_ROUTE_30
call PlayMusic
jp InitTradeMenuDisplay
-; 283b2
-LinkTimeout: ; 283b2
+LinkTimeout:
ld de, .TooMuchTimeHasElapsed
ld b, 10
.loop
@@ -506,15 +504,13 @@ LinkTimeout: ; 283b2
call GetSGBLayout
call WaitBGMap2
ret
-; 283ed
-.TooMuchTimeHasElapsed: ; 0x283ed
+.TooMuchTimeHasElapsed:
; Too much time has elapsed. Please try again.
text_jump UnknownText_0x1c4183
db "@"
-; 0x283f2
-ExchangeBytes: ; 283f2
+ExchangeBytes:
ld a, TRUE
ld [hSerialIgnoringInitialData], a
.loop
@@ -546,13 +542,11 @@ ExchangeBytes: ; 283f2
or c
jr nz, .loop
ret
-; 28419
-String_PleaseWait: ; 28419
+String_PleaseWait:
db "PLEASE WAIT!@"
-; 28426
-ClearLinkData: ; 28426
+ClearLinkData:
ld hl, wLinkData
ld bc, wLinkDataEnd - wLinkData
.loop
@@ -563,9 +557,8 @@ ClearLinkData: ; 28426
or c
jr nz, .loop
ret
-; 28434
-FixDataForLinkTransfer: ; 28434
+FixDataForLinkTransfer:
ld hl, wd1f3
ld a, SERIAL_PREAMBLE_BYTE
ld b, wLinkBattleRNs - wd1f3
@@ -636,9 +629,8 @@ FixDataForLinkTransfer: ; 28434
ld a, SERIAL_PATCH_LIST_PART_TERMINATOR
ld [de], a
ret
-; 28499
-Link_PrepPartyData_Gen1: ; 28499
+Link_PrepPartyData_Gen1:
ld de, wLinkData
ld a, SERIAL_PREAMBLE_BYTE
ld b, PARTY_LENGTH
@@ -693,9 +685,8 @@ Link_PrepPartyData_Gen1: ; 28499
.copy_ot_nicks
ld bc, PARTY_LENGTH * NAME_LENGTH
jp CopyBytes
-; 284f6
-.ConvertPartyStruct2to1: ; 284f6
+.ConvertPartyStruct2to1:
ld b, h
ld c, l
push de
@@ -804,9 +795,8 @@ Link_PrepPartyData_Gen1: ; 28499
ld h, b
ld l, c
ret
-; 28595
-Link_PrepPartyData_Gen2: ; 28595
+Link_PrepPartyData_Gen2:
ld de, wLinkData
ld a, SERIAL_PREAMBLE_BYTE
ld b, PARTY_LENGTH
@@ -942,9 +932,8 @@ Link_PrepPartyData_Gen2: ; 28595
ld a, SERIAL_PATCH_LIST_PART_TERMINATOR
ld [de], a
ret
-; 28682
-Function28682: ; 28682
+Function28682:
ld c, 5
.loop
ld [de], a
@@ -952,9 +941,8 @@ Function28682: ; 28682
dec c
jr nz, .loop
ret
-; 2868a
-Function2868a: ; 2868a
+Function2868a:
push hl
ld d, h
ld e, l
@@ -980,9 +968,8 @@ Function2868a: ; 2868a
ld de, wOTPartyMonNicknames
ld bc, PARTY_LENGTH * MON_NAME_LENGTH
jp CopyBytes
-; 286ba
-.ConvertToGen2: ; 286ba
+.ConvertToGen2:
ld b, h
ld c, l
ld a, [de]
@@ -1102,9 +1089,8 @@ Function2868a: ; 2868a
inc de
inc de
ret
-; 28771
-TimeCapsule_ReplaceTeruSama: ; 28771
+TimeCapsule_ReplaceTeruSama:
ld a, b
and a
ret z
@@ -1126,11 +1112,9 @@ TimeCapsule_ReplaceTeruSama: ; 28771
pop hl
ret
-
INCLUDE "data/items/catch_rate_items.asm"
-
-Link_CopyOTData: ; 2879e
+Link_CopyOTData:
.loop
ld a, [hli]
cp SERIAL_NO_DATA_BYTE
@@ -1142,9 +1126,8 @@ Link_CopyOTData: ; 2879e
or c
jr nz, .loop
ret
-; 287ab
-Link_CopyRandomNumbers: ; 287ab
+Link_CopyRandomNumbers:
ld a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
ret z
@@ -1163,9 +1146,8 @@ Link_CopyRandomNumbers: ; 287ab
dec c
jr nz, .loop
ret
-; 287ca
-Link_FindFirstNonControlCharacter_SkipZero: ; 287ca
+Link_FindFirstNonControlCharacter_SkipZero:
.loop
ld a, [hli]
and a
@@ -1176,9 +1158,8 @@ Link_FindFirstNonControlCharacter_SkipZero: ; 287ca
jr z, .loop
dec hl
ret
-; 287d8
-Link_FindFirstNonControlCharacter_AllowZero: ; 287d8
+Link_FindFirstNonControlCharacter_AllowZero:
.loop
ld a, [hli]
cp SERIAL_PREAMBLE_BYTE
@@ -1187,9 +1168,8 @@ Link_FindFirstNonControlCharacter_AllowZero: ; 287d8
jr z, .loop
dec hl
ret
-; 287e3
-InitTradeMenuDisplay: ; 287e3
+InitTradeMenuDisplay:
call ClearScreen
call LoadTradeScreenBorder
farcall InitTradeSpeciesList
@@ -1204,9 +1184,8 @@ InitTradeMenuDisplay: ; 287e3
inc a
ld [wPlayerLinkAction], a
jp LinkTrade_PlayerPartyMenu
-; 28803
-LinkTrade_OTPartyMenu: ; 28803
+LinkTrade_OTPartyMenu:
ld a, OTPARTYMON
ld [wMonType], a
ld a, A_BUTTON | D_UP | D_DOWN
@@ -1228,7 +1207,7 @@ LinkTrade_OTPartyMenu: ; 28803
xor a
ld [w2DMenuFlags2], a
-LinkTradeOTPartymonMenuLoop: ; 28835
+LinkTradeOTPartymonMenuLoop:
farcall LinkTradeMenu
ld a, d
and a
@@ -1268,9 +1247,8 @@ LinkTradeOTPartymonMenuLoop: ; 28835
bit D_DOWN_F, a
jp z, LinkTradePartiesMenuMasterLoop
jp Function28ac9
-; 2888b
-LinkTrade_PlayerPartyMenu: ; 2888b
+LinkTrade_PlayerPartyMenu:
farcall InitMG_Mobile_LinkTradePalMap
xor a
ld [wMonType], a
@@ -1294,7 +1272,7 @@ LinkTrade_PlayerPartyMenu: ; 2888b
ld [w2DMenuFlags2], a
call WaitBGMap2
-LinkTradePartymonMenuLoop: ; 288c5
+LinkTradePartymonMenuLoop:
farcall LinkTradeMenu
ld a, d
and a
@@ -1343,16 +1321,14 @@ LinkTradePartymonMenuLoop: ; 288c5
pop bc
pop hl
jp Function28ade
-; 2891c
-LinkTradePartiesMenuMasterLoop: ; 2891c
+LinkTradePartiesMenuMasterLoop:
ld a, [wMonType]
and a
jp z, LinkTradePartymonMenuLoop ; PARTYMON
jp LinkTradeOTPartymonMenuLoop ; OTPARTYMON
-; 28926
-Function28926: ; 28926
+Function28926:
call LoadTileMapToTempTileMap
ld a, [wMenuCursorY]
push af
@@ -1510,26 +1486,21 @@ Function28926: ; 28926
ld c, 100
call DelayFrames
jp InitTradeMenuDisplay
-; 28aaf
-
-.Text_CantTradeLastMon: ; 0x28aaf
+.Text_CantTradeLastMon:
; If you trade that #MON, you won't be able to battle.
text_jump UnknownText_0x1c41b1
db "@"
-; 0x28ab4
-.String_Stats_Trade: ; 28ab4
+.String_Stats_Trade:
db "STATS TRADE@"
-.Text_Abnormal: ; 0x28ac4
+.Text_Abnormal:
; Your friend's @ appears to be abnormal!
text_jump UnknownText_0x1c41e6
db "@"
-; 0x28ac9
-
-Function28ac9: ; 28ac9
+Function28ac9:
ld a, [wMenuCursorY]
cp 1
jp nz, LinkTradePartiesMenuMasterLoop
@@ -1541,7 +1512,7 @@ Function28ac9: ; 28ac9
ld [hl], " "
pop bc
pop hl
-Function28ade: ; 28ade
+Function28ade:
.loop1
ld a, "▶"
ldcoord_a 9, 17
@@ -1576,7 +1547,7 @@ Function28ade: ; 28ade
ld a, [wOtherPlayerLinkMode]
cp $f
jr nz, .loop1
-Function28b22: ; 28b22
+Function28b22:
call RotateThreePalettesRight
call ClearScreen
ld b, SCGB_DIPLOMA
@@ -1592,9 +1563,8 @@ Function28b22: ; 28b22
ld a, (1 << rSC_ON) | 1
ld [rSC], a
ret
-; 28b42
-Unreferenced_Function28b42: ; 28b42
+Unreferenced_Function28b42:
hlcoord 0, 16
ld a, "┘"
ld bc, 2 * SCREEN_WIDTH
@@ -1606,22 +1576,19 @@ Unreferenced_Function28b42: ; 28b42
hlcoord 2, 16
ld de, .Cancel
jp PlaceString
-; 28b61
-.Cancel: ; 28b61
+.Cancel:
db "CANCEL@"
-; 28b68
-Function28b68: ; 28b68
+Function28b68:
ld a, [wOtherPlayerLinkMode]
hlcoord 6, 9
ld bc, SCREEN_WIDTH
call AddNTimes
ld [hl], "▷"
ret
-; 28b77
-LinkEngine_FillBox: ; 28b77
+LinkEngine_FillBox:
.row
push bc
push hl
@@ -1636,9 +1603,8 @@ LinkEngine_FillBox: ; 28b77
dec b
jr nz, .row
ret
-; 28b87
-LinkTrade: ; 28b87
+LinkTrade:
xor a
ld [wcf57], a
ld [wOtherPlayerLinkAction], a
@@ -1972,51 +1938,44 @@ LinkTrade: ; 28b87
cp LINK_TIMECAPSULE
jp z, Gen2ToGen1LinkComms
jp Gen2ToGen2LinkComms
-; 28ea3
-Function28ea3: ; 28ea3
+Function28ea3:
ld c, 100
call DelayFrames
jp InitTradeMenuDisplay
-; 28eab
-String28eab: ; 28eab
+String28eab:
db "TRADE"
next "CANCEL@"
-UnknownText_0x28eb8: ; 0x28eb8
+UnknownText_0x28eb8:
; Trade @ for @ ?
text_jump UnknownText_0x1c4212
db "@"
-; 0x28ebd
-String28ebd: ; 28ebd
+String28ebd:
db "Trade completed!@"
-String_TooBadTheTradeWasCanceled: ; 28ece
+String_TooBadTheTradeWasCanceled:
db "Too bad! The trade"
next "was canceled!@"
-
-LinkTextboxAtHL: ; 28eef
+LinkTextboxAtHL:
ld d, h
ld e, l
farcall LinkTextbox
ret
-; 28ef8
-LoadTradeScreenBorder: ; 28ef8
+LoadTradeScreenBorder:
farcall _LoadTradeScreenBorder
ret
-; 28eff
-SetTradeRoomBGPals: ; 28eff
+SetTradeRoomBGPals:
farcall LoadTradeRoomBGPals_ ; just a nested farcall; so wasteful
call SetPalettes
ret
-; 28f09
-Unreferenced_Function28f09: ; 28f09
+Unreferenced_Function28f09:
hlcoord 0, 0
ld b, 6
ld c, 18
@@ -2027,11 +1986,10 @@ Unreferenced_Function28f09: ; 28f09
call LinkTextboxAtHL
farcall PlaceTradePartnerNamesAndParty
ret
-; 28f24
INCLUDE "engine/movie/trade_animation.asm"
-CheckTimeCapsuleCompatibility: ; 29bfb
+CheckTimeCapsuleCompatibility:
; Checks to see if your party is compatible with the Gen 1 games.
; Returns the following in wScriptVar:
; 0: Party is okay
@@ -2081,7 +2039,7 @@ CheckTimeCapsuleCompatibility: ; 29bfb
jr nc, .move_too_new
dec c
jr nz, .move_next
- ld de, wPartyMon2 - (wPartyMon1 + NUM_MOVES)
+ ld de, PARTYMON_STRUCT_LENGTH - NUM_MOVES
add hl, de
dec b
jr nz, .move_loop
@@ -2111,9 +2069,8 @@ CheckTimeCapsuleCompatibility: ; 29bfb
.done
ld [wScriptVar], a
ret
-; 29c67
-Function29c67: ; 29c67
+Function29c67:
ld a, [wPartyCount]
sub b
ld c, a
@@ -2125,9 +2082,8 @@ Function29c67: ; 29c67
ld [wd265], a
call GetPokemonName
ret
-; 29c7b
-EnterTimeCapsule: ; 29c7b
+EnterTimeCapsule:
ld c, 10
call DelayFrames
ld a, $4
@@ -2139,9 +2095,8 @@ EnterTimeCapsule: ; 29c7b
inc a
ld [wLinkMode], a
ret
-; 29c92
-WaitForOtherPlayerToExit: ; 29c92
+WaitForOtherPlayerToExit:
ld c, 3
call DelayFrames
ld a, CONNECTION_NOT_ESTABLISHED
@@ -2187,23 +2142,20 @@ WaitForOtherPlayerToExit: ; 29c92
ld [hVBlank], a
ld [wLinkMode], a
ret
-; 29ce8
-SetBitsForLinkTradeRequest: ; 29ce8
+SetBitsForLinkTradeRequest:
ld a, LINK_TRADECENTER - 1
ld [wPlayerLinkAction], a
ld [wd265], a
ret
-; 29cf1
-SetBitsForBattleRequest: ; 29cf1
+SetBitsForBattleRequest:
ld a, LINK_COLOSSEUM - 1
ld [wPlayerLinkAction], a
ld [wd265], a
ret
-; 29cfa
-SetBitsForTimeCapsuleRequest: ; 29cfa
+SetBitsForTimeCapsuleRequest:
ld a, $2
ld [rSB], a
xor a
@@ -2216,9 +2168,8 @@ SetBitsForTimeCapsuleRequest: ; 29cfa
ld [wPlayerLinkAction], a
ld [wd265], a
ret
-; 29d11
-WaitForLinkedFriend: ; 29d11
+WaitForLinkedFriend:
ld a, [wPlayerLinkAction]
and a
jr z, .no_link_action
@@ -2288,9 +2239,8 @@ WaitForLinkedFriend: ; 29d11
xor a
ld [wScriptVar], a
ret
-; 29d92
-CheckLinkTimeout: ; 29d92
+CheckLinkTimeout:
ld a, $1
ld [wPlayerLinkAction], a
ld hl, wLinkTimeoutFrames
@@ -2310,9 +2260,8 @@ CheckLinkTimeout: ; 29d92
and a
ret nz
jp Link_ResetSerialRegistersAfterLinkClosure
-; 29dba
-Function29dba: ; 29dba
+Function29dba:
ld a, $5
ld [wPlayerLinkAction], a
ld hl, wLinkTimeoutFrames
@@ -2358,9 +2307,8 @@ Function29dba: ; 29dba
xor a
ld [hVBlank], a
ret
-; 29e0c
-Link_CheckCommunicationError: ; 29e0c
+Link_CheckCommunicationError:
xor a
ld [hSerialReceivedNewData], a
ld a, [wLinkTimeoutFrames]
@@ -2389,9 +2337,8 @@ Link_CheckCommunicationError: ; 29e0c
ld [hli], a
ld [hl], a
ret
-; 29e3b
-.CheckConnected: ; 29e3b
+.CheckConnected:
call WaitLinkTransfer
ld hl, wLinkTimeoutFrames
ld a, [hli]
@@ -2400,9 +2347,8 @@ Link_CheckCommunicationError: ; 29e0c
ld a, [hl]
inc a
ret
-; 29e47
-.AcknowledgeSerial: ; 29e47
+.AcknowledgeSerial:
ld b, 10
.loop
call DelayFrame
@@ -2410,9 +2356,8 @@ Link_CheckCommunicationError: ; 29e0c
dec b
jr nz, .loop
ret
-; 29e53
-.ConvertDW: ; 29e53
+.ConvertDW:
; [wLinkTimeoutFrames] = ((hl - $100) / 4) + $100
; = (hl / 4) + $c0
dec h
@@ -2426,9 +2371,8 @@ Link_CheckCommunicationError: ; 29e0c
ld a, l
ld [wLinkTimeoutFrames + 1], a
ret
-; 29e66
-TryQuickSave: ; 29e66
+TryQuickSave:
ld a, [wd265]
push af
farcall Link_SaveGame
@@ -2442,9 +2386,8 @@ TryQuickSave: ; 29e66
pop af
ld [wd265], a
ret
-; 29e82
-CheckBothSelectedSameRoom: ; 29e82
+CheckBothSelectedSameRoom:
ld a, [wd265]
call Link_EnsureSync
push af
@@ -2469,9 +2412,8 @@ CheckBothSelectedSameRoom: ; 29e82
xor a ; FALSE
ld [wScriptVar], a
ret
-; 29eaf
-TimeCapsule: ; 29eaf
+TimeCapsule:
ld a, LINK_TIMECAPSULE
ld [wLinkMode], a
call DisableSpriteUpdates
@@ -2480,9 +2422,8 @@ TimeCapsule: ; 29eaf
xor a
ld [hVBlank], a
ret
-; 29ec4
-TradeCenter: ; 29ec4
+TradeCenter:
ld a, LINK_TRADECENTER
ld [wLinkMode], a
call DisableSpriteUpdates
@@ -2491,9 +2432,8 @@ TradeCenter: ; 29ec4
xor a
ld [hVBlank], a
ret
-; 29ed9
-Colosseum: ; 29ed9
+Colosseum:
ld a, LINK_COLOSSEUM
ld [wLinkMode], a
call DisableSpriteUpdates
@@ -2502,24 +2442,21 @@ Colosseum: ; 29ed9
xor a
ld [hVBlank], a
ret
-; 29eee
-CloseLink: ; 29eee
+CloseLink:
xor a
ld [wLinkMode], a
ld c, 3
call DelayFrames
jp Link_ResetSerialRegistersAfterLinkClosure
-; 29efa
-FailedLinkToPast: ; 29efa
+FailedLinkToPast:
ld c, 40
call DelayFrames
ld a, $e
jp Link_EnsureSync
-; 29f04
-Link_ResetSerialRegistersAfterLinkClosure: ; 29f04
+Link_ResetSerialRegistersAfterLinkClosure:
ld c, 3
call DelayFrames
ld a, CONNECTION_NOT_ESTABLISHED
@@ -2530,9 +2467,8 @@ Link_ResetSerialRegistersAfterLinkClosure: ; 29f04
ld [hSerialReceive], a
ld [rSC], a
ret
-; 29f17
-Link_EnsureSync: ; 29f17
+Link_EnsureSync:
add $d0
ld [wPlayerLinkAction], a
ld [wcf57], a
@@ -2559,9 +2495,8 @@ Link_EnsureSync: ; 29f17
ld a, b
and $f
ret
-; 29f47
-CableClubCheckWhichChris: ; 29f47
+CableClubCheckWhichChris:
ld a, [hSerialConnectionStatus]
cp USING_EXTERNAL_CLOCK
ld a, TRUE
@@ -2571,11 +2506,9 @@ CableClubCheckWhichChris: ; 29f47
.yes
ld [wScriptVar], a
ret
-; 29f54
-Unreferenced_Gen1LinkCommsBorderGFX: ; 29f54
+Unreferenced_Gen1LinkCommsBorderGFX:
INCBIN "gfx/trade/unused_gen_1_border_tiles.2bpp"
-; 29fe4
Unreferenced_Function29fe4:
ld a, BANK(sPartyMail)