mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 00:11:26 -05:00
Decompile mail_message.c
This commit is contained in:
parent
73aecdbbbf
commit
3adc93018b
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
201
arm9/src/mail_message.c
Normal file
201
arm9/src/mail_message.c
Normal file
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
30
include/mail_message.h
Normal file
30
include/mail_message.h
Normal file
|
|
@ -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
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user