diff options
author | red031000 <rubenru09@aol.com> | 2020-08-31 14:33:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-31 14:33:17 +0100 |
commit | 0a880566f5889cdeb6fa3f96f5916c39dbb16b38 (patch) | |
tree | b8c7ad379c2e7bdbec6d9c7e4f9021f73243f302 | |
parent | 656e4a2fee9ff86d678d6a7477611bfaca5171d4 (diff) | |
parent | 3adc93018bf3deabde775905169c2b87d0560bd9 (diff) |
Merge pull request #274 from PikalaxALT/pikalax_work
Decompile mail_message.c
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02013724.s | 427 | ||||
-rw-r--r-- | arm9/asm/unk_020139D8.s | 4 | ||||
-rw-r--r-- | arm9/asm/unk_02026CD0.s | 8 | ||||
-rw-r--r-- | arm9/asm/unk_0202A1E0.s | 10 | ||||
-rw-r--r-- | arm9/asm/unk_0202E29C.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02035068.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_020520AC.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_02052EE8.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02085338.s | 8 | ||||
-rw-r--r-- | arm9/asm/unk_020854E0.s | 8 | ||||
-rw-r--r-- | arm9/asm/unk_0208A338.s | 10 | ||||
-rw-r--r-- | arm9/global.inc | 34 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021E2B80.s | 10 | ||||
-rw-r--r-- | arm9/modules/11/asm/module_11_thumb2.s | 4 | ||||
-rw-r--r-- | arm9/modules/15/asm/module_15.s | 30 | ||||
-rw-r--r-- | arm9/modules/51/asm/module_51.s | 8 | ||||
-rw-r--r-- | arm9/modules/61/asm/module_61.s | 6 | ||||
-rw-r--r-- | arm9/modules/74/asm/module_74.s | 2 | ||||
-rw-r--r-- | arm9/src/mail.c | 16 | ||||
-rw-r--r-- | arm9/src/mail_message.c | 201 | ||||
-rw-r--r-- | arm9/src/msgdata.c | 3 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 1 | ||||
-rw-r--r-- | include/mail.h | 11 | ||||
-rw-r--r-- | include/mail_message.h | 30 | ||||
-rw-r--r-- | include/msgdata.h | 3 | ||||
-rw-r--r-- | include/proto.h | 2 | ||||
-rw-r--r-- | include/script_buffers.h | 3 |
28 files changed, 332 insertions, 527 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 4459fd8c..29b8e407 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -37,7 +37,7 @@ Static arm9 Object unk_0201137C.o Object unk_02011744.o Object unk_02012CC8.o - Object unk_02013724.o + Object mail_message.o Object unk_020139D8.o Object unk_02013CD4.o Object unk_020142EC.o diff --git a/arm9/asm/unk_02013724.s b/arm9/asm/unk_02013724.s deleted file mode 100644 index b36fa660..00000000 --- a/arm9/asm/unk_02013724.s +++ /dev/null @@ -1,427 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020ED54C -UNK_020ED54C: ; 0x020ED54C - .byte 0x8D, 0x01, 0x8F, 0x01, 0x8B, 0x01, 0x8C, 0x01, 0x8E, 0x01 - - .global UNK_020ED556 -UNK_020ED556: ; 0x020ED556 - .byte 0x00 - - .global UNK_020ED557 -UNK_020ED557: ; 0x020ED557 - .byte 0x00 - - .global UNK_020ED558 -UNK_020ED558: ; 0x020ED558 - .byte 0x84, 0x01 - - .global UNK_020ED55A -UNK_020ED55A: ; 0x020ED55A - .byte 0x07, 0x00 - - .global UNK_020ED55C -UNK_020ED55C: ; 0x020ED55C - .byte 0xFF, 0xFF - - .global UNK_020ED55E -UNK_020ED55E: ; 0x020ED55E - .byte 0x00, 0x00, 0x01, 0x00, 0x84, 0x01, 0x21, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x88, 0x01 - .byte 0x0A, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x04, 0x84, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00 - - .text - - thumb_func_start FUN_02013724 -FUN_02013724: ; 0x02013724 - ldr r1, _02013738 ; =0x0000FFFF - mov r2, #0x0 - strh r1, [r0, #0x0] -_0201372A: - add r2, r2, #0x1 - strh r1, [r0, #0x4] - add r0, r0, #0x2 - cmp r2, #0x2 - blt _0201372A - bx lr - nop -_02013738: .word 0x0000FFFF - - thumb_func_start FUN_0201373C -FUN_0201373C: ; 0x0201373C - strh r1, [r0, #0x0] - mov r2, #0x0 - ldr r1, _02013750 ; =0x0000FFFF - strh r2, [r0, #0x2] -_02013744: - add r2, r2, #0x1 - strh r1, [r0, #0x4] - add r0, r0, #0x2 - cmp r2, #0x2 - blt _02013744 - bx lr - .balign 4 -_02013750: .word 0x0000FFFF - - thumb_func_start FUN_02013754 -FUN_02013754: ; 0x02013754 - push {r4, lr} - mov r1, #0x4 - add r4, r0, #0x0 - bl FUN_0201373C - mov r0, #0x5 - strh r0, [r4, #0x2] - pop {r4, pc} - - thumb_func_start FUN_02013764 -FUN_02013764: ; 0x02013764 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - cmp r6, #0x4 - blo _02013772 - bl ErrorHandling -_02013772: - cmp r6, #0x4 - bhs _020137B8 - mov r0, #0xa - add r4, r6, #0x0 - mul r4, r0 - ldr r1, _020137BC ; =UNK_020ED556 - add r0, r5, #0x0 - ldrb r1, [r1, r4] - bl FUN_0201373C - ldr r0, _020137C0 ; =UNK_020ED557 - mov r1, #0x0 - ldrb r0, [r0, r4] - mvn r1, r1 - strh r0, [r5, #0x2] - ldr r0, _020137C4 ; =UNK_020ED558 - ldrsh r0, [r0, r4] - cmp r0, r1 - beq _020137A2 - ldr r1, _020137C8 ; =UNK_020ED55A - ldrh r1, [r1, r4] - bl FUN_02013A9C - strh r0, [r5, #0x4] -_020137A2: - ldr r0, _020137CC ; =UNK_020ED55C - mov r1, #0x0 - ldrsh r0, [r0, r4] - mvn r1, r1 - cmp r0, r1 - beq _020137B8 - ldr r1, _020137D0 ; =UNK_020ED55E - ldrh r1, [r1, r4] - bl FUN_02013A9C - strh r0, [r5, #0x6] -_020137B8: - pop {r4-r6, pc} - nop -_020137BC: .word UNK_020ED556 -_020137C0: .word UNK_020ED557 -_020137C4: .word UNK_020ED558 -_020137C8: .word UNK_020ED55A -_020137CC: .word UNK_020ED55C -_020137D0: .word UNK_020ED55E - - thumb_func_start FUN_020137D4 -FUN_020137D4: ; 0x020137D4 - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - add r0, r1, #0x0 - str r1, [sp, #0x4] - bl ScrStrBufs_new - ldr r5, [sp, #0x0] - ldr r7, _02013838 ; =0x0000FFFF - add r6, r0, #0x0 - mov r4, #0x0 -_020137EA: - ldrh r2, [r5, #0x4] - cmp r2, r7 - beq _02013800 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl FUN_0200B518 - add r4, r4, #0x1 - add r5, r5, #0x2 - cmp r4, #0x2 - blt _020137EA -_02013800: - ldr r2, [sp, #0x0] - mov r0, #0x1 - ldrh r2, [r2, #0x0] - mov r1, #0x1a - lsl r3, r2, #0x1 - ldr r2, _0201383C ; =UNK_020ED54C - ldrh r2, [r2, r3] - ldr r3, [sp, #0x4] - bl NewMsgDataFromNarc - add r5, r0, #0x0 - ldr r2, [sp, #0x0] - ldr r3, [sp, #0x4] - ldrh r2, [r2, #0x2] - add r0, r6, #0x0 - add r1, r5, #0x0 - bl ReadMsgData_ExpandPlaceholders - add r4, r0, #0x0 - add r0, r5, #0x0 - bl DestroyMsgData - add r0, r6, #0x0 - bl ScrStrBufs_delete - add r0, r4, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02013838: .word 0x0000FFFF -_0201383C: .word UNK_020ED54C - - thumb_func_start FUN_02013840 -FUN_02013840: ; 0x02013840 - push {r4, lr} - add r4, r0, #0x0 - add r3, r1, #0x0 - ldrh r1, [r4, #0x0] - mov r0, #0x1a - lsl r2, r1, #0x1 - ldr r1, _02013858 ; =UNK_020ED54C - ldrh r1, [r1, r2] - ldrh r2, [r4, #0x2] - bl ReadMsgData_NewNarc_NewString - pop {r4, pc} - .balign 4 -_02013858: .word UNK_020ED54C - - thumb_func_start FUN_0201385C -FUN_0201385C: ; 0x0201385C - ldrh r1, [r0, #0x0] - ldr r0, _0201386C ; =0x0000FFFF - cmp r1, r0 - beq _02013868 - mov r0, #0x1 - bx lr -_02013868: - mov r0, #0x0 - bx lr - .balign 4 -_0201386C: .word 0x0000FFFF - - thumb_func_start FUN_02013870 -FUN_02013870: ; 0x02013870 - push {r4, lr} - add r4, r0, #0x0 - ldrh r0, [r4, #0x0] - ldrh r1, [r4, #0x2] - bl FUN_020138A0 - mov r3, #0x0 - cmp r0, #0x0 - bls _02013896 - ldr r1, _0201389C ; =0x0000FFFF -_02013884: - ldrh r2, [r4, #0x4] - cmp r2, r1 - bne _0201388E - mov r0, #0x0 - pop {r4, pc} -_0201388E: - add r3, r3, #0x1 - add r4, r4, #0x2 - cmp r3, r0 - blo _02013884 -_02013896: - mov r0, #0x1 - pop {r4, pc} - nop -_0201389C: .word 0x0000FFFF - - thumb_func_start FUN_020138A0 -FUN_020138A0: ; 0x020138A0 - push {r3-r7, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x5 - blo _020138AE - bl ErrorHandling -_020138AE: - add r0, r5, #0x0 - bl FUN_02013974 - cmp r4, r0 - blo _020138BC - bl ErrorHandling -_020138BC: - ldr r1, _02013910 ; =UNK_020ED54C - lsl r2, r5, #0x1 - ldrh r1, [r1, r2] - mov r0, #0x1a - add r2, r4, #0x0 - mov r3, #0x0 - bl ReadMsgData_NewNarc_NewString - str r0, [sp, #0x0] - bl String_c_str - add r4, r0, #0x0 - ldrh r1, [r4, #0x0] - ldr r0, _02013914 ; =0x0000FFFF - mov r5, #0x0 - cmp r1, r0 - beq _02013904 - add r7, r0, #0x0 - sub r6, r0, #0x1 -_020138E2: - cmp r1, r6 - bne _020138FC - add r0, r4, #0x0 - bl MsgArray_ControlCodeIsStrVar - cmp r0, #0x0 - beq _020138F2 - add r5, r5, #0x1 -_020138F2: - add r0, r4, #0x0 - bl MsgArray_SkipControlCode - add r4, r0, #0x0 - b _020138FE -_020138FC: - add r4, r4, #0x2 -_020138FE: - ldrh r1, [r4, #0x0] - cmp r1, r7 - bne _020138E2 -_02013904: - ldr r0, [sp, #0x0] - bl String_dtor - add r0, r5, #0x0 - pop {r3-r7, pc} - nop -_02013910: .word UNK_020ED54C -_02013914: .word 0x0000FFFF - - thumb_func_start FUN_02013918 -FUN_02013918: ; 0x02013918 - lsl r1, r1, #0x1 - add r0, r0, r1 - ldrh r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_02013920 -FUN_02013920: ; 0x02013920 - ldrh r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_02013924 -FUN_02013924: ; 0x02013924 - ldrh r0, [r0, #0x2] - bx lr - - thumb_func_start FUN_02013928 -FUN_02013928: ; 0x02013928 - push {r3-r4} - ldrh r3, [r0, #0x0] - ldrh r2, [r1, #0x0] - cmp r3, r2 - bne _0201393A - ldrh r3, [r0, #0x2] - ldrh r2, [r1, #0x2] - cmp r3, r2 - beq _02013940 -_0201393A: - mov r0, #0x0 - pop {r3-r4} - bx lr -_02013940: - mov r4, #0x0 -_02013942: - ldrh r3, [r0, #0x4] - ldrh r2, [r1, #0x4] - cmp r3, r2 - beq _02013950 - mov r0, #0x0 - pop {r3-r4} - bx lr -_02013950: - add r4, r4, #0x1 - add r1, r1, #0x2 - add r0, r0, #0x2 - cmp r4, #0x2 - blt _02013942 - mov r0, #0x1 - pop {r3-r4} - bx lr - - thumb_func_start FUN_02013960 -FUN_02013960: ; 0x02013960 - ldrh r2, [r1, #0x0] - strh r2, [r0, #0x0] - ldrh r2, [r1, #0x2] - strh r2, [r0, #0x2] - ldrh r2, [r1, #0x4] - strh r2, [r0, #0x4] - ldrh r1, [r1, #0x6] - strh r1, [r0, #0x6] - bx lr - .balign 4 - - thumb_func_start FUN_02013974 -FUN_02013974: ; 0x02013974 - cmp r0, #0x5 - bhs _0201397C - mov r0, #0x14 - bx lr -_0201397C: - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02013980 -FUN_02013980: ; 0x02013980 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r6, r2, #0x0 - cmp r4, #0x5 - blo _02013990 - bl ErrorHandling -_02013990: - strh r4, [r5, #0x0] - strh r6, [r5, #0x2] - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02013998 -FUN_02013998: ; 0x02013998 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r6, r2, #0x0 - cmp r4, #0x2 - blo _020139A8 - bl ErrorHandling -_020139A8: - lsl r0, r4, #0x1 - add r0, r5, r0 - strh r6, [r0, #0x4] - pop {r4-r6, pc} - - thumb_func_start FUN_020139B0 -FUN_020139B0: ; 0x020139B0 - push {r4, lr} - add r4, r0, #0x0 - ldrh r0, [r4, #0x0] - ldrh r1, [r4, #0x2] - bl FUN_020138A0 - cmp r0, #0x2 - bhs _020139D0 - lsl r1, r0, #0x1 - add r2, r4, r1 - ldr r1, _020139D4 ; =0x0000FFFF -_020139C6: - add r0, r0, #0x1 - strh r1, [r2, #0x4] - add r2, r2, #0x2 - cmp r0, #0x2 - blo _020139C6 -_020139D0: - pop {r4, pc} - nop -_020139D4: .word 0x0000FFFF diff --git a/arm9/asm/unk_020139D8.s b/arm9/asm/unk_020139D8.s index afc8a077..d03cc66a 100644 --- a/arm9/asm/unk_020139D8.s +++ b/arm9/asm/unk_020139D8.s @@ -61,8 +61,8 @@ UNK_020ED5B5: ; 0x020ED5B5 .global UNK_020ED5C0 UNK_020ED5C0: ; 0x020ED5C0 - .byte 0x6A, 0x01, 0x4D, 0x02, 0x35, 0x02, 0x29, 0x02, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01 - .byte 0x88, 0x01, 0x89, 0x01, 0x8A, 0x01 + .short 0x016A, 0x024D, 0x0235, 0x0229, 0x0184, 0x0185, 0x0186, 0x0187 + .short 0x0188, 0x0189, 0x018A .global UNK_020ED5D6 UNK_020ED5D6: ; 0x020ED5D6 diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s index ed87943a..1cfea136 100644 --- a/arm9/asm/unk_02026CD0.s +++ b/arm9/asm/unk_02026CD0.s @@ -1105,12 +1105,12 @@ _02027492: _0202749A: add r0, r5, #0x0 add r0, #0x40 - bl FUN_02013724 + bl MailMsg_init add r5, #0x40 add r0, r5, #0x0 mov r1, #0x0 add r2, r4, #0x0 - bl FUN_02013998 + bl MailMsg_SetFieldI pop {r3-r5, pc} .balign 4 _020274B0: .word 0x00001234 @@ -1398,12 +1398,12 @@ _02027698: .word 0x00002345 thumb_func_start FUN_0202769C FUN_0202769C: ; 0x0202769C - ldr r3, _020276A4 ; =FUN_02013918 + ldr r3, _020276A4 ; =MailMsg_GetFieldI add r0, #0x40 mov r1, #0x0 bx r3 .balign 4 -_020276A4: .word FUN_02013918 +_020276A4: .word MailMsg_GetFieldI thumb_func_start FUN_020276A8 FUN_020276A8: ; 0x020276A8 diff --git a/arm9/asm/unk_0202A1E0.s b/arm9/asm/unk_0202A1E0.s index 355666bb..df633837 100644 --- a/arm9/asm/unk_0202A1E0.s +++ b/arm9/asm/unk_0202A1E0.s @@ -34,19 +34,19 @@ FUN_0202A204: ; 0x0202A204 push {r4, lr} add r4, r0, #0x0 mov r1, #0x0 - bl FUN_02013764 + bl MailMsg_init_fromTemplate add r0, r4, #0x0 add r0, #0x8 mov r1, #0x1 - bl FUN_02013764 + bl MailMsg_init_fromTemplate add r0, r4, #0x0 add r0, #0x10 mov r1, #0x2 - bl FUN_02013764 + bl MailMsg_init_fromTemplate add r4, #0x18 add r0, r4, #0x0 mov r1, #0x3 - bl FUN_02013764 + bl MailMsg_init_fromTemplate pop {r4, pc} .balign 4 @@ -629,7 +629,7 @@ FUN_0202A5D4: ; 0x0202A5D4 lsl r0, r5, #0x3 add r0, r1, r0 add r1, r4, #0x0 - bl FUN_02013960 + bl MailMsg_copy pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_0202E29C.s b/arm9/asm/unk_0202E29C.s index 06da82b7..4bb83bc8 100644 --- a/arm9/asm/unk_0202E29C.s +++ b/arm9/asm/unk_0202E29C.s @@ -78,7 +78,7 @@ FUN_0202E29C: ; 0x0202E29C ldr r0, [r2, #0x8] sub r1, #0x18 add r0, r0, r1 - bl FUN_02013724 + bl MailMsg_init bl FUN_0202E500 _0202E332: pop {r4, pc} diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 0294a124..95c1867f 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -2841,7 +2841,7 @@ FUN_02036724: ; 0x02036724 str r0, [r4, r1] add r0, sp, #0x0 mov r1, #0x4 - bl FUN_0201373C + bl MailMsg_init_withBank mov r0, #0x7e lsl r0, r0, #0x2 ldr r0, [r4, r0] diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s index b7b805a2..d29ed837 100644 --- a/arm9/asm/unk_020520AC.s +++ b/arm9/asm/unk_020520AC.s @@ -227,7 +227,7 @@ FUN_02052178: ; 0x02052178 cmp r0, #0x0 beq _020521A4 add r0, sp, #0x0 - bl FUN_02013754 + bl MailMsg_init_default add r0, sp, #0x0 bl FUN_02052DE8 add r0, r4, #0x0 @@ -1675,7 +1675,7 @@ _02052C34: mov r0, #0x5e lsl r0, r0, #0x2 add r0, r5, r0 - bl FUN_0201385C + bl MailMsg_IsInit cmp r0, #0x0 bne _02052C46 mov r0, #0xa5 @@ -1684,7 +1684,7 @@ _02052C46: mov r0, #0x5e lsl r0, r0, #0x2 add r0, r5, r0 - bl FUN_02013920 + bl MailMsg_GetMsgBank cmp r0, #0x4 beq _02052C78 ldr r0, [r5, #0x8] @@ -1705,7 +1705,7 @@ _02052C78: mov r0, #0x5e lsl r0, r0, #0x2 add r0, r5, r0 - bl FUN_02013924 + bl MailMsg_GetMsgNo add r4, r0, #0x0 cmp r4, #0x14 blt _02052C8A @@ -1715,7 +1715,7 @@ _02052C8A: lsl r0, r0, #0x2 add r0, r5, r0 mov r1, #0x0 - bl FUN_02013918 + bl MailMsg_GetFieldI add r2, r0, #0x0 ldr r0, _02052CB0 ; =0x0000FFFF cmp r2, r0 @@ -1759,7 +1759,7 @@ FUN_02052CD8: ; 0x02052CD8 mov r0, #0x5e lsl r0, r0, #0x2 add r0, r4, r0 - bl FUN_02013960 + bl MailMsg_copy mov r0, #0x6 mov r1, #0x1 lsl r0, r0, #0x6 diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s index 5a3ae781..3d8839c2 100644 --- a/arm9/asm/unk_02052EE8.s +++ b/arm9/asm/unk_02052EE8.s @@ -881,7 +881,7 @@ FUN_02053598: ; 0x02053598 str r1, [r4, #0x4] add r0, #0x14 str r1, [r4, #0x8] - bl FUN_0201373C + bl MailMsg_init_withBank mov r0, #0x0 str r0, [r4, #0x10] str r0, [r4, #0xc] diff --git a/arm9/asm/unk_02085338.s b/arm9/asm/unk_02085338.s index 77d69e0d..45fcb995 100644 --- a/arm9/asm/unk_02085338.s +++ b/arm9/asm/unk_02085338.s @@ -39,7 +39,7 @@ FUN_02085338: ; 0x02085338 add r0, r4, #0x0 add r0, #0x14 mov r1, #0x3 - bl FUN_0201373C + bl MailMsg_init_withBank b _020853A0 _02085390: ldr r0, _020853A4 ; =0x0000FFFF @@ -132,13 +132,13 @@ FUN_020853F0: ; 0x020853F0 thumb_func_start FUN_020853FC FUN_020853FC: ; 0x020853FC add r2, r0, #0x0 - ldr r3, _02085408 ; =FUN_02013960 + ldr r3, _02085408 ; =MailMsg_copy add r2, #0x14 add r0, r1, #0x0 add r1, r2, #0x0 bx r3 .balign 4 -_02085408: .word FUN_02013960 +_02085408: .word MailMsg_copy thumb_func_start FUN_0208540C FUN_0208540C: ; 0x0208540C @@ -244,7 +244,7 @@ _02085490: _02085494: add r0, #0x14 add r1, r2, #0x0 - bl FUN_02013928 + bl MailMsg_compare pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s index 76b5a118..c19e1a5d 100644 --- a/arm9/asm/unk_020854E0.s +++ b/arm9/asm/unk_020854E0.s @@ -339,7 +339,7 @@ _0208576A: add r1, r0, #0x0 lsl r0, r5, #0x3 add r0, r7, r0 - bl FUN_02013960 + bl MailMsg_copy add r0, r5, #0x1 lsl r0, r0, #0x10 lsr r5, r0, #0x10 @@ -556,7 +556,7 @@ _02085900: add r1, #0x1a lsl r0, r0, #0x3 add r0, r1, r0 - bl FUN_0201385C + bl MailMsg_IsInit cmp r0, #0x0 beq _02085938 ldr r1, [r4, #0x10] @@ -567,13 +567,13 @@ _02085900: add r0, #0x14 lsl r1, r1, #0x3 add r1, r2, r1 - bl FUN_02013960 + bl MailMsg_copy b _02085942 _02085938: add r0, r4, #0x0 add r0, #0x14 mov r1, #0x3 - bl FUN_0201373C + bl MailMsg_init_withBank _02085942: add r1, r4, #0x0 ldr r0, [r4, #0x8] diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s index 9764dd11..2be81a9f 100644 --- a/arm9/asm/unk_0208A338.s +++ b/arm9/asm/unk_0208A338.s @@ -212,7 +212,7 @@ _0208A4E8: add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 - bl FUN_02013960 + bl MailMsg_copy mov r0, #0x3 str r0, [r4, #0x54] b _0208A6C8 @@ -224,7 +224,7 @@ _0208A502: add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 - bl FUN_02013960 + bl MailMsg_copy mov r0, #0x3 str r0, [r4, #0x54] b _0208A6C8 @@ -236,7 +236,7 @@ _0208A51C: add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 - bl FUN_02013960 + bl MailMsg_copy mov r0, #0x3 str r0, [r4, #0x54] b _0208A6C8 @@ -248,7 +248,7 @@ _0208A536: add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 - bl FUN_02013960 + bl MailMsg_copy mov r0, #0x3 str r0, [r4, #0x54] b _0208A6C8 @@ -377,7 +377,7 @@ _0208A656: add r0, r4, #0x0 add r0, #0x48 mov r1, #0x0 - bl FUN_02013918 + bl MailMsg_GetFieldI add r5, r0, #0x0 add r0, r4, #0x0 bl FUN_0208A8D0 diff --git a/arm9/global.inc b/arm9/global.inc index 821007ef..1dc35362 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -886,23 +886,23 @@ .extern FUN_020136C0 .extern FUN_020136E0 .extern FUN_020136F8 -.extern FUN_02013724 -.extern FUN_0201373C -.extern FUN_02013754 -.extern FUN_02013764 -.extern FUN_020137D4 -.extern FUN_02013840 -.extern FUN_0201385C -.extern FUN_02013870 -.extern FUN_02013918 -.extern FUN_02013920 -.extern FUN_02013924 -.extern FUN_02013928 -.extern FUN_02013960 -.extern FUN_02013974 -.extern FUN_02013980 -.extern FUN_02013998 -.extern FUN_020139B0 +.extern MailMsg_init +.extern MailMsg_init_withBank +.extern MailMsg_init_default +.extern MailMsg_init_fromTemplate +.extern MailMsg_GetExpandedString +.extern MailMsg_GetRawString +.extern MailMsg_IsInit +.extern MailMsg_AllFieldsAreInit +.extern MailMsg_GetFieldI +.extern MailMsg_GetMsgBank +.extern MailMsg_GetMsgNo +.extern MailMsg_compare +.extern MailMsg_copy +.extern MailMsg_NumMsgsInBank +.extern MailMsg_SetMsgBankAndNum +.extern MailMsg_SetFieldI +.extern MailMsg_SetTrailingFieldsEmpty .extern FUN_020139D8 .extern FUN_02013A10 .extern FUN_02013A30 diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s index 86414448..8aa39261 100644 --- a/arm9/modules/05/asm/mod05_021E2B80.s +++ b/arm9/modules/05/asm/mod05_021E2B80.s @@ -324,23 +324,23 @@ MOD05_021E2DF0: ; 0x021E2DF0 add r6, r2, #0 add r0, sp, #0 add r7, r3, #0 - bl FUN_02013724 + bl MailMsg_init add r0, sp, #0 add r1, r4, #0 add r2, r6, #0 - bl FUN_02013980 + bl MailMsg_SetMsgBankAndNum add r0, sp, #0 mov r1, #0 add r2, r7, #0 - bl FUN_02013998 + bl MailMsg_SetFieldI add r2, sp, #0x10 ldrh r2, [r2, #0x10] add r0, sp, #0 mov r1, #1 - bl FUN_02013998 + bl MailMsg_SetFieldI add r0, sp, #0 mov r1, #0x20 - bl FUN_020137D4 + bl MailMsg_GetExpandedString add r4, r0, #0 ldr r0, [r5] add r1, r4, #0 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index fb098d96..c342adc4 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -4840,7 +4840,7 @@ MOD11_02231684: ; 0x02231684 mul r1, r0 add r0, r5, r1 mov r1, #5 - bl FUN_020137D4 + bl MailMsg_GetExpandedString b _022316CC _022316BC: ldr r0, [sp, #0xc] @@ -4849,7 +4849,7 @@ _022316BC: mul r1, r0 add r0, r5, r1 mov r1, #5 - bl FUN_020137D4 + bl MailMsg_GetExpandedString _022316CC: add r4, r0, #0 add r0, r6, #0 diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index 712980c4..d8172549 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -252,14 +252,14 @@ MOD15_021D76C4: ; 0x021D76C4 add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 - bl FUN_02013920 + bl MailMsg_GetMsgBank strh r0, [r5] mov r0, #0 ldrsh r0, [r5, r0] - bl FUN_02013974 + bl MailMsg_NumMsgsInBank strb r0, [r5, #3] add r0, r4, #0 - bl FUN_02013924 + bl MailMsg_GetMsgNo strb r0, [r5, #2] pop {r3, r4, r5, pc} .align 2, 0 @@ -290,7 +290,7 @@ MOD15_021D76E8: ; 0x021D76E8 _021D7712: mov r0, #0 ldrsh r0, [r5, r0] - bl FUN_02013974 + bl MailMsg_NumMsgsInBank strb r0, [r5, #3] _021D771C: mov r1, #0 @@ -298,7 +298,7 @@ _021D771C: ldrsh r1, [r5, r1] ldrsb r2, [r5, r2] add r0, r4, #0 - bl FUN_02013980 + bl MailMsg_SetMsgBankAndNum pop {r3, r4, r5, pc} thumb_func_start MOD15_021D772C @@ -325,7 +325,7 @@ MOD15_021D772C: ; 0x021D772C _021D7752: mov r0, #0 ldrsh r0, [r5, r0] - bl FUN_02013974 + bl MailMsg_NumMsgsInBank strb r0, [r5, #3] mov r0, #3 ldrsb r0, [r5, r0] @@ -337,7 +337,7 @@ _021D7764: ldrsh r1, [r5, r1] ldrsb r2, [r5, r2] add r0, r4, #0 - bl FUN_02013980 + bl MailMsg_SetMsgBankAndNum pop {r3, r4, r5, pc} thumb_func_start MOD15_021D7774 @@ -1917,7 +1917,7 @@ _021D8362: ldrh r1, [r1] add r0, r4, #0 add r0, #8 - bl FUN_02013998 + bl MailMsg_SetFieldI _021D8370: add r0, r4, #0 bl MOD15_021D85EC @@ -2102,7 +2102,7 @@ _021D84B6: bne _021D84CA add r0, r4, #0 add r0, #8 - bl FUN_020139B0 + bl MailMsg_SetTrailingFieldsEmpty _021D84CA: add r1, r4, #0 add r2, r4, #0 @@ -2282,7 +2282,7 @@ _021D8620: pop {r3, pc} _021D8624: add r0, #8 - bl FUN_02013870 + bl MailMsg_AllFieldsAreInit pop {r3, pc} _021D862C: mov r0, #0 @@ -2417,11 +2417,11 @@ MOD15_021D86F4: ; 0x021D86F4 thumb_func_start MOD15_021D86FC MOD15_021D86FC: ; 0x021D86FC - ldr r3, _021D8704 ; =FUN_02013920 + ldr r3, _021D8704 ; =MailMsg_GetMsgBank add r0, #8 bx r3 nop -_021D8704: .word FUN_02013920 +_021D8704: .word MailMsg_GetMsgBank thumb_func_start MOD15_021D8708 MOD15_021D8708: ; 0x021D8708 @@ -2430,7 +2430,7 @@ MOD15_021D8708: ; 0x021D8708 cmp r2, #2 bne _021D8718 add r0, #8 - bl FUN_02013918 + bl MailMsg_GetFieldI pop {r3, pc} _021D8718: lsl r1, r1, #1 @@ -2440,11 +2440,11 @@ _021D8718: thumb_func_start MOD15_021D8720 MOD15_021D8720: ; 0x021D8720 - ldr r3, _021D8728 ; =FUN_02013840 + ldr r3, _021D8728 ; =MailMsg_GetRawString add r0, #8 bx r3 nop -_021D8728: .word FUN_02013840 +_021D8728: .word MailMsg_GetRawString thumb_func_start MOD15_021D872C MOD15_021D872C: ; 0x021D872C diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s index 72a21ef0..0eea16a7 100644 --- a/arm9/modules/51/asm/module_51.s +++ b/arm9/modules/51/asm/module_51.s @@ -1675,7 +1675,7 @@ _02255530: str r0, [r1, #0x10] add r0, r6, #0 mov r1, #0x59 - bl FUN_020137D4 + bl MailMsg_GetExpandedString ldr r2, [r5] mov r1, #0x1c mul r1, r2 @@ -1717,7 +1717,7 @@ MOD51_022555C0: ; 0x022555C0 add r0, r1, #0 str r1, [sp] add r7, r2, #0 - bl FUN_0201385C + bl MailMsg_IsInit cmp r0, #0 bne _022555D6 mov r0, #0 @@ -1739,7 +1739,7 @@ _022555E8: bne _022555FC ldr r0, [sp] add r1, #0x14 - bl FUN_02013928 + bl MailMsg_compare cmp r0, #0 bne _02255610 _022555FC: @@ -1774,7 +1774,7 @@ _02255626: beq _0225563A ldr r0, [sp] add r1, #0x14 - bl FUN_02013928 + bl MailMsg_compare _0225563A: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index e82b9e44..5cb5badb 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -96,7 +96,7 @@ _021D758C: ldr r0, [r6, #0x1c] add r0, #0x1a add r0, r0, r5 - bl FUN_0201385C + bl MailMsg_IsInit cmp r0, #0 beq _021D759E mov r0, #0 @@ -1537,14 +1537,14 @@ _021D8122: ldr r0, [r4, #0x1c] add r0, #0x1a add r0, r0, r5 - bl FUN_0201385C + bl MailMsg_IsInit cmp r0, #0 beq _021D8164 ldr r0, [r4, #0x1c] ldr r1, [r4] add r0, #0x1a add r0, r0, r5 - bl FUN_020137D4 + bl MailMsg_GetExpandedString str r0, [sp, #0x10] mov r0, #0 str r0, [sp] diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 4daaf396..637691d0 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -1632,7 +1632,7 @@ MOD74_021D818C: ; 0x021D818C add r0, r0, r1 ldr r1, [r4] add r0, #8 - bl FUN_020137D4 + bl MailMsg_GetExpandedString add r5, r0, #0 add r0, r4, #0 add r0, #0x8c diff --git a/arm9/src/mail.c b/arm9/src/mail.c index 96074471..b2f8e92d 100644 --- a/arm9/src/mail.c +++ b/arm9/src/mail.c @@ -9,10 +9,8 @@ #pragma thumb on -extern void FUN_02013724(u16 * ptr); extern u32 FUN_0206B6C8(struct Pokemon * pokemon); extern u16 FUN_0206B7BC(u16 species, u32 forme, BOOL is_egg); -extern void FUN_02013960(u16 * dest, const u16 * src); void Mail_init(struct Mail * mail) { @@ -29,7 +27,7 @@ void Mail_init(struct Mail * mail) } for (i = 0; i < 3; i++) { - FUN_02013724(mail->unk_20[i]); + MailMsg_init(&mail->unk_20[i]); } } @@ -72,7 +70,7 @@ void Mail_SetNewMessageDetails(struct Mail * mail, u8 type, u8 monIdx, struct Sa mail->author_otId = PlayerProfile_GetTrainerID(profile); for (i = 0; monIdx < GetPartyCount(party); monIdx++) { - union MailMessage * ptr; + union MailPatternData * ptr; pokemon = GetPartyMonByIndex(party, monIdx); species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); is_egg = (BOOL)GetMonData(pokemon, MON_DATA_IS_EGG, NULL); @@ -142,18 +140,18 @@ u16 Mail_GetAttrFromUnk18Array(struct Mail * mail, u32 idx, u32 attr) return 0; } -u16 * Mail_GetUnk20Array(struct Mail * mail, u32 idx) +struct MailMessage * Mail_GetUnk20Array(struct Mail * mail, u32 idx) { if (idx < 3) - return mail->unk_20[idx]; + return &mail->unk_20[idx]; else - return mail->unk_20[0]; + return &mail->unk_20[0]; } -void Mail_CopyToUnk20Array(struct Mail * mail, const u16 * src, u32 idx) +void Mail_CopyToUnk20Array(struct Mail * mail, const struct MailMessage * src, u32 idx) { if (idx < 3) - FUN_02013960(mail->unk_20[idx], src); + MailMsg_copy(&mail->unk_20[idx], src); } struct Mail * Sav2_Mailbox_get(struct SaveBlock2 * sav2) diff --git a/arm9/src/mail_message.c b/arm9/src/mail_message.c new file mode 100644 index 00000000..4d1b75c6 --- /dev/null +++ b/arm9/src/mail_message.c @@ -0,0 +1,201 @@ +#include "global.h" +#include "msgdata.h" +#include "script_buffers.h" +#include "unk_0201B8B8.h" +#include "mail_message.h" + +#pragma thumb on + +struct UnkStruct_020ED556 +{ + u8 unk_0; + u8 unk_1; + s16 unk_2; + u16 unk_4; + s16 unk_6; + u16 unk_8; +}; + +extern u16 FUN_02013A9C(s16 bank, u16 num); + +const u16 UNK_020ED54C[] = { + 397, + 399, + 395, + 396, + 398 +}; + +const struct UnkStruct_020ED556 UNK_020ED556[] = { + { 0, 0, 0x184, 7, -1, 0 }, + { 1, 0, 0x184, 33, -1, 0 }, + { 2, 0, 0x188, 10, -1, 0 }, + { 1, 4, 0x184, 1, -1, 0 } +}; + +void MailMsg_init(struct MailMessage * mailMsg) +{ + s32 i; + mailMsg->msg_bank = 0xFFFF; + for (i = 0; i < 2; i++) + { + mailMsg->fields[i] = 0xFFFF; + } +} + +void MailMsg_init_withBank(struct MailMessage * mailMsg, u16 bank) +{ + s32 i; + mailMsg->msg_bank = bank; + mailMsg->msg_no = 0; + for (i = 0; i < 2; i++) + { + mailMsg->fields[i] = 0xFFFF; + } +} + +void MailMsg_init_default(struct MailMessage * mailMsg) +{ + MailMsg_init_withBank(mailMsg, 4); + mailMsg->msg_no = 5; +} + +void MailMsg_init_fromTemplate(struct MailMessage * mailMsg, u32 a1) +{ + GF_ASSERT(a1 < 4); + if (a1 < 4) + { + MailMsg_init_withBank(mailMsg, UNK_020ED556[a1].unk_0); + mailMsg->msg_no = UNK_020ED556[a1].unk_1; + if (UNK_020ED556[a1].unk_2 != -1) + mailMsg->fields[0] = FUN_02013A9C(UNK_020ED556[a1].unk_2, UNK_020ED556[a1].unk_4); + if (UNK_020ED556[a1].unk_6 != -1) + mailMsg->fields[1] = FUN_02013A9C(UNK_020ED556[a1].unk_6, UNK_020ED556[a1].unk_8); + } +} + +struct String * MailMsg_GetExpandedString(struct MailMessage * mailMsg, u32 heap_id) +{ + s32 i; + struct ScrStrBufs * mgr = ScrStrBufs_new(heap_id); + struct MsgData * msgData; + struct String * ret; + for (i = 0; i < 2; i++) + { + if (mailMsg->fields[i] == 0xFFFF) + break; + FUN_0200B518(mgr, (u32)i, mailMsg->fields[i]); + } + msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, UNK_020ED54C[mailMsg->msg_bank], heap_id); + ret = ReadMsgData_ExpandPlaceholders(mgr, msgData, mailMsg->msg_no, heap_id); + DestroyMsgData(msgData); + ScrStrBufs_delete(mgr); + return ret; +} + +struct String * MailMsg_GetRawString(struct MailMessage * mailMsg, u32 heap_id) +{ + return ReadMsgData_NewNarc_NewString(NARC_MSGDATA_MSG, UNK_020ED54C[mailMsg->msg_bank], mailMsg->msg_no, heap_id); +} + +BOOL MailMsg_IsInit(struct MailMessage * mailMsg) +{ + return mailMsg->msg_bank != 0xFFFF; +} + +BOOL MailMsg_AllFieldsAreInit(struct MailMessage * mailMsg) +{ + s32 i; + u32 n = MailMsg_NumFields(mailMsg->msg_bank, mailMsg->msg_no); + for (i = 0; i < n; i++) + { + if (mailMsg->fields[i] == 0xFFFF) + return FALSE; + } + return TRUE; +} + +u32 MailMsg_NumFields(u16 bank, u16 num) +{ + struct String * str; + const u16 * cstr; + u32 count; + GF_ASSERT(bank < 5); + GF_ASSERT(num < MailMsg_NumMsgsInBank(bank)); + str = ReadMsgData_NewNarc_NewString(NARC_MSGDATA_MSG, UNK_020ED54C[bank], num, 0); + cstr = String_c_str(str); + count = 0; + while (*cstr != EOS) + { + if (*cstr == 0xFFFE) + { + if (MsgArray_ControlCodeIsStrVar(cstr)) + count++; + cstr = MsgArray_SkipControlCode(cstr); + } + else + cstr++; + } + String_dtor(str); + return count; +} + +u16 MailMsg_GetFieldI(struct MailMessage * mailMsg, u32 a1) +{ + return mailMsg->fields[a1]; +} + +u16 MailMsg_GetMsgBank(struct MailMessage * mailMsg) +{ + return mailMsg->msg_bank; +} + +u16 MailMsg_GetMsgNo(struct MailMessage * mailMsg) +{ + return mailMsg->msg_no; +} + +BOOL MailMsg_compare(struct MailMessage * mailMsg, struct MailMessage * a1) +{ + s32 i; + if (mailMsg->msg_bank != a1->msg_bank || mailMsg->msg_no != a1->msg_no) + return FALSE; + for (i = 0; i < 2; i++) + { + if (mailMsg->fields[i] != a1->fields[i]) + return FALSE; + } + return TRUE; +} + +void MailMsg_copy(struct MailMessage * mailMsg, const struct MailMessage * a1) +{ + *mailMsg = *a1; +} + +u32 MailMsg_NumMsgsInBank(u16 bank) +{ + return (u32)((bank < 5) ? 20 : 0); +} + +void MailMsg_SetMsgBankAndNum(struct MailMessage * mailMsg, u16 bank, u16 num) +{ + GF_ASSERT(bank < 5); + mailMsg->msg_bank = bank; + mailMsg->msg_no = num; +} + +void MailMsg_SetFieldI(struct MailMessage * mailMsg, u32 idx, u16 word) +{ + GF_ASSERT(idx < 2); + mailMsg->fields[idx] = word; +} + +void MailMsg_SetTrailingFieldsEmpty(struct MailMessage * mailMsg) +{ + u32 n; + for (n = MailMsg_NumFields(mailMsg->msg_bank, mailMsg->msg_no); n < 2; n++) + { + mailMsg->fields[n] = 0xFFFF; + } +} diff --git a/arm9/src/msgdata.c b/arm9/src/msgdata.c index 13d1a9da..b3526f55 100644 --- a/arm9/src/msgdata.c +++ b/arm9/src/msgdata.c @@ -4,7 +4,6 @@ #include "heap.h" #include "MI_memory.h" #include "string16.h" -#include "proto.h" #pragma thumb on @@ -350,7 +349,7 @@ void GetSpeciesNameIntoArray(u16 species, u32 heap_id, u16 * dest) DestroyMsgData(msgData); } -struct String * ReadMsgData_ExpandPlaceholders(u32 * a0, struct MsgData * msgData, u32 msgno, u32 a3) +struct String * ReadMsgData_ExpandPlaceholders(struct ScrStrBufs * a0, struct MsgData * msgData, u32 msgno, u32 a3) { struct String * ret = NULL; struct String * r4 = String_ctor(1024, 0); diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 1f48d0fc..fb1ad894 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -12,6 +12,7 @@ #include "string_util.h" #include "text.h" #include "msgdata.h" +#include "itemtool.h" #include "constants/abilities.h" #include "constants/items.h" #include "constants/moves.h" diff --git a/include/mail.h b/include/mail.h index 47d8a777..078b314a 100644 --- a/include/mail.h +++ b/include/mail.h @@ -2,8 +2,9 @@ #define POKEDIAMOND_SEALS_H #include "save_block_2.h" +#include "mail_message.h" -union MailMessage +union MailPatternData { u16 raw; struct { @@ -20,9 +21,9 @@ struct Mail u8 author_version; // version u8 mail_type; // mail type u16 author_name[OT_NAME_LENGTH + 1]; // author name - union MailMessage unk_18[3]; + union MailPatternData unk_18[3]; u8 padding_1E[2]; - u16 unk_20[3][4]; + struct MailMessage unk_20[3]; }; struct Mail * Mail_new(u32 heap_id); @@ -40,8 +41,8 @@ void Mail_SetType(struct Mail * mail, u8 type); u8 Mail_GetLanguage(struct Mail * mail); u8 Mail_GetVersion(struct Mail * mail); u16 Mail_GetAttrFromUnk18Array(struct Mail * mail, u32 idx, u32 attr); -u16 * Mail_GetUnk20Array(struct Mail * mail, u32 idx); -void Mail_CopyToUnk20Array(struct Mail * mail, const u16 * src, u32 idx); +struct MailMessage * Mail_GetUnk20Array(struct Mail * mail, u32 idx); +void Mail_CopyToUnk20Array(struct Mail * mail, const struct MailMessage * src, u32 idx); struct Mail * Sav2_Mailbox_get(struct SaveBlock2 * sav2); u32 Sav2_Mailbox_sizeof(void); void Sav2_Mailbox_init(struct Mail * mail); diff --git a/include/mail_message.h b/include/mail_message.h new file mode 100644 index 00000000..5772fdd3 --- /dev/null +++ b/include/mail_message.h @@ -0,0 +1,30 @@ +#ifndef POKEDIAMOND_MAIL_MESSAGE_H +#define POKEDIAMOND_MAIL_MESSAGE_H + +struct MailMessage +{ + u16 msg_bank; + u16 msg_no; + u16 fields[2]; +}; + +void MailMsg_init(struct MailMessage * mailMsg); +void MailMsg_init_withBank(struct MailMessage * mailMsg, u16 bank); +void MailMsg_init_default(struct MailMessage * mailMsg); +void MailMsg_init_fromTemplate(struct MailMessage * mailMsg, u32 a1); +struct String * MailMsg_GetExpandedString(struct MailMessage * mailMsg, u32 heap_id); +struct String * MailMsg_GetRawString(struct MailMessage * mailMsg, u32 heap_id); +BOOL MailMsg_IsInit(struct MailMessage * mailMsg); +BOOL MailMsg_AllFieldsAreInit(struct MailMessage * mailMsg); +u32 MailMsg_NumFields(u16 bank, u16 num); +u16 MailMsg_GetFieldI(struct MailMessage * mailMsg, u32 a1); +u16 MailMsg_GetMsgBank(struct MailMessage * mailMsg); +u16 MailMsg_GetMsgNo(struct MailMessage * mailMsg); +BOOL MailMsg_compare(struct MailMessage * mailMsg, struct MailMessage * a1); +void MailMsg_copy(struct MailMessage * mailMsg, const struct MailMessage * a1); +u32 MailMsg_NumMsgsInBank(u16 bank); +void MailMsg_SetMsgBankAndNum(struct MailMessage * mailMsg, u16 bank, u16 num); +void MailMsg_SetFieldI(struct MailMessage * mailMsg, u32 idx, u16 word); +void MailMsg_SetTrailingFieldsEmpty(struct MailMessage * mailMsg); + +#endif //POKEDIAMOND_MAIL_MESSAGE_H diff --git a/include/msgdata.h b/include/msgdata.h index c2f37274..855856ff 100644 --- a/include/msgdata.h +++ b/include/msgdata.h @@ -3,6 +3,7 @@ #include "filesystem.h" #include "string16.h" +#include "script_buffers.h" struct MsgDataAlloc { @@ -38,7 +39,7 @@ struct String * NewString_ReadMsgData(struct MsgData *, u32); u16 MsgDataGetCount(struct MsgData * msgData); void ReadMsgDataIntoU16Array(struct MsgData * msgData, u32 msg_no, u16 * dest); void GetSpeciesNameIntoArray(u16 species, u32 heap_id, u16 * dest); -struct String * ReadMsgData_ExpandPlaceholders(u32 * a0, struct MsgData * msgData, u32 msgno, u32 heap_id); +struct String * ReadMsgData_ExpandPlaceholders(struct ScrStrBufs * a0, struct MsgData * msgData, u32 msgno, u32 heap_id); struct String * GetMoveName(u32 move, u32 heapno); struct String * GetSpeciesName(u16 species, u32 heap_id); diff --git a/include/proto.h b/include/proto.h index 67a295ac..365c0ecd 100644 --- a/include/proto.h +++ b/include/proto.h @@ -8,7 +8,6 @@ #include "player_data.h" // for struct definitions int FUN_0206AE00(int x); -u32 GetItemAttr(u16 item, u32 a1, u32 a2); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); u32 IsNighttime(void); // is day or night @@ -17,6 +16,5 @@ void FUN_02005E80(int); void FUN_02005E90(int, int, int, int); void FUN_020056AC(int, int, int, int, int); void FUN_020808AC(struct BoxPokemon *, struct PlayerData *, int, u32, u32); -void StringExpandPlaceholders(u32 *, struct String *, struct String *); #endif //POKEDIAMOND_PROTO_H diff --git a/include/script_buffers.h b/include/script_buffers.h index 76d4eb71..63aaf65d 100644 --- a/include/script_buffers.h +++ b/include/script_buffers.h @@ -1,6 +1,9 @@ #ifndef POKEDIAMOND_SCRIPT_BUFFERS_H #define POKEDIAMOND_SCRIPT_BUFFERS_H +#include "pokemon.h" +#include "pokemon_storage_system.h" + struct UnkStruct_0200AA80_sub_sub { u8 data[4]; |