diff --git a/constants/item_data_constants.asm b/constants/item_data_constants.asm index 4f466d41..bd347153 100644 --- a/constants/item_data_constants.asm +++ b/constants/item_data_constants.asm @@ -58,6 +58,14 @@ DEF MAIL_MSG_LENGTH EQU $20 DEF MAILBOX_CAPACITY EQU 10 DEF MAIL_STRUCT_LENGTH EQU $2f ; mailmsg struct +; mail languages + const_def + const MAIL_LANG_ENGLISH + const MAIL_LANG_FRENCH + const MAIL_LANG_GERMAN + const MAIL_LANG_ITALIAN + const MAIL_LANG_SPANISH + ; held item effects const_def const HELD_NONE diff --git a/constants/serial_constants.asm b/constants/serial_constants.asm index 01ac3761..211f3d7e 100644 --- a/constants/serial_constants.asm +++ b/constants/serial_constants.asm @@ -29,15 +29,16 @@ DEF SERIAL_PATCH_LIST_PART_TERMINATOR EQU $ff ; used to replace SERIAL_NO_DATA_BYTE DEF SERIAL_PATCH_REPLACEMENT_BYTE EQU $ff -DEF SERIAL_PREAMBLE_LENGTH EQU 6 -DEF SERIAL_RN_PREAMBLE_LENGTH EQU 7 -DEF SERIAL_RNS_LENGTH EQU 10 +DEF SERIAL_PREAMBLE_LENGTH EQU 6 +DEF SERIAL_RN_PREAMBLE_LENGTH EQU 7 +DEF SERIAL_RNS_LENGTH EQU 10 DEF SERIAL_MAIL_PREAMBLE_BYTE EQU $20 -DEF SERIAL_MAIL_REPLACEMENT_BYTE EQU $21 DEF SERIAL_MAIL_PREAMBLE_LENGTH EQU 5 +; used to replace SERIAL_NO_DATA_BYTE +DEF SERIAL_MAIL_REPLACEMENT_BYTE EQU $21 ; timeout duration after exchanging a byte -DEF SERIAL_LINK_BYTE_TIMEOUT EQU $5000 +DEF SERIAL_LINK_BYTE_TIMEOUT EQU $5000 -DEF MAX_MYSTERY_GIFT_PARTNERS EQU 5 +DEF MAX_MYSTERY_GIFT_PARTNERS EQU 5 diff --git a/engine/link/link.asm b/engine/link/link.asm index 856d6aa5..711c0dfa 100644 --- a/engine/link/link.asm +++ b/engine/link/link.asm @@ -386,7 +386,7 @@ endc jr nz, .copy_mail_loop ld de, wLinkReceivedMail ld b, PARTY_LENGTH -.fix_mail_loop +.copy_author_loop push bc ld a, LOW(MAIL_MSG_LENGTH + 1) add e @@ -398,7 +398,7 @@ endc call CopyBytes pop bc dec b - jr nz, .fix_mail_loop + jr nz, .copy_author_loop ld de, wLinkReceivedMailEnd xor a ld [de], a @@ -834,7 +834,7 @@ Link_PrepPartyData_Gen2: ret nz ; Fill 5 bytes at wLinkPlayerMailPreamble with $20 - ld de, wLinkPlayerMailPreamble + ld de, wLinkPlayerMail ld a, SERIAL_MAIL_PREAMBLE_BYTE call Link_CopyMailPreamble @@ -852,6 +852,7 @@ Link_PrepPartyData_Gen2: pop bc dec b jr nz, .loop2 + ; Copy the mail data to wLinkPlayerMailMetadata ld hl, sPartyMail ld b, PARTY_LENGTH @@ -866,6 +867,7 @@ Link_PrepPartyData_Gen2: jr nz, .loop3 call CloseSRAM +; The SERIAL_NO_DATA_BYTE value isn't allowed anywhere in message text ld hl, wLinkPlayerMailMessages ld bc, (MAIL_MSG_LENGTH + 1) * PARTY_LENGTH .loop4 @@ -880,6 +882,7 @@ Link_PrepPartyData_Gen2: or c jr nz, .loop4 +; Calculate the patch offsets for the mail metadata ld hl, wLinkPlayerMailMetadata ld de, wLinkPlayerMailPatchSet ld b, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) * PARTY_LENGTH