ref: a51b1a2f1399798193e3d788d9f3fb8bb9f3ac5c
parent: bcc0d633e948227e68da8a264d1533771a54b5c4
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Thu Oct 29 11:15:14 EDT 2020
Port more pokegold link engine symbols, and name an unused WRAM byte
--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -101,9 +101,9 @@
ld a, [hl]
pop hl
and a
- jp z, Function28b22
+ jp z, ExitLinkCommunications
cp $7
- jp nc, Function28b22
+ jp nc, ExitLinkCommunications
ld de, wLinkData
ld bc, $1a2
call Link_CopyOTData
@@ -163,7 +163,7 @@
.done_party
ld [de], a
ld hl, wTimeCapsulePlayerData
- call Function2868a
+ call Link_ConvertPartyStruct1to2
ld a, LOW(wOTPartyMonOT)
ld [wUnusedNamesPointer], a
ld a, HIGH(wOTPartyMonOT)
@@ -467,7 +467,7 @@
pop af
ld [wOptions], a
farcall LoadPokemonData
- jp Function28b22
+ jp ExitLinkCommunications
.ready_to_trade
ld de, MUSIC_ROUTE_30
@@ -833,7 +833,7 @@
; Fill 5 bytes at wc9f4 with $20
ld de, wc9f4
ld a, $20
- call Function28682
+ call Link_CopyMailPreamble
; Copy all the mail messages to wc9f9
ld a, BANK(sPartyMail)
@@ -934,7 +934,8 @@
ld [de], a
ret
-Function28682:
+Link_CopyMailPreamble:
+; fill 5 bytes with the value of a, starting at de
ld c, 5
.loop
ld [de], a
@@ -943,7 +944,7 @@
jr nz, .loop
ret
-Function2868a:
+Link_ConvertPartyStruct1to2:
push hl
ld d, h
ld e, l
@@ -1247,7 +1248,7 @@
.not_d_up
bit D_DOWN_F, a
jp z, LinkTradePartiesMenuMasterLoop
- jp Function28ac9
+ jp LinkTradeCheckCancel
LinkTrade_PlayerPartyMenu:
farcall InitMG_Mobile_LinkTradePalMap
@@ -1283,7 +1284,7 @@
.check_joypad
bit A_BUTTON_F, a
jr z, .not_a_button
- jp Function28926
+ jp LinkTrade_TradeStatsMenu
.not_a_button
bit D_DOWN_F, a
@@ -1329,7 +1330,7 @@
jp z, LinkTradePartymonMenuLoop ; PARTYMON
jp LinkTradeOTPartymonMenuLoop ; OTPARTYMON
-Function28926:
+LinkTrade_TradeStatsMenu:
call LoadTilemapToTempTilemap
ld a, [wMenuCursorY]
push af
@@ -1427,12 +1428,12 @@
dec a
ld [wCurTradePartyMon], a
ld [wPlayerLinkAction], a
- farcall Function16d6ce
+ farcall PrintWaitingTextAndSyncAndExchangeNybble
ld a, [wOtherPlayerLinkMode]
cp $f
jp z, InitTradeMenuDisplay
ld [wCurOTTradePartyMon], a
- call Function28b68
+ call LinkTradePlaceArrow
ld c, 100
call DelayFrames
farcall ValidateOTTrademon
@@ -1483,7 +1484,7 @@
call PlaceString
ld a, $1
ld [wPlayerLinkAction], a
- farcall Function16d6ce
+ farcall PrintWaitingTextAndSyncAndExchangeNybble
ld c, 100
call DelayFrames
jp InitTradeMenuDisplay
@@ -1499,7 +1500,7 @@
text_far _LinkAbnormalMonText
text_end
-Function28ac9:
+LinkTradeCheckCancel:
ld a, [wMenuCursorY]
cp 1
jp nz, LinkTradePartiesMenuMasterLoop
@@ -1542,11 +1543,11 @@
ldcoord_a 9, 17
ld a, $f
ld [wPlayerLinkAction], a
- farcall Function16d6ce
+ farcall PrintWaitingTextAndSyncAndExchangeNybble
ld a, [wOtherPlayerLinkMode]
cp $f
jr nz, .loop1
-Function28b22:
+ExitLinkCommunications:
call RotateThreePalettesRight
call ClearScreen
ld b, SCGB_DIPLOMA
@@ -1553,7 +1554,7 @@
call GetSGBLayout
call WaitBGMap2
xor a
- ld [wcfbb], a
+ ld [wUnusedLinkCommunicationByte], a
xor a
ldh [rSB], a
ldh [hSerialSend], a
@@ -1563,15 +1564,18 @@
ldh [rSC], a
ret
-Function28b42: ; unreferenced
+GSPlaceTradeScreenFooter: ; unreferenced
+; Fill the screen footer with pattern tile
hlcoord 0, 16
- ld a, "┘"
+ ld a, $7e
ld bc, 2 * SCREEN_WIDTH
call ByteFill
+; Clear out area for cancel string
hlcoord 1, 16
ld a, " "
ld bc, SCREEN_WIDTH - 2
call ByteFill
+; Place the string
hlcoord 2, 16
ld de, .CancelString
jp PlaceString
@@ -1579,7 +1583,8 @@
.CancelString:
db "CANCEL@"
-Function28b68:
+LinkTradePlaceArrow:
+; Indicates which pokemon the other player has selected to trade
ld a, [wOtherPlayerLinkMode]
hlcoord 6, 9
ld bc, SCREEN_WIDTH
@@ -1640,7 +1645,7 @@
ld b, 3
ld c, 7
call LinkTextboxAtHL
- ld de, String28eab
+ ld de, String_TradeCancel
hlcoord 12, 8
call PlaceString
ld a, 8
@@ -1668,12 +1673,12 @@
call WaitBGMap2
pop af
bit 1, a
- jr nz, .asm_28c33
+ jr nz, .canceled
ld a, [wMenuCursorY]
dec a
- jr z, .asm_28c54
+ jr z, .try_trade
-.asm_28c33
+.canceled
ld a, $1
ld [wPlayerLinkAction], a
hlcoord 0, 12
@@ -1683,16 +1688,17 @@
hlcoord 1, 14
ld de, String_TooBadTheTradeWasCanceled
call PlaceString
- farcall Function16d6ce
- jp Function28ea3
+ farcall PrintWaitingTextAndSyncAndExchangeNybble
+ jp InitTradeMenuDisplay_Delay
-.asm_28c54
+.try_trade
ld a, $2
ld [wPlayerLinkAction], a
- farcall Function16d6ce
+ farcall PrintWaitingTextAndSyncAndExchangeNybble
ld a, [wOtherPlayerLinkMode]
dec a
- jr nz, .asm_28c7b
+ jr nz, .do_trade
+; If we're here, the other player canceled the trade
hlcoord 0, 12
ld b, 4
ld c, 18
@@ -1700,9 +1706,9 @@
hlcoord 1, 14
ld de, String_TooBadTheTradeWasCanceled
call PlaceString
- jp Function28ea3
+ jp InitTradeMenuDisplay_Delay
-.asm_28c7b
+.do_trade
ld hl, sPartyMail
ld a, [wCurTradePartyMon]
ld bc, MAIL_STRUCT_LENGTH
@@ -1715,18 +1721,18 @@
add hl, bc
ld a, [wCurTradePartyMon]
ld c, a
-.asm_28c96
+.copy_mail
inc c
ld a, c
cp PARTY_LENGTH
- jr z, .asm_28ca6
+ jr z, .copy_player_data
push bc
ld bc, MAIL_STRUCT_LENGTH
call CopyBytes
pop bc
- jr .asm_28c96
+ jr .copy_mail
-.asm_28ca6
+.copy_player_data
ld hl, sPartyMail
ld a, [wPartyCount]
dec a
@@ -1741,10 +1747,14 @@
ld bc, MAIL_STRUCT_LENGTH
call CopyBytes
call CloseSRAM
+
+; Buffer player data
+; nickname
ld hl, wPlayerName
ld de, wPlayerTrademonSenderName
ld bc, NAME_LENGTH
call CopyBytes
+; species
ld a, [wCurTradePartyMon]
ld hl, wPartySpecies
ld b, 0
@@ -1753,6 +1763,7 @@
ld a, [hl]
ld [wPlayerTrademonSpecies], a
push af
+; OT name
ld a, [wCurTradePartyMon]
ld hl, wPartyMonOT
call SkipNames
@@ -1759,6 +1770,7 @@
ld de, wPlayerTrademonOTName
ld bc, NAME_LENGTH
call CopyBytes
+; ID
ld hl, wPartyMon1ID
ld a, [wCurTradePartyMon]
call GetPartyLocation
@@ -1766,6 +1778,7 @@
ld [wPlayerTrademonID], a
ld a, [hl]
ld [wPlayerTrademonID + 1], a
+; DVs
ld hl, wPartyMon1DVs
ld a, [wCurTradePartyMon]
call GetPartyLocation
@@ -1773,6 +1786,7 @@
ld [wPlayerTrademonDVs], a
ld a, [hl]
ld [wPlayerTrademonDVs + 1], a
+; caught data
ld a, [wCurTradePartyMon]
ld hl, wPartyMon1Species
call GetPartyLocation
@@ -1781,10 +1795,14 @@
farcall GetCaughtGender
ld a, c
ld [wPlayerTrademonCaughtData], a
+
+; Buffer other player data
+; nickname
ld hl, wOTPlayerName
ld de, wOTTrademonSenderName
ld bc, NAME_LENGTH
call CopyBytes
+; species
ld a, [wCurOTTradePartyMon]
ld hl, wOTPartySpecies
ld b, 0
@@ -1792,6 +1810,7 @@
add hl, bc
ld a, [hl]
ld [wOTTrademonSpecies], a
+; OT name
ld a, [wCurOTTradePartyMon]
ld hl, wOTPartyMonOT
call SkipNames
@@ -1798,6 +1817,7 @@
ld de, wOTTrademonOTName
ld bc, NAME_LENGTH
call CopyBytes
+; ID
ld hl, wOTPartyMon1ID
ld a, [wCurOTTradePartyMon]
call GetPartyLocation
@@ -1805,6 +1825,7 @@
ld [wOTTrademonID], a
ld a, [hl]
ld [wOTTrademonID + 1], a
+; DVs
ld hl, wOTPartyMon1DVs
ld a, [wCurOTTradePartyMon]
call GetPartyLocation
@@ -1812,6 +1833,7 @@
ld [wOTTrademonDVs], a
ld a, [hl]
ld [wOTTrademonDVs + 1], a
+; caught data
ld a, [wCurOTTradePartyMon]
ld hl, wOTPartyMon1Species
call GetPartyLocation
@@ -1820,6 +1842,7 @@
farcall GetCaughtGender
ld a, c
ld [wOTTrademonCaughtData], a
+
ld a, [wCurTradePartyMon]
ld [wCurPartyMon], a
ld hl, wPartySpecies
@@ -1828,6 +1851,7 @@
add hl, bc
ld a, [hl]
ld [wCurTradePartyMon], a
+
xor a ; REMOVE_PARTY
ld [wPokemonWithdrawDepositParameter], a
callfar RemoveMonFromPartyOrBox
@@ -1844,6 +1868,7 @@
add hl, bc
ld a, [hl]
ld [wCurOTTradePartyMon], a
+
ld c, 100
call DelayFrames
call ClearTilemap
@@ -1935,7 +1960,7 @@
ld c, 18
call LinkTextboxAtHL
hlcoord 1, 14
- ld de, String28ebd
+ ld de, String_TradeCompleted
call PlaceString
farcall Link_WaitBGMap
ld c, 50
@@ -1945,12 +1970,12 @@
jp z, Gen2ToGen1LinkComms
jp Gen2ToGen2LinkComms
-Function28ea3:
+InitTradeMenuDisplay_Delay:
ld c, 100
call DelayFrames
jp InitTradeMenuDisplay
-String28eab:
+String_TradeCancel:
db "TRADE"
next "CANCEL@"
@@ -1958,7 +1983,7 @@
text_far _LinkAskTradeForText
text_end
-String28ebd:
+String_TradeCompleted:
db "Trade completed!@"
String_TooBadTheTradeWasCanceled:
--- a/engine/link/link_trade.asm
+++ b/engine/link/link_trade.asm
@@ -153,15 +153,15 @@
call _LinkTextbox
ret
-Function16d6ce:
+PrintWaitingTextAndSyncAndExchangeNybble:
call LoadStandardMenuHeader
- call Function16d6e1
+ call .PrintWaitingText
farcall WaitLinkTransfer
call Call_ExitMenu
call WaitBGMap2
ret
-Function16d6e1:
+.PrintWaitingText:
hlcoord 4, 10
ld b, 1
ld c, 10
--- a/wram.asm
+++ b/wram.asm
@@ -1580,7 +1580,7 @@
wPredefAddress:: dw
wFarCallBCBuffer:: dw
-wcfbb:: db
+wUnusedLinkCommunicationByte:: db
wGameTimerPaused::
; bit 0: game timer paused