From a51b1a2f1399798193e3d788d9f3fb8bb9f3ac5c Mon Sep 17 00:00:00 2001 From: Rangi Date: Thu, 29 Oct 2020 15:15:14 -0400 Subject: [PATCH] Port more pokegold link engine symbols, and name an unused WRAM byte --- engine/link/link.asm | 103 +++++++++++++++++++++++-------------- engine/link/link_trade.asm | 6 +-- wram.asm | 2 +- 3 files changed, 68 insertions(+), 43 deletions(-) diff --git a/engine/link/link.asm b/engine/link/link.asm index 490f7b9714a..7c8edddd2b9 100644 --- a/engine/link/link.asm +++ b/engine/link/link.asm @@ -101,9 +101,9 @@ Gen2ToGen1LinkComms: 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 @@ Gen2ToGen1LinkComms: .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 @@ Gen2ToGen2LinkComms: pop af ld [wOptions], a farcall LoadPokemonData - jp Function28b22 + jp ExitLinkCommunications .ready_to_trade ld de, MUSIC_ROUTE_30 @@ -833,7 +833,7 @@ Link_PrepPartyData_Gen2: ; 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 @@ Link_PrepPartyData_Gen2: 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 @@ Function28682: jr nz, .loop ret -Function2868a: +Link_ConvertPartyStruct1to2: push hl ld d, h ld e, l @@ -1247,7 +1248,7 @@ LinkTradeOTPartymonMenuLoop: .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 @@ LinkTradePartymonMenuLoop: .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 @@ LinkTradePartiesMenuMasterLoop: jp z, LinkTradePartymonMenuLoop ; PARTYMON jp LinkTradeOTPartymonMenuLoop ; OTPARTYMON -Function28926: +LinkTrade_TradeStatsMenu: call LoadTilemapToTempTilemap ld a, [wMenuCursorY] push af @@ -1427,12 +1428,12 @@ Function28926: 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 @@ Function28926: call PlaceString ld a, $1 ld [wPlayerLinkAction], a - farcall Function16d6ce + farcall PrintWaitingTextAndSyncAndExchangeNybble ld c, 100 call DelayFrames jp InitTradeMenuDisplay @@ -1499,7 +1500,7 @@ Function28926: text_far _LinkAbnormalMonText text_end -Function28ac9: +LinkTradeCheckCancel: ld a, [wMenuCursorY] cp 1 jp nz, LinkTradePartiesMenuMasterLoop @@ -1542,18 +1543,18 @@ Function28ade: 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 call GetSGBLayout call WaitBGMap2 xor a - ld [wcfbb], a + ld [wUnusedLinkCommunicationByte], a xor a ldh [rSB], a ldh [hSerialSend], a @@ -1563,15 +1564,18 @@ Function28b22: 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 @@ Function28b42: ; unreferenced .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 @@ LinkTrade: 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 @@ LinkTrade: 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 @@ LinkTrade: 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 @@ LinkTrade: 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 @@ LinkTrade: 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 @@ LinkTrade: 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,12 +1763,14 @@ LinkTrade: ld a, [hl] ld [wPlayerTrademonSpecies], a push af +; OT name ld a, [wCurTradePartyMon] ld hl, wPartyMonOT call SkipNames ld de, wPlayerTrademonOTName ld bc, NAME_LENGTH call CopyBytes +; ID ld hl, wPartyMon1ID ld a, [wCurTradePartyMon] call GetPartyLocation @@ -1766,6 +1778,7 @@ LinkTrade: ld [wPlayerTrademonID], a ld a, [hl] ld [wPlayerTrademonID + 1], a +; DVs ld hl, wPartyMon1DVs ld a, [wCurTradePartyMon] call GetPartyLocation @@ -1773,6 +1786,7 @@ LinkTrade: ld [wPlayerTrademonDVs], a ld a, [hl] ld [wPlayerTrademonDVs + 1], a +; caught data ld a, [wCurTradePartyMon] ld hl, wPartyMon1Species call GetPartyLocation @@ -1781,10 +1795,14 @@ LinkTrade: 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,12 +1810,14 @@ LinkTrade: add hl, bc ld a, [hl] ld [wOTTrademonSpecies], a +; OT name ld a, [wCurOTTradePartyMon] ld hl, wOTPartyMonOT call SkipNames ld de, wOTTrademonOTName ld bc, NAME_LENGTH call CopyBytes +; ID ld hl, wOTPartyMon1ID ld a, [wCurOTTradePartyMon] call GetPartyLocation @@ -1805,6 +1825,7 @@ LinkTrade: ld [wOTTrademonID], a ld a, [hl] ld [wOTTrademonID + 1], a +; DVs ld hl, wOTPartyMon1DVs ld a, [wCurOTTradePartyMon] call GetPartyLocation @@ -1812,6 +1833,7 @@ LinkTrade: ld [wOTTrademonDVs], a ld a, [hl] ld [wOTTrademonDVs + 1], a +; caught data ld a, [wCurOTTradePartyMon] ld hl, wOTPartyMon1Species call GetPartyLocation @@ -1820,6 +1842,7 @@ LinkTrade: farcall GetCaughtGender ld a, c ld [wOTTrademonCaughtData], a + ld a, [wCurTradePartyMon] ld [wCurPartyMon], a ld hl, wPartySpecies @@ -1828,6 +1851,7 @@ LinkTrade: add hl, bc ld a, [hl] ld [wCurTradePartyMon], a + xor a ; REMOVE_PARTY ld [wPokemonWithdrawDepositParameter], a callfar RemoveMonFromPartyOrBox @@ -1844,6 +1868,7 @@ LinkTrade: add hl, bc ld a, [hl] ld [wCurOTTradePartyMon], a + ld c, 100 call DelayFrames call ClearTilemap @@ -1935,7 +1960,7 @@ LinkTrade: 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 @@ LinkTrade: 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 @@ LinkAskTradeForText: text_far _LinkAskTradeForText text_end -String28ebd: +String_TradeCompleted: db "Trade completed!@" String_TooBadTheTradeWasCanceled: diff --git a/engine/link/link_trade.asm b/engine/link/link_trade.asm index add057241a3..4f4d3c5ce09 100644 --- a/engine/link/link_trade.asm +++ b/engine/link/link_trade.asm @@ -153,15 +153,15 @@ LinkTextbox: 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 diff --git a/wram.asm b/wram.asm index 7244bcaacd7..c0a31878658 100644 --- a/wram.asm +++ b/wram.asm @@ -1580,7 +1580,7 @@ wPredefTemp:: dw wPredefAddress:: dw wFarCallBCBuffer:: dw -wcfbb:: db +wUnusedLinkCommunicationByte:: db wGameTimerPaused:: ; bit 0: game timer paused