diff options
Diffstat (limited to 'engine/link/link.asm')
-rw-r--r-- | engine/link/link.asm | 145 |
1 files changed, 73 insertions, 72 deletions
diff --git a/engine/link/link.asm b/engine/link/link.asm index 6784dde8..90dda4b9 100644 --- a/engine/link/link.asm +++ b/engine/link/link.asm @@ -80,14 +80,14 @@ Gen2ToGen1LinkComms: ld [de], a ld hl, wLinkData - ld de, wOTPlayerName - ld bc, $1a8 + ld de, wOTPartyData + ld bc, SERIAL_PREAMBLE_LENGTH + NAME_LENGTH + 1 + PARTY_LENGTH + 1 + (REDMON_STRUCT_LENGTH + NAME_LENGTH * 2) * PARTY_LENGTH + 3 call Serial_ExchangeBytes ld a, SERIAL_NO_DATA_BYTE ld [de], a - ld hl, wc508 - ld de, wTrademons + ld hl, wPlayerPatchLists + ld de, wOTPatchLists ld bc, 200 call Serial_ExchangeBytes @@ -98,7 +98,7 @@ Gen2ToGen1LinkComms: call Link_CopyRandomNumbers - ld hl, wOTPlayerName + ld hl, wOTPartyData call Link_FindFirstNonControlCharacter_SkipZero push hl ld bc, NAME_LENGTH @@ -111,11 +111,11 @@ Gen2ToGen1LinkComms: jp nc, ExitLinkCommunications ld de, wLinkData - ld bc, $1a2 + ld bc, NAME_LENGTH + 1 + PARTY_LENGTH + 1 + (REDMON_STRUCT_LENGTH + NAME_LENGTH * 2) * PARTY_LENGTH + 3 call Link_CopyOTData - ld de, wPlayerTrademon - ld hl, wTimeCapsulePlayerData + ld de, wOTPatchLists + ld hl, wLinkPatchList1 ld c, 2 .loop ld a, [de] @@ -141,7 +141,7 @@ Gen2ToGen1LinkComms: jr .loop .next - ld hl, wc80f + ld hl, wLinkPatchList2 dec c jr nz, .loop @@ -154,6 +154,7 @@ Gen2ToGen1LinkComms: ld a, [hli] ld [de], a inc de + .party_loop ld a, [hli] cp -1 @@ -236,23 +237,23 @@ Gen2ToGen2LinkComms: ld [de], a ld hl, wLinkData - ld de, wOTPlayerName - ld bc, $1c2 + ld de, wOTPartyData + ld bc, SERIAL_PREAMBLE_LENGTH + NAME_LENGTH + 1 + PARTY_LENGTH + 1 + 2 + (PARTYMON_STRUCT_LENGTH + NAME_LENGTH * 2) * PARTY_LENGTH + 3 call Serial_ExchangeBytes ld a, SERIAL_NO_DATA_BYTE ld [de], a - ld hl, wc508 - ld de, wTrademons + ld hl, wPlayerPatchLists + ld de, wOTPatchLists ld bc, 200 call Serial_ExchangeBytes ld a, [wLinkMode] cp LINK_TRADECENTER jr nz, .not_trading - ld hl, wc8f4 - ld de, wca84 - ld bc, $186 + ld hl, wLinkPlayerMail + ld de, wLinkOTMail + ld bc, wLinkPlayerMailEnd - wLinkPlayerMail call ExchangeBytes .not_trading @@ -265,14 +266,14 @@ Gen2ToGen2LinkComms: call Link_CopyRandomNumbers - ld hl, wOTPlayerName + ld hl, wOTPartyData call Link_FindFirstNonControlCharacter_SkipZero ld de, wLinkData - ld bc, $1b9 + ld bc, NAME_LENGTH + 1 + PARTY_LENGTH + 1 + 2 + (PARTYMON_STRUCT_LENGTH + NAME_LENGTH * 2) * PARTY_LENGTH call Link_CopyOTData ld de, wPlayerTrademon - ld hl, wLinkPlayerData + ld hl, wLinkPatchList1 ld c, 2 .loop1 ld a, [de] @@ -298,33 +299,33 @@ Gen2ToGen2LinkComms: jr .loop1 .next1 - ld hl, wc80f + ld hl, wLinkPatchList2 dec c jr nz, .loop1 ld a, [wLinkMode] cp LINK_TRADECENTER jr nz, .skip_mail - ld hl, wca84 + ld hl, wLinkOTMail .loop2 ld a, [hli] - cp MAIL_MSG_LENGTH + cp SERIAL_MAIL_PREAMBLE_BYTE jr nz, .loop2 .loop3 ld a, [hli] cp SERIAL_NO_DATA_BYTE jr z, .loop3 - cp MAIL_MSG_LENGTH + cp SERIAL_MAIL_PREAMBLE_BYTE jr z, .loop3 dec hl - ld de, wca84 - ld bc, $190 ; 400 + ld de, wLinkOTMail + ld bc, wLinkDataEnd - wLinkOTMail ; should be wLinkOTMailEnd - wLinkOTMail call CopyBytes - ld hl, wca84 - ld bc, $c6 ; 198 + ld hl, wLinkOTMail + ld bc, (MAIL_MSG_LENGTH + 1) * PARTY_LENGTH .loop4 ld a, [hl] - cp MAIL_MSG_LENGTH + 1 + cp SERIAL_MAIL_REPLACEMENT_BYTE jr nz, .okay1 ld [hl], SERIAL_NO_DATA_BYTE .okay1 @@ -333,13 +334,13 @@ Gen2ToGen2LinkComms: ld a, b or c jr nz, .loop4 - ld de, wcb9e + ld de, wOTPlayerMailPatchSet .loop5 ld a, [de] inc de cp SERIAL_PATCH_LIST_PART_TERMINATOR jr z, .start_copying_mail - ld hl, wcb4a + ld hl, wLinkOTMailMetadata dec a ld b, 0 ld c, a @@ -348,8 +349,8 @@ Gen2ToGen2LinkComms: jr .loop5 .start_copying_mail - ld hl, wca84 - ld de, wc8f4 + ld hl, wLinkOTMail + ld de, wLinkReceivedMail ld b, PARTY_LENGTH .copy_mail_loop push bc @@ -364,7 +365,7 @@ Gen2ToGen2LinkComms: pop bc dec b jr nz, .copy_mail_loop - ld de, wc8f4 + ld de, wLinkReceivedMail ld b, PARTY_LENGTH .fix_mail_loop push bc @@ -379,7 +380,7 @@ Gen2ToGen2LinkComms: pop bc dec b jr nz, .fix_mail_loop - ld de, wca0e + ld de, wLinkReceivedMailEnd xor a ld [de], a @@ -546,7 +547,7 @@ FixDataForLinkTransfer: dec b jr nz, .rn_loop - ld hl, wc508 + ld hl, wPlayerPatchLists ld a, SERIAL_PREAMBLE_BYTE ld [hli], a ld [hli], a @@ -559,13 +560,13 @@ FixDataForLinkTransfer: dec b jr nz, .loop1 - ld hl, wTimeCapsulePlayerData - 1 + PARTY_LENGTH - ld de, wc512 + ld hl, (wLinkData + SERIAL_PREAMBLE_LENGTH + NAME_LENGTH + 1 + PARTY_LENGTH + 1) - 1 + ld de, wPlayerPatchLists + 10 ; ??? lb bc, 0, 0 .loop2 inc c ld a, c - cp SERIAL_PREAMBLE_BYTE + cp SERIAL_PATCH_LIST_LENGTH + 1 jr z, .next1 ld a, b dec a @@ -573,9 +574,9 @@ FixDataForLinkTransfer: push bc ld a, [wLinkMode] cp LINK_TIMECAPSULE - ld b, $d + ld b, REDMON_STRUCT_LENGTH * PARTY_LENGTH - SERIAL_PATCH_LIST_LENGTH + 1 jr z, .got_value - ld b, $27 + ld b, 2 + PARTYMON_STRUCT_LENGTH * PARTY_LENGTH - SERIAL_PATCH_LIST_LENGTH + 1 .got_value ld a, c cp b @@ -589,7 +590,7 @@ FixDataForLinkTransfer: ld a, c ld [de], a inc de - ld [hl], SERIAL_PATCH_LIST_PART_TERMINATOR + ld [hl], SERIAL_PATCH_REPLACEMENT_BYTE jr .loop2 .next1 @@ -813,12 +814,12 @@ Link_PrepPartyData_Gen2: cp LINK_TRADECENTER ret nz -; Fill 5 bytes at wc8f4 with $20 - ld de, wc8f4 - ld a, $20 +; Fill 5 bytes at wLinkPlayerMailPreamble with $20 + ld de, wLinkPlayerMailPreamble + ld a, SERIAL_MAIL_PREAMBLE_BYTE call Link_CopyMailPreamble -; Copy all the mail messages to wc8f9 +; Copy all the mail messages to wLinkPlayerMailMessages ld a, BANK(sPartyMail) call OpenSRAM ld hl, sPartyMail @@ -827,32 +828,32 @@ Link_PrepPartyData_Gen2: push bc ld bc, MAIL_MSG_LENGTH + 1 call CopyBytes - ld bc, sPartyMon1MailEnd - sPartyMon1MailAuthor + ld bc, MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1) add hl, bc pop bc dec b jr nz, .loop2 -; Copy the mail data to wc9bf +; Copy the mail data to wLinkPlayerMailMetadata ld hl, sPartyMail ld b, PARTY_LENGTH .loop3 push bc ld bc, MAIL_MSG_LENGTH + 1 add hl, bc - ld bc, sPartyMon1MailEnd - sPartyMon1MailAuthor + ld bc, MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1) call CopyBytes pop bc dec b jr nz, .loop3 call CloseSRAM - ld hl, wc8f9 - ld bc, PARTY_LENGTH * (sPartyMon1MailAuthor - sPartyMon1Mail) + ld hl, wLinkPlayerMailMessages + ld bc, (MAIL_MSG_LENGTH + 1) * PARTY_LENGTH .loop4 ld a, [hl] cp SERIAL_NO_DATA_BYTE jr nz, .skip2 - ld [hl], sPartyMon1MailAuthor - sPartyMon1Mail + ld [hl], SERIAL_MAIL_REPLACEMENT_BYTE .skip2 inc hl dec bc @@ -860,16 +861,16 @@ Link_PrepPartyData_Gen2: or c jr nz, .loop4 - ld hl, wc9bf - ld de, wca13 - ld b, PARTY_LENGTH * (sPartyMon1MailEnd - sPartyMon1MailAuthor) - ld c, $0 + ld hl, wLinkPlayerMailMetadata + ld de, wLinkPlayerMailPatchSet + ld b, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) * PARTY_LENGTH + ld c, 0 .loop5 inc c ld a, [hl] cp SERIAL_NO_DATA_BYTE jr nz, .skip3 - ld [hl], SERIAL_PATCH_LIST_PART_TERMINATOR + ld [hl], SERIAL_PATCH_REPLACEMENT_BYTE ld a, c ld [de], a inc de @@ -884,7 +885,7 @@ Link_PrepPartyData_Gen2: Link_CopyMailPreamble: ; fill 5 bytes with the value of a, starting at de - ld c, 5 + ld c, SERIAL_MAIL_PREAMBLE_LENGTH .loop ld [de], a inc de @@ -897,7 +898,7 @@ Link_ConvertPartyStruct1to2: ld d, h ld e, l ld bc, wLinkOTPartyMonTypes - ld hl, wcae8 + ld hl, wCurLinkOTPartyMonTypePtr ld a, c ld [hli], a ld [hl], b @@ -947,7 +948,7 @@ Link_ConvertPartyStruct1to2: ld a, [de] inc de ld [hl], a - ld hl, wcae8 + ld hl, wCurLinkOTPartyMonTypePtr ld a, [hli] ld h, [hl] ld l, a @@ -958,9 +959,9 @@ Link_ConvertPartyStruct1to2: ld [hli], a inc de ld a, l - ld [wcae8], a + ld [wCurLinkOTPartyMonTypePtr], a ld a, h - ld [wcae8 + 1], a + ld [wCurLinkOTPartyMonTypePtr + 1], a push bc ld hl, MON_ITEM add hl, bc @@ -1360,7 +1361,7 @@ LinkTrade_TradeStatsMenu: farcall CheckAnyOtherAliveMonsForTrade jp nc, LinkTrade xor a - ld [wce57], a + ld [wUnusedLinkAction], a ld [wOtherPlayerLinkAction], a hlcoord 0, 12 ld b, 4 @@ -1373,7 +1374,7 @@ LinkTrade_TradeStatsMenu: .abnormal xor a - ld [wce57], a + ld [wUnusedLinkAction], a ld [wOtherPlayerLinkAction], a ld a, [wCurOTTradePartyMon] ld hl, wOTPartySpecies @@ -1512,7 +1513,7 @@ LinkMonStatsScreen: LinkTrade: xor a - ld [wce57], a + ld [wUnusedLinkAction], a ld [wOtherPlayerLinkAction], a hlcoord 0, 12 ld b, 4 @@ -1638,7 +1639,7 @@ LinkTrade: ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl - ld hl, wc8f4 + ld hl, wLinkPlayerMail ld a, [wCurOTTradePartyMon] ld bc, MAIL_STRUCT_LENGTH call AddNTimes @@ -2251,7 +2252,7 @@ Link_CheckCommunicationError: xor a ldh [hSerialReceivedNewData], a call WaitLinkTransfer - + ld hl, wLinkTimeoutFrames ld a, [hli] inc a @@ -2259,23 +2260,23 @@ Link_CheckCommunicationError: ld a, [hl] inc a jr nz, .load_true - + ld b, 10 .loop call DelayFrame call LinkDataReceived dec b jr nz, .loop - + xor a ; FALSE jr .done - + .load_true ld a, TRUE - + .done ld [wScriptVar], a - + ld hl, wLinkTimeoutFrames xor a ld [hli], a @@ -2379,7 +2380,7 @@ Link_ResetSerialRegistersAfterLinkClosure: Link_EnsureSync: add $d0 ld [wPlayerLinkAction], a - ld [wce57], a + ld [wUnusedLinkAction], a ld a, $2 ldh [hVBlank], a call DelayFrame |