diff options
author | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-27 12:39:36 +0200 |
---|---|---|
committer | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-06-27 12:39:36 +0200 |
commit | 9838c293c547d07bb96c1ad66e21e1c35bc1f56c (patch) | |
tree | a58fd6d6c9d9b10687c62800b0c21987f23f0455 | |
parent | c7b7cb66d44554ea4cd2873826deabbade5a52ae (diff) | |
parent | eb0aacbbaf3876a597d26255a48def2cb43c1d2c (diff) |
Merge branch 'master' into unk_020030E8
66 files changed, 1380 insertions, 1627 deletions
diff --git a/arm7/lib/include/SND_alarm.h b/arm7/lib/include/SND_alarm.h new file mode 100644 index 00000000..195b90bb --- /dev/null +++ b/arm7/lib/include/SND_alarm.h @@ -0,0 +1,12 @@ +#ifndef GUARD_SND_ALARM_H +#define GUARD_SND_ALARM_H + +#include "global.h" +#include "SND_alarm_shared.h" + +void SND_StopAlarm(u32 idx); +void SND_StartAlarm(u32 idx); +void SND_SetupAlarm(); +void SND_AlarmInit(); + +#endif //GUARD_SND_ALARM_H
\ No newline at end of file diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h new file mode 100644 index 00000000..05fbe3d7 --- /dev/null +++ b/arm7/lib/include/SND_exChannel.h @@ -0,0 +1,8 @@ +#ifndef GUARD_SND_EXCHANNEL_H +#define GUARD_SND_EXCHANNEL_H + +#include "global.h" + +bool SND_IsChannelActive(u32 idx); + +#endif //GUARD_SND_EXCHANNEL_H
\ No newline at end of file diff --git a/arm7/lib/include/SND_work.h b/arm7/lib/include/SND_work.h new file mode 100644 index 00000000..9b834c6c --- /dev/null +++ b/arm7/lib/include/SND_work.h @@ -0,0 +1,4 @@ +#ifndef GUARD_SND_WORK_H +#define GUARD_SND_WORK_H + +#endif //GUARD_SND_WORK_H
\ No newline at end of file diff --git a/arm9/asm/scrcmd_10.s b/arm9/asm/scrcmd_10.s index e400a88b..87337ab8 100644 --- a/arm9/asm/scrcmd_10.s +++ b/arm9/asm/scrcmd_10.s @@ -243,12 +243,12 @@ _020424F6: b _020426FA _020424FC: ldr r0, [r1, #0xc] - bl FUN_0202A8CC + bl SaveStruct23_GetSubstruct1 bl MOD06_022433A8 b _020426FA _02042508: ldr r0, [r1, #0xc] - bl FUN_0202A8CC + bl SaveStruct23_GetSubstruct1 bl MOD06_022433B0 strh r0, [r4, #0x0] b _020426FA @@ -717,7 +717,7 @@ ScrCmd_Unk01E3: ; 0x02042894 add r6, r0, #0x0 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_0202A8E4 + bl SaveStruct23_GetSubstruct4 add r1, sp, #0x0 bl FUN_0202A864 add r0, sp, #0x0 @@ -743,8 +743,8 @@ ScrCmd_Unk01E4: ; 0x020428E0 add r4, r0, #0x0 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_0202A8E4 - bl FUN_0202A74C + bl SaveStruct23_GetSubstruct4 + bl SaveStruct23_Substruct4_GetField_0xFF strh r0, [r4, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -862,10 +862,10 @@ ScrCmd_Unk0297: ; 0x020429B8 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 mov r1, #0x0 add r2, r1, #0x0 - bl FUN_0202A3B4 + bl SaveStruct23_Substruct2_SetField_0x0 strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -885,10 +885,10 @@ ScrCmd_Unk0298: ; 0x020429E8 bl VarGet add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 add r1, r5, #0x0 mov r2, #0x5 - bl FUN_0202A3B4 + bl SaveStruct23_Substruct2_SetField_0x0 mov r0, #0x0 pop {r3-r5, pc} .balign 4 @@ -908,10 +908,10 @@ ScrCmd_Unk0299: ; 0x02042A18 bl VarGet add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 add r1, r5, #0x0 mov r2, #0x6 - bl FUN_0202A3B4 + bl SaveStruct23_Substruct2_SetField_0x0 mov r0, #0x0 pop {r3-r5, pc} .balign 4 @@ -939,10 +939,10 @@ ScrCmd_Unk029A: ; 0x02042A48 bl GetVarPointer add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 mov r1, #0x0 add r2, r1, #0x0 - bl FUN_0202A3B4 + bl SaveStruct23_Substruct2_SetField_0x0 cmp r0, r6 bhs _02042A8E mov r0, #0x0 diff --git a/arm9/asm/unk_0201C6B4.s b/arm9/asm/unk_0201C6B4.s deleted file mode 100644 index 6ee6910b..00000000 --- a/arm9/asm/unk_0201C6B4.s +++ /dev/null @@ -1,148 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0201C6B4 -FUN_0201C6B4: ; 0x0201C6B4 - mov r2, #0x0 - ldrsb r1, [r0, r2] - cmp r1, #0x0 - beq _0201C6C4 -_0201C6BC: - add r2, r2, #0x1 - ldrsb r1, [r0, r2] - cmp r1, #0x0 - bne _0201C6BC -_0201C6C4: - add r0, r2, #0x0 - bx lr - - thumb_func_start FUN_0201C6C8 -FUN_0201C6C8: ; 0x0201C6C8 - push {r4-r5} - mov r4, #0x1 - mov r3, #0x0 - lsl r4, r4, #0x8 -_0201C6D0: - ldrsb r5, [r0, r3] - strb r5, [r1, r3] - ldrsb r5, [r0, r3] - cmp r2, r5 - beq _0201C6DE - cmp r5, #0x0 - bne _0201C6FE -_0201C6DE: - mov r4, #0x0 - strb r4, [r1, r3] - cmp r2, #0xd - bne _0201C6F6 - add r1, r3, #0x1 - ldrsb r1, [r0, r1] - cmp r1, #0xa - bne _0201C6F6 - add r1, r3, #0x2 - add r0, r0, r1 - pop {r4-r5} - bx lr -_0201C6F6: - add r1, r3, #0x1 - add r0, r0, r1 - pop {r4-r5} - bx lr -_0201C6FE: - add r3, r3, #0x1 - cmp r3, r4 - blt _0201C6D0 - mov r0, #0x0 - pop {r4-r5} - bx lr - .balign 4 - - thumb_func_start FUN_0201C70C -FUN_0201C70C: ; 0x0201C70C - push {r4-r6, lr} - add r4, r0, #0x0 - bl FUN_0201C6B4 - mov r5, #0x1 - mov r6, #0x0 - sub r3, r0, #0x1 - bmi _0201C74A - sub r1, r6, #0x1 - mov r0, #0xa -_0201C720: - ldrsb r2, [r4, r3] - cmp r2, #0x30 - blt _0201C732 - cmp r2, #0x39 - bgt _0201C732 - sub r2, #0x30 - mul r2, r5 - add r6, r6, r2 - b _0201C744 -_0201C732: - cmp r3, #0x0 - bne _0201C73E - cmp r2, #0x2d - bne _0201C744 - mul r6, r1 - b _0201C744 -_0201C73E: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_0201C744: - mul r5, r0 - sub r3, r3, #0x1 - bpl _0201C720 -_0201C74A: - add r0, r6, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0201C750 -FUN_0201C750: ; 0x0201C750 - push {r3-r5, lr} - mov r2, #0x0 - add r4, r1, #0x0 - add r5, r0, #0x0 - add r1, r2, #0x0 -_0201C75A: - lsl r0, r2, #0x2 - str r1, [r5, r0] - add r0, r2, #0x1 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - cmp r2, #0x4 - blo _0201C75A - add r0, r4, #0x0 - bl FUN_0201C6B4 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r2, _0201C788 ; =0x00000000 - beq _0201C784 -_0201C776: - ldrsb r0, [r4, r2] - strb r0, [r5, r2] - add r0, r2, #0x1 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - cmp r2, r1 - blo _0201C776 -_0201C784: - pop {r3-r5, pc} - nop -_0201C788: .word 0x00000000 - - thumb_func_start FUN_0201C78C -FUN_0201C78C: ; 0x0201C78C - ldr r1, _0201C79C ; =0x00000121 - cmp r0, r1 - bhs _0201C796 - mov r0, #0x1 - bx lr -_0201C796: - mov r0, #0x0 - bx lr - nop -_0201C79C: .word 0x00000121 diff --git a/arm9/asm/unk_0202A1E0.s b/arm9/asm/unk_0202A1E0.s deleted file mode 100644 index d3555bd5..00000000 --- a/arm9/asm/unk_0202A1E0.s +++ /dev/null @@ -1,1053 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0202A1E0 -FUN_0202A1E0: ; 0x0202A1E0 - mov r0, #0xe4 - bx lr - - thumb_func_start FUN_0202A1E4 -FUN_0202A1E4: ; 0x0202A1E4 - ldr r3, _0202A1EC ; =MI_CpuFill8 - mov r1, #0x0 - mov r2, #0x3c - bx r3 - .balign 4 -_0202A1EC: .word MI_CpuFill8 - - thumb_func_start FUN_0202A1F0 -FUN_0202A1F0: ; 0x0202A1F0 - push {r4, lr} - mov r2, #0x5a - mov r1, #0x0 - lsl r2, r2, #0x2 - add r4, r0, #0x0 - bl MI_CpuFill8 - mov r0, #0x1 - strb r0, [r4, #0x3] - pop {r4, pc} - - thumb_func_start FUN_0202A204 -FUN_0202A204: ; 0x0202A204 - push {r4, lr} - add r4, r0, #0x0 - mov r1, #0x0 - bl MailMsg_init_fromTemplate - add r0, r4, #0x0 - add r0, #0x8 - mov r1, #0x1 - bl MailMsg_init_fromTemplate - add r0, r4, #0x0 - add r0, #0x10 - mov r1, #0x2 - bl MailMsg_init_fromTemplate - add r4, #0x18 - add r0, r4, #0x0 - mov r1, #0x3 - bl MailMsg_init_fromTemplate - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0202A230 -FUN_0202A230: ; 0x0202A230 - ldr r3, _0202A238 ; =MI_CpuFill8 - mov r1, #0x0 - ldr r2, _0202A23C ; =0x00000B3C - bx r3 - .balign 4 -_0202A238: .word MI_CpuFill8 -_0202A23C: .word 0x00000B3C - - thumb_func_start FUN_0202A240 -FUN_0202A240: ; 0x0202A240 - push {r3, lr} - cmp r1, #0xa - bhi _0202A2BE - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0202A252: ; jump table (using 16-bit offset) - .short _0202A268 - _0202A252 - 2; case 0 - .short _0202A270 - _0202A252 - 2; case 1 - .short _0202A274 - _0202A252 - 2; case 2 - .short _0202A278 - _0202A252 - 2; case 3 - .short _0202A27C - _0202A252 - 2; case 4 - .short _0202A280 - _0202A252 - 2; case 5 - .short _0202A28E - _0202A252 - 2; case 6 - .short _0202A29C - _0202A252 - 2; case 7 - .short _0202A2A4 - _0202A252 - 2; case 8 - .short _0202A2B2 - _0202A252 - 2; case 9 - .short _0202A2BA - _0202A252 - 2; case 10 -_0202A268: - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1d - pop {r3, pc} -_0202A270: - ldrb r0, [r0, #0x2] - pop {r3, pc} -_0202A274: - ldrb r0, [r0, #0x3] - pop {r3, pc} -_0202A278: - ldrh r0, [r0, #0x4] - pop {r3, pc} -_0202A27C: - ldrh r0, [r0, #0x6] - pop {r3, pc} -_0202A280: - add r1, r2, #0x0 - add r0, #0x8 - mov r2, #0x4 - bl MI_CpuCopy8 - mov r0, #0x0 - pop {r3, pc} -_0202A28E: - add r1, r2, #0x0 - add r0, #0x2c - mov r2, #0x10 - bl MI_CpuCopy8 - mov r0, #0x0 - pop {r3, pc} -_0202A29C: - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - pop {r3, pc} -_0202A2A4: - add r1, r2, #0x0 - add r0, #0xc - mov r2, #0x1c - bl MI_CpuCopy8 - mov r0, #0x0 - pop {r3, pc} -_0202A2B2: - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1d - pop {r3, pc} -_0202A2BA: - ldr r0, [r0, #0x28] - pop {r3, pc} -_0202A2BE: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0202A2C4 -FUN_0202A2C4: ; 0x0202A2C4 - push {r4, lr} - add r3, r0, #0x0 - cmp r1, #0xa - bhi _0202A36A - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0202A2D8: ; jump table (using 16-bit offset) - .short _0202A2EE - _0202A2D8 - 2; case 0 - .short _0202A300 - _0202A2D8 - 2; case 1 - .short _0202A306 - _0202A2D8 - 2; case 2 - .short _0202A30C - _0202A2D8 - 2; case 3 - .short _0202A312 - _0202A2D8 - 2; case 4 - .short _0202A318 - _0202A2D8 - 2; case 5 - .short _0202A326 - _0202A2D8 - 2; case 6 - .short _0202A334 - _0202A2D8 - 2; case 7 - .short _0202A346 - _0202A2D8 - 2; case 8 - .short _0202A35A - _0202A2D8 - 2; case 9 - .short _0202A354 - _0202A2D8 - 2; case 10 -_0202A2EE: - ldrb r1, [r3, #0x0] - mov r0, #0x1c - bic r1, r0 - ldrb r0, [r2, #0x0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1b - orr r0, r1 - strb r0, [r3, #0x0] - pop {r4, pc} -_0202A300: - ldrb r0, [r2, #0x0] - strb r0, [r3, #0x2] - pop {r4, pc} -_0202A306: - ldrb r0, [r2, #0x0] - strb r0, [r3, #0x3] - pop {r4, pc} -_0202A30C: - ldrh r0, [r2, #0x0] - strh r0, [r3, #0x4] - pop {r4, pc} -_0202A312: - ldrh r0, [r2, #0x0] - strh r0, [r3, #0x6] - pop {r4, pc} -_0202A318: - add r3, #0x8 - add r0, r2, #0x0 - add r1, r3, #0x0 - mov r2, #0x4 - bl MI_CpuCopy8 - pop {r4, pc} -_0202A326: - add r3, #0x2c - add r0, r2, #0x0 - add r1, r3, #0x0 - mov r2, #0x10 - bl MI_CpuCopy8 - pop {r4, pc} -_0202A334: - ldrb r4, [r3, #0x0] - ldrb r1, [r2, #0x0] - mov r0, #0x1 - bic r4, r0 - mov r0, #0x1 - and r0, r1 - orr r0, r4 - strb r0, [r3, #0x0] - pop {r4, pc} -_0202A346: - add r3, #0xc - add r0, r2, #0x0 - add r1, r3, #0x0 - mov r2, #0x1c - bl MI_CpuCopy8 - pop {r4, pc} -_0202A354: - ldr r0, [r2, #0x0] - str r0, [r3, #0x28] - pop {r4, pc} -_0202A35A: - ldrb r1, [r3, #0x0] - mov r0, #0xe0 - bic r1, r0 - ldrb r0, [r2, #0x0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x18 - orr r0, r1 - strb r0, [r3, #0x0] -_0202A36A: - pop {r4, pc} - - thumb_func_start FUN_0202A36C -FUN_0202A36C: ; 0x0202A36C - push {r3-r4} - ldrb r4, [r0, #0x3] - add r1, r4, r1 - cmp r1, #0xff - bge _0202A378 - strb r1, [r0, #0x3] -_0202A378: - ldrh r1, [r0, #0x4] - add r2, r1, r2 - ldr r1, _0202A394 ; =0x0000FFFF - cmp r2, r1 - bge _0202A384 - strh r2, [r0, #0x4] -_0202A384: - ldrh r1, [r0, #0x6] - add r2, r1, r3 - ldr r1, _0202A394 ; =0x0000FFFF - cmp r2, r1 - bge _0202A390 - strh r2, [r0, #0x6] -_0202A390: - pop {r3-r4} - bx lr - .balign 4 -_0202A394: .word 0x0000FFFF - - thumb_func_start FUN_0202A398 -FUN_0202A398: ; 0x0202A398 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bx lr - - thumb_func_start FUN_0202A3A0 -FUN_0202A3A0: ; 0x0202A3A0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - lsl r1, r1, #0x1f - ldrb r3, [r0, #0x0] - mov r2, #0x2 - lsr r1, r1, #0x1e - bic r3, r2 - orr r1, r3 - strb r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_0202A3B4 -FUN_0202A3B4: ; 0x0202A3B4 - cmp r2, #0x6 - bhi _0202A402 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0202A3C4: ; jump table (using 16-bit offset) - .short _0202A402 - _0202A3C4 - 2; case 0 - .short _0202A3D2 - _0202A3C4 - 2; case 1 - .short _0202A402 - _0202A3C4 - 2; case 2 - .short _0202A402 - _0202A3C4 - 2; case 3 - .short _0202A402 - _0202A3C4 - 2; case 4 - .short _0202A3E0 - _0202A3C4 - 2; case 5 - .short _0202A3F2 - _0202A3C4 - 2; case 6 -_0202A3D2: - ldr r2, _0202A408 ; =0x0000270F - cmp r1, r2 - bls _0202A3DC - strh r2, [r0, #0x0] - b _0202A402 -_0202A3DC: - strh r1, [r0, #0x0] - b _0202A402 -_0202A3E0: - ldrh r2, [r0, #0x0] - add r2, r2, r1 - ldr r1, _0202A408 ; =0x0000270F - cmp r2, r1 - ble _0202A3EE - strh r1, [r0, #0x0] - b _0202A402 -_0202A3EE: - strh r2, [r0, #0x0] - b _0202A402 -_0202A3F2: - ldrh r2, [r0, #0x0] - cmp r2, r1 - bhs _0202A3FE - mov r1, #0x0 - strh r1, [r0, #0x0] - b _0202A402 -_0202A3FE: - sub r1, r2, r1 - strh r1, [r0, #0x0] -_0202A402: - ldrh r0, [r0, #0x0] - bx lr - nop -_0202A408: .word 0x0000270F - - thumb_func_start FUN_0202A40C -FUN_0202A40C: ; 0x0202A40C - cmp r1, #0x2 - beq _0202A416 - cmp r1, #0x3 - beq _0202A424 - b _0202A440 -_0202A416: - mov r1, #0x0 - strb r1, [r0, #0x2] - ldrh r2, [r0, #0x8] - mov r1, #0x10 - bic r2, r1 - strh r2, [r0, #0x8] - b _0202A440 -_0202A424: - ldrh r1, [r0, #0x8] - lsl r1, r1, #0x1b - lsr r1, r1, #0x1f - beq _0202A434 - ldrb r1, [r0, #0x2] - add r1, r1, #0x1 - strb r1, [r0, #0x2] - b _0202A440 -_0202A434: - mov r1, #0x1 - strb r1, [r0, #0x2] - ldrh r2, [r0, #0x8] - mov r1, #0x10 - orr r1, r2 - strh r1, [r0, #0x8] -_0202A440: - ldrb r0, [r0, #0x2] - bx lr - - thumb_func_start FUN_0202A444 -FUN_0202A444: ; 0x0202A444 - cmp r1, #0x2 - beq _0202A452 - cmp r1, #0x3 - beq _0202A458 - cmp r1, #0x4 - beq _0202A464 - b _0202A46E -_0202A452: - mov r1, #0x1 - strb r1, [r0, #0x3] - b _0202A46E -_0202A458: - ldrb r1, [r0, #0x3] - cmp r1, #0xa - bhs _0202A46E - add r1, r1, #0x1 - strb r1, [r0, #0x3] - b _0202A46E -_0202A464: - ldrb r1, [r0, #0x3] - cmp r1, #0x1 - bls _0202A46E - sub r1, r1, #0x1 - strb r1, [r0, #0x3] -_0202A46E: - ldrb r0, [r0, #0x3] - bx lr - .balign 4 - - thumb_func_start FUN_0202A474 -FUN_0202A474: ; 0x0202A474 - push {r3, lr} - add r3, r0, #0x0 - cmp r1, #0x0 - bne _0202A48A - add r3, #0xc0 - add r0, r2, #0x0 - add r1, r3, #0x0 - mov r2, #0xa8 - bl MI_CpuCopy8 - pop {r3, pc} -_0202A48A: - add r3, #0x18 - add r0, r2, #0x0 - add r1, r3, #0x0 - mov r2, #0xa8 - bl MI_CpuCopy8 - pop {r3, pc} - - thumb_func_start FUN_0202A498 -FUN_0202A498: ; 0x0202A498 - push {r3, lr} - cmp r1, #0x0 - bne _0202A4AA - add r1, r2, #0x0 - add r0, #0xc0 - mov r2, #0xa8 - bl MI_CpuCopy8 - pop {r3, pc} -_0202A4AA: - add r1, r2, #0x0 - add r0, #0x18 - mov r2, #0xa8 - bl MI_CpuCopy8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0202A4B8 -FUN_0202A4B8: ; 0x0202A4B8 - push {r4-r6, lr} - add r6, r0, #0x0 - ldrb r0, [r1, #0x2] - mov r2, #0xfa - lsl r2, r2, #0x2 - sub r0, r0, #0x1 - add r3, r0, #0x0 - mul r3, r2 - lsl r0, r3, #0x10 - lsr r4, r0, #0x10 - ldrh r3, [r1, #0x4] - mov r0, #0xa - ldrb r5, [r1, #0x3] - mul r0, r3 - mov r3, #0x14 - mul r3, r5 - lsl r0, r0, #0x10 - lsl r3, r3, #0x10 - lsr r0, r0, #0x10 - lsr r3, r3, #0x10 - add r3, r0, r3 - add r0, r2, #0x0 - sub r0, #0x32 - cmp r3, r0 - ble _0202A4EE - mov r5, #0x0 - b _0202A4F6 -_0202A4EE: - sub r2, #0x32 - sub r0, r2, r3 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_0202A4F6: - ldrh r1, [r1, #0x6] - ldr r0, _0202A51C ; =0x000003CA - cmp r1, r0 - bls _0202A502 - mov r1, #0x0 - b _0202A510 -_0202A502: - add r0, #0x1e - sub r0, r0, r1 - mov r1, #0x1e - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 -_0202A510: - add r0, r4, r5 - add r0, r1, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - strh r0, [r6, #0x16] - pop {r4-r6, pc} - .balign 4 -_0202A51C: .word 0x000003CA - - thumb_func_start FUN_0202A520 -FUN_0202A520: ; 0x0202A520 - ldrh r0, [r0, #0x16] - bx lr - - thumb_func_start FUN_0202A524 -FUN_0202A524: ; 0x0202A524 - push {r3, lr} - ldrh r0, [r0, #0x16] - mov r1, #0xfa - lsl r1, r1, #0x2 - bl _s32_div_f - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0202A538 -FUN_0202A538: ; 0x0202A538 - push {r4-r5} - cmp r1, #0x5 - bne _0202A544 - mov r0, #0x0 - pop {r4-r5} - bx lr -_0202A544: - cmp r2, #0x2 - beq _0202A54E - cmp r2, #0x3 - beq _0202A558 - b _0202A56A -_0202A54E: - lsl r2, r1, #0x1 - mov r3, #0x0 - add r2, r0, r2 - strh r3, [r2, #0xc] - b _0202A56A -_0202A558: - add r5, r0, #0x0 - add r5, #0xc - lsl r4, r1, #0x1 - ldrh r3, [r5, r4] - ldr r2, _0202A574 ; =0x0000FFFE - cmp r3, r2 - bhs _0202A56A - add r2, r3, #0x1 - strh r2, [r5, r4] -_0202A56A: - lsl r1, r1, #0x1 - add r0, r0, r1 - ldrh r0, [r0, #0xc] - pop {r4-r5} - bx lr - .balign 4 -_0202A574: .word 0x0000FFFE - - thumb_func_start FUN_0202A578 -FUN_0202A578: ; 0x0202A578 - push {r3-r4} - mov r3, #0x1 - mov r4, #0x0 - cmp r1, #0x0 - bls _0202A590 -_0202A582: - add r4, r4, #0x1 - lsl r4, r4, #0x10 - lsl r3, r3, #0x11 - lsr r4, r4, #0x10 - lsr r3, r3, #0x10 - cmp r4, r1 - blo _0202A582 -_0202A590: - cmp r2, #0x0 - beq _0202A5B4 - cmp r2, #0x1 - beq _0202A5AC - cmp r2, #0x2 - bne _0202A5C2 - ldr r1, _0202A5C8 ; =0x0000FFFF - eor r1, r3 - lsl r1, r1, #0x10 - lsr r2, r1, #0x10 - ldrh r1, [r0, #0x8] - and r1, r2 - strh r1, [r0, #0x8] - b _0202A5C2 -_0202A5AC: - ldrh r1, [r0, #0x8] - orr r1, r3 - strh r1, [r0, #0x8] - b _0202A5C2 -_0202A5B4: - ldrh r0, [r0, #0x8] - add r2, r0, #0x0 - asr r2, r1 - mov r0, #0x1 - and r0, r2 - pop {r3-r4} - bx lr -_0202A5C2: - mov r0, #0x0 - pop {r3-r4} - bx lr - .balign 4 -_0202A5C8: .word 0x0000FFFF - - thumb_func_start FUN_0202A5CC -FUN_0202A5CC: ; 0x0202A5CC - str r1, [r0, #0x4] - bx lr - - thumb_func_start FUN_0202A5D0 -FUN_0202A5D0: ; 0x0202A5D0 - ldr r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_0202A5D4 -FUN_0202A5D4: ; 0x0202A5D4 - push {r3-r5, lr} - add r5, r1, #0x0 - mov r1, #0x17 - add r4, r2, #0x0 - bl SavArray_get - mov r1, #0x69 - lsl r1, r1, #0x2 - add r1, r0, r1 - lsl r0, r5, #0x3 - add r0, r1, r0 - add r1, r4, #0x0 - bl MailMsg_copy - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0202A5F4 -FUN_0202A5F4: ; 0x0202A5F4 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x17 - bl SavArray_get - mov r1, #0x69 - lsl r1, r1, #0x2 - add r1, r0, r1 - lsl r0, r4, #0x3 - add r0, r1, r0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0202A60C -FUN_0202A60C: ; 0x0202A60C - push {r3-r6} - add r4, r3, #0x0 - mov r3, #0x1 - cmp r2, #0x0 - beq _0202A66C - cmp r2, #0xc8 - bhi _0202A66C - cmp r1, #0x0 - beq _0202A66C - cmp r1, #0xa - bhi _0202A66C - sub r5, r2, #0x1 - sub r2, r1, #0x1 - mov r1, #0xc8 - mul r1, r2 - add r1, r5, r1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsr r6, r1, #0x1f - lsl r5, r1, #0x1d - sub r5, r5, r6 - mov r2, #0x1d - ror r5, r2 - add r2, r6, r5 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - lsl r3, r2 - lsl r2, r3, #0x18 - lsl r1, r1, #0x15 - lsr r5, r2, #0x18 - add r3, r0, #0x4 - lsr r2, r1, #0x18 - ldrb r1, [r3, r2] - orr r1, r5 - strb r1, [r3, r2] - ldr r3, [r4, #0x0] - ldr r1, [r4, #0x8] - lsl r5, r3, #0x18 - ldr r3, [r4, #0x4] - lsl r1, r1, #0x18 - lsl r3, r3, #0x18 - lsr r3, r3, #0x8 - ldr r2, [r4, #0xc] - lsr r1, r1, #0x10 - orr r3, r5 - orr r1, r3 - orr r1, r2 - str r1, [r0, #0x0] -_0202A66C: - pop {r3-r6} - bx lr - - thumb_func_start FUN_0202A670 -FUN_0202A670: ; 0x0202A670 - push {r4, lr} - add r4, r0, #0x0 - add r0, r4, #0x4 - mov r1, #0x0 - mov r2, #0xfa - bl MI_CpuFill8 - add r0, r4, #0x0 - mov r1, #0x0 - mov r2, #0x4 - bl MI_CpuFill8 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0202A68C -FUN_0202A68C: ; 0x0202A68C - ldr r3, [r0, #0x0] - ldr r2, [r1, #0x0] - cmp r3, r2 - bls _0202A698 - mov r0, #0x1 - bx lr -_0202A698: - ldr r3, [r0, #0x4] - ldr r2, [r1, #0x4] - cmp r3, r2 - bls _0202A6A4 - mov r0, #0x1 - bx lr -_0202A6A4: - ldr r2, [r0, #0x8] - ldr r0, [r1, #0x8] - cmp r2, r0 - bls _0202A6B0 - mov r0, #0x1 - bx lr -_0202A6B0: - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0202A6B4 -FUN_0202A6B4: ; 0x0202A6B4 - push {r3-r7, lr} - sub sp, #0x10 - add r6, r2, #0x0 - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r7, #0x1 - cmp r6, #0xc8 - bhi _0202A6C8 - cmp r4, #0xa - bls _0202A6CE -_0202A6C8: - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202A6CE: - ldr r0, [r5, #0x0] - lsr r1, r0, #0x18 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x0] - lsr r1, r0, #0x10 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x4] - lsr r1, r0, #0x8 - lsl r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - str r1, [sp, #0x8] - str r0, [sp, #0xc] - add r0, r3, #0x0 - add r1, sp, #0x0 - bl FUN_0202A68C - cmp r0, #0x0 - beq _0202A706 - add r0, r5, #0x0 - bl FUN_0202A670 - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202A706: - sub r1, r4, #0x1 - mov r0, #0xc8 - mul r0, r1 - sub r2, r6, #0x1 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsr r3, r0, #0x1f - lsl r2, r0, #0x1d - lsl r0, r0, #0x15 - lsr r0, r0, #0x18 - add r0, r5, r0 - sub r2, r2, r3 - mov r1, #0x1d - ror r2, r1 - add r1, r3, r2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r2, r7, #0x0 - lsl r2, r1 - lsl r1, r2, #0x18 - ldrb r0, [r0, #0x4] - lsr r1, r1, #0x18 - tst r0, r1 - beq _0202A73E - add sp, #0x10 - add r0, r7, #0x0 - pop {r3-r7, pc} -_0202A73E: - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start FUN_0202A744 -FUN_0202A744: ; 0x0202A744 - add r0, #0xfe - ldrb r0, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_0202A74C -FUN_0202A74C: ; 0x0202A74C - add r0, #0xff - ldrb r0, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_0202A754 -FUN_0202A754: ; 0x0202A754 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x41 - add r4, r2, #0x0 - lsl r1, r1, #0x2 - ldr r2, _0202A77C ; =0x0000063C - add r1, r5, r1 - add r6, r3, #0x0 - bl MI_CpuCopy8 - ldr r0, _0202A780 ; =0x00000101 - strb r4, [r5, r0] - sub r0, r0, #0x1 - strb r6, [r5, r0] - mov r0, #0x1 - add r5, #0xfe - strb r0, [r5, #0x0] - pop {r4-r6, pc} - nop -_0202A77C: .word 0x0000063C -_0202A780: .word 0x00000101 - - thumb_func_start FUN_0202A784 -FUN_0202A784: ; 0x0202A784 - ldr r2, _0202A794 ; =0x00000101 - ldrb r3, [r0, r2] - sub r2, r2, #0x1 - strb r3, [r1, #0x0] - ldrb r0, [r0, r2] - strb r0, [r1, #0x1] - bx lr - nop -_0202A794: .word 0x00000101 - - thumb_func_start FUN_0202A798 -FUN_0202A798: ; 0x0202A798 - push {r3-r7, lr} - add r6, r1, #0x0 - mov r1, #0x41 - lsl r1, r1, #0x2 - add r5, r0, r1 - mov r0, #0xe4 - add r4, r2, #0x0 - mul r4, r0 - ldr r0, _0202A834 ; =0x00002710 - add r7, r6, #0x0 - str r0, [r6, #0x0] - add r0, r5, r4 - add r0, #0xc9 - ldrb r0, [r0, #0x0] - add r7, #0x30 - strh r0, [r6, #0x4] - add r0, r5, r4 - add r0, #0xc8 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _0202A7EE - mov r0, #0x0 - mov r1, #0x1a - mov r2, #0x11 - mov r3, #0xb - bl NewMsgDataFromNarc - add r1, r5, r4 - add r1, #0xc8 - ldrb r1, [r1, #0x0] - add r2, r6, #0x0 - str r0, [sp, #0x0] - lsl r1, r1, #0x1e - lsr r1, r1, #0x1f - add r1, #0x16 - add r2, #0x8 - bl ReadMsgDataIntoU16Array - ldr r0, [sp, #0x0] - bl DestroyMsgData - b _0202A7FC -_0202A7EE: - add r0, r5, r4 - add r1, r6, #0x0 - add r0, #0xa8 - add r1, #0x8 - mov r2, #0x10 - bl MI_CpuCopy8 -_0202A7FC: - add r0, r5, r4 - add r1, r6, #0x0 - add r0, #0xca - add r1, #0x18 - mov r2, #0x8 - bl MI_CpuCopy8 - add r0, r5, r4 - add r1, r6, #0x0 - add r0, #0xd2 - add r1, #0x20 - mov r2, #0x8 - bl MI_CpuCopy8 - add r0, r5, r4 - add r6, #0x28 - add r0, #0xda - add r1, r6, #0x0 - mov r2, #0x8 - bl MI_CpuCopy8 - add r0, r5, r4 - add r1, r7, #0x0 - mov r2, #0xa8 - bl MI_CpuCopy8 - pop {r3-r7, pc} - nop -_0202A834: .word 0x00002710 - - thumb_func_start FUN_0202A838 -FUN_0202A838: ; 0x0202A838 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x1d - add r4, r2, #0x0 - lsl r1, r1, #0x6 - mov r2, #0xff - add r1, r5, r1 - lsl r2, r2, #0x2 - add r6, r3, #0x0 - bl MI_CpuCopy8 - ldr r0, _0202A860 ; =0x00000103 - strb r4, [r5, r0] - sub r0, r0, #0x1 - strb r6, [r5, r0] - mov r0, #0x1 - add r5, #0xff - strb r0, [r5, #0x0] - pop {r4-r6, pc} - .balign 4 -_0202A860: .word 0x00000103 - - thumb_func_start FUN_0202A864 -FUN_0202A864: ; 0x0202A864 - ldr r2, _0202A874 ; =0x00000103 - ldrb r3, [r0, r2] - sub r2, r2, #0x1 - strb r3, [r1, #0x0] - ldrb r0, [r0, r2] - strb r0, [r1, #0x1] - bx lr - nop -_0202A874: .word 0x00000103 - - thumb_func_start FUN_0202A878 -FUN_0202A878: ; 0x0202A878 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0xff - lsl r1, r1, #0x2 - bl AllocFromHeap - add r4, r0, #0x0 - mov r0, #0x1d - lsl r0, r0, #0x6 - mov r2, #0xff - add r0, r5, r0 - add r1, r4, #0x0 - lsl r2, r2, #0x2 - bl MI_CpuCopy8 - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0202A89C -FUN_0202A89C: ; 0x0202A89C - mov r0, #0xd - lsl r0, r0, #0x8 - bx lr - .balign 4 - - thumb_func_start FUN_0202A8A4 -FUN_0202A8A4: ; 0x0202A8A4 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_0202A1E4 - add r0, r4, #0x0 - add r0, #0x3c - bl FUN_0202A1F0 - mov r0, #0x69 - lsl r0, r0, #0x2 - add r0, r4, r0 - bl FUN_0202A204 - mov r0, #0x71 - lsl r0, r0, #0x2 - add r0, r4, r0 - bl FUN_0202A230 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0202A8CC -FUN_0202A8CC: ; 0x0202A8CC - ldr r3, _0202A8D4 ; =SavArray_get - mov r1, #0x17 - bx r3 - nop -_0202A8D4: .word SavArray_get - - thumb_func_start FUN_0202A8D8 -FUN_0202A8D8: ; 0x0202A8D8 - push {r3, lr} - mov r1, #0x17 - bl SavArray_get - add r0, #0x3c - pop {r3, pc} - - thumb_func_start FUN_0202A8E4 -FUN_0202A8E4: ; 0x0202A8E4 - push {r3, lr} - mov r1, #0x17 - bl SavArray_get - mov r1, #0x71 - lsl r1, r1, #0x2 - add r0, r0, r1 - pop {r3, pc} diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 7c9cc030..5ac3b4c2 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -2193,10 +2193,10 @@ FUN_02038790: ; 0x02038790 bl AllocFromHeapAtEnd add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 str r0, [r4, #0x0] ldr r0, [r5, #0xc] - bl FUN_0202A8E4 + bl SaveStruct23_GetSubstruct4 str r0, [r4, #0x4] ldr r0, [r5, #0xc] bl Sav2_SysInfo_get diff --git a/arm9/asm/unk_02066840.s b/arm9/asm/unk_02066840.s index 598a4989..149a4d9e 100644 --- a/arm9/asm/unk_02066840.s +++ b/arm9/asm/unk_02066840.s @@ -19,7 +19,7 @@ FUN_02066840: ; 0x02066840 bl FUN_02029AFC add r5, r0, #0x0 add r0, r6, #0x0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 str r0, [sp, #0x4] add r0, r7, #0x0 mov r1, #0x0 @@ -93,7 +93,7 @@ FUN_02066840: ; 0x02066840 _020668FC: add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_0202A5F4 + bl SaveStruct23_GetMessage ldr r1, [sp, #0x8] mov r2, #0x8 add r1, r1, r5 @@ -104,7 +104,7 @@ _020668FC: blt _020668FC add r0, r6, #0x0 mov r1, #0x3 - bl FUN_0202A5F4 + bl SaveStruct23_GetMessage add r1, r7, #0x0 add r1, #0xc0 mov r2, #0x8 @@ -115,7 +115,7 @@ _020668FC: ldr r0, [sp, #0x4] mov r1, #0x7 mov r2, #0x0 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag add r1, r7, #0x0 add r1, #0xe2 strh r0, [r1, #0x0] @@ -127,19 +127,19 @@ _020668FC: ldr r0, [sp, #0x4] ldr r1, [sp, #0x0] add r2, r7, #0x0 - bl FUN_0202A498 + bl SaveStruct23_Substruct2_GetArray add sp, #0xc pop {r4-r7, pc} _02066956: ldr r0, [sp, #0x4] - bl FUN_0202A520 + bl SaveStruct23_Substruct2_GetField_0x16 add r1, r7, #0x0 add r1, #0xe2 strh r0, [r1, #0x0] ldr r0, [sp, #0x4] ldr r1, [sp, #0x0] add r2, r7, #0x0 - bl FUN_0202A498 + bl SaveStruct23_Substruct2_GetArray _0206696C: add sp, #0xc pop {r4-r7, pc} diff --git a/arm9/asm/unk_0208A338.s b/arm9/asm/unk_0208A338.s index 7cd4ef75..8cc2030f 100644 --- a/arm9/asm/unk_0208A338.s +++ b/arm9/asm/unk_0208A338.s @@ -208,7 +208,7 @@ _0208A4E8: ldr r0, [r4, #0x0] mov r1, #0x0 ldr r0, [r0, #0xc] - bl FUN_0202A5F4 + bl SaveStruct23_GetMessage add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 @@ -220,7 +220,7 @@ _0208A502: ldr r0, [r4, #0x0] mov r1, #0x1 ldr r0, [r0, #0xc] - bl FUN_0202A5F4 + bl SaveStruct23_GetMessage add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 @@ -232,7 +232,7 @@ _0208A51C: ldr r0, [r4, #0x0] mov r1, #0x2 ldr r0, [r0, #0xc] - bl FUN_0202A5F4 + bl SaveStruct23_GetMessage add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 @@ -244,7 +244,7 @@ _0208A536: ldr r0, [r4, #0x0] mov r1, #0x3 ldr r0, [r0, #0xc] - bl FUN_0202A5F4 + bl SaveStruct23_GetMessage add r1, r0, #0x0 add r0, r4, #0x0 add r0, #0x48 @@ -335,7 +335,7 @@ _0208A5EC: ldr r0, [r0, #0xc] ldr r1, [r4, #0x64] add r2, #0x48 - bl FUN_0202A5D4 + bl SaveStruct23_SetMessage add r0, r4, #0x0 mov r1, #0x6 mov r2, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index 4f028bbd..086d9b5f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1998,42 +1998,45 @@ .extern FUN_0202A170 .extern FUN_0202A1B8 .extern FUN_0202A1C4 -.extern FUN_0202A1E0 -.extern FUN_0202A1E4 -.extern FUN_0202A240 -.extern FUN_0202A2C4 +.extern SaveStruct23_Substruct4_Substruct1_sizeof +.extern SaveStruct23_Substruct1_Init +.extern SaveStruct23_Substruct2_Init +.extern SaveStruct23_Messages_Init +.extern SaveStruct23_Substruct4_Init +.extern SaveStruct23_Substruct1_GetField +.extern SaveStruct23_Substruct1_SetField .extern FUN_0202A36C -.extern FUN_0202A398 -.extern FUN_0202A3A0 -.extern FUN_0202A3B4 -.extern FUN_0202A40C -.extern FUN_0202A444 -.extern FUN_0202A474 -.extern FUN_0202A498 -.extern FUN_0202A4B8 -.extern FUN_0202A520 +.extern SaveStruct23_Substruct1_GetFlag1 +.extern SaveStruct23_Substruct1_SetFlag1 +.extern SaveStruct23_Substruct2_SetField_0x0 +.extern SaveStruct23_Substruct2_SetField_0x2 +.extern SaveStruct23_Substruct2_SetField_0x3 +.extern SaveStruct23_Substruct2_SetArray +.extern SaveStruct23_Substruct2_GetArray +.extern SaveStruct23_Substruct2_SetField_0x16 +.extern SaveStruct23_Substruct2_GetField_0x16 .extern FUN_0202A524 -.extern FUN_0202A538 -.extern FUN_0202A578 -.extern FUN_0202A5CC -.extern FUN_0202A5D0 -.extern FUN_0202A5D4 -.extern FUN_0202A5F4 -.extern FUN_0202A60C -.extern FUN_0202A6B4 -.extern FUN_0202A744 -.extern FUN_0202A74C -.extern FUN_0202A754 +.extern SaveStruct23_Substruct2_SetField_0xC +.extern SaveStruct23_Substruct2_SetFlag +.extern SaveStruct23_Substruct2_SetField_0x4 +.extern SaveStruct23_Substruct2_GetField_0x4 +.extern SaveStruct23_SetMessage +.extern SaveStruct23_GetMessage +.extern SaveStruct23_Substruct4_SetArrayFlag +.extern SaveStruct23_Substruct4_GetArrayFlag +.extern SaveStruct23_Substruct4_GetField_0xFE +.extern SaveStruct23_Substruct4_GetField_0xFF +.extern SaveStruct23_Substruct4_SetSubstruct1 .extern FUN_0202A784 .extern FUN_0202A798 .extern FUN_0202A838 .extern FUN_0202A864 .extern FUN_0202A878 -.extern FUN_0202A89C -.extern FUN_0202A8A4 -.extern FUN_0202A8CC -.extern FUN_0202A8D8 -.extern FUN_0202A8E4 +.extern SaveStruct23_sizeof +.extern SaveStruct23_Init +.extern SaveStruct23_GetSubstruct1 +.extern SaveStruct23_GetSubstruct2 +.extern SaveStruct23_GetSubstruct4 .extern FUN_0202A8F4 .extern FUN_0202A8F8 .extern FUN_0202A918 diff --git a/arm9/lib/include/CARD_rom.h b/arm9/lib/include/CARD_rom.h index e72d653f..b6fca60b 100644 --- a/arm9/lib/include/CARD_rom.h +++ b/arm9/lib/include/CARD_rom.h @@ -6,6 +6,7 @@ #include "MI_dma.h" #include "CARD_common.h" #include "OS_tcm.h" +#include "mmap.h" #define CARD_ROM_PAGE_SIZE 512 diff --git a/arm9/lib/include/GX_g3x.h b/arm9/lib/include/GX_g3x.h index a0512b28..aa65a190 100644 --- a/arm9/lib/include/GX_g3x.h +++ b/arm9/lib/include/GX_g3x.h @@ -3,6 +3,8 @@ #include "fx.h" +#include "registers.h" + void GXi_NopClearFifo128_(void *reg); void G3X_Init(); void G3X_ResetMtxStack(); diff --git a/arm9/lib/include/MI_exMemory.h b/arm9/lib/include/MI_exMemory.h index aa90a73c..5e21d7e6 100644 --- a/arm9/lib/include/MI_exMemory.h +++ b/arm9/lib/include/MI_exMemory.h @@ -1,7 +1,7 @@ #ifndef POKEDIAMOND_MI_EXMEMORY_H #define POKEDIAMOND_MI_EXMEMORY_H -#include "consts.h" +#include "registers.h" typedef enum { MI_PROCESSOR_ARM9 = 0, diff --git a/arm9/lib/include/OS_entropy.h b/arm9/lib/include/OS_entropy.h index b0f2781a..7c39aadd 100644 --- a/arm9/lib/include/OS_entropy.h +++ b/arm9/lib/include/OS_entropy.h @@ -5,8 +5,7 @@ #ifndef POKEDIAMOND_OS_ENTROPY_H #define POKEDIAMOND_OS_ENTROPY_H -#include "consts.h" -#include "userInfo.h" +#include "registers.h" void OS_GetLowEntropyData(u32 * arr); diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h index 130ad2de..19dd0da2 100644 --- a/arm9/lib/include/OS_interrupt.h +++ b/arm9/lib/include/OS_interrupt.h @@ -1,7 +1,7 @@ #ifndef POKEDIAMOND_ARM9_OS_INTERRUPT_H #define POKEDIAMOND_ARM9_OS_INTERRUPT_H -#include "consts.h" +#include "registers.h" #include "nitro/OS_interrupt_shared.h" #define REG_OS_IME_IME_SHIFT 0 diff --git a/arm9/lib/include/OS_irqHandler.h b/arm9/lib/include/OS_irqHandler.h index ea12a0ad..e845298b 100644 --- a/arm9/lib/include/OS_irqHandler.h +++ b/arm9/lib/include/OS_irqHandler.h @@ -1,8 +1,8 @@ #ifndef POKEDIAMOND_OS_IRQHANDLER_H #define POKEDIAMOND_OS_IRQHANDLER_H -#include "consts.h" #include "OS_interrupt.h" +#include "mmap.h" static inline void OS_ClearIrqCheckFlag(OSIrqMask intr) { diff --git a/arm9/lib/include/OS_irqTable.h b/arm9/lib/include/OS_irqTable.h index 10165a11..ba8b45a8 100644 --- a/arm9/lib/include/OS_irqTable.h +++ b/arm9/lib/include/OS_irqTable.h @@ -1,7 +1,7 @@ #ifndef POKEDIAMOND_ARM9_OS_IRQTABLE_H #define POKEDIAMOND_ARM9_OS_IRQTABLE_H -#include "consts.h" +#include "mmap.h" #include "OS_interrupt.h" void OS_IrqDummy(void); diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h index b5d43bad..756de9fb 100644 --- a/arm9/lib/include/OS_reset.h +++ b/arm9/lib/include/OS_reset.h @@ -1,9 +1,8 @@ #ifndef POKEDIAMOND_ARM9_OS_RESET_H #define POKEDIAMOND_ARM9_OS_RESET_H -#include "consts.h" #include "nitro/OS_reset_shared.h" -#include "PXI_fifo.h" +#include "mmap.h" void OS_InitReset(void); void OS_ResetSystem(u32 parameter); diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h index a4b5d570..f3de4198 100644 --- a/arm9/lib/include/PAD_pad.h +++ b/arm9/lib/include/PAD_pad.h @@ -1,7 +1,7 @@ #ifndef NITRO_PAD_PAD_H_ #define NITRO_PAD_PAD_H_ -#include "consts.h" +#include "registers.h" //================================================================================ // BUTTONS diff --git a/arm9/lib/include/SND_alarm.h b/arm9/lib/include/SND_alarm.h index cf5db862..07b77f45 100644 --- a/arm9/lib/include/SND_alarm.h +++ b/arm9/lib/include/SND_alarm.h @@ -2,24 +2,13 @@ #define GUARD_SND_ALARM_H #include "global.h" -#include "OS_alarm.h" +#include "nitro/SND_alarm_shared.h" typedef void (*SNDAlarmCallback)(void *); -struct SNDAlarm { - u8 enable; // 0x00 - u8 id; // 0x01 - u16 unk_2; // 0x02 - OSTick tick; // 0x04 - OSTick period; // 0x0C - OSAlarm alarm; // 0x14 -}; // size = 0x40 - void SND_AlarmInit(void); void SNDi_IncAlarmId(u32 idx); u8 SNDi_SetAlarmHandler(u32 idx, SNDAlarmCallback cb, void *data); void SNDi_CallAlarmHandler(s32 idx); -#define SND_ALARM_COUNT 8 - #endif diff --git a/arm9/lib/include/SND_interface.h b/arm9/lib/include/SND_interface.h index bd2c3869..d0898f85 100644 --- a/arm9/lib/include/SND_interface.h +++ b/arm9/lib/include/SND_interface.h @@ -4,6 +4,7 @@ #include "global.h" #include "SND_bank.h" #include "SND_work.h" +#include "SND_alarm.h" void SND_StartSeq(s32 player, const void *seqBasePtr, u32 seqOffset, struct SNDBankData *bankData); void SND_StopSeq(s32 player); diff --git a/arm9/lib/include/SND_main.h b/arm9/lib/include/SND_main.h index e35f1ee1..8fa9364e 100644 --- a/arm9/lib/include/SND_main.h +++ b/arm9/lib/include/SND_main.h @@ -3,6 +3,8 @@ #include "global.h" +#include "nitro/SND_main_shared.h" + void SNDi_UnlockMutex(void); void SNDi_LockMutex(void); void SND_Init(void); @@ -21,165 +23,4 @@ typedef struct SNDBinaryBlockHeader { u32 size; // 0x4 } SNDBinaryBlockHeader; // size = 0x8 -struct SNDWaveParam { - u8 format; // 0x0 - u8 loopEnabled; // 0x1 - u16 samplerate; // 0x2 - u16 timer; // 0x4 - u16 loopStart; // 0x6 - u32 loopLength; // 0x8 -}; // size = 0xC - -struct SNDLfoParam { - u8 target; // 0x0 - u8 speed; // 0x1 - u8 depth; // 0x2 - u8 range; // 0x3 - u16 delay; // 0x4 -}; // size = 0x6 - -struct SNDLfo { - struct SNDLfoParam param; // 0x0 - u16 delayCounter; // 0x6 - u16 counter; // 0x8 -}; // size = 0xA - -struct SNDExChannel { - u8 id; // 0x00 - u8 type; // 0x01 - u8 envStatus; // 0x02 - - struct { - u8 active : 1; - u8 start : 1; - u8 autoSweep : 1; - u8 syncFlag : 5; - } flags; // 0x03 - - u8 panRange; // 0x04 - u8 rootMidiKey; // 0x05 - s16 userDecay2; // 0x06 - - u8 midiKey; // 0x08 - u8 velocity; // 0x09 - s8 initPan; // 0x0A - s8 userPan; // 0x0B - - s16 userDecay; // 0x0C - s16 userPitch; // 0x0E - - s32 envAttenuation; // 0x10 - s32 sweepCounter; // 0x14 - s32 sweepLength; // 0x18 - - u8 envAttack; // 0x1C - u8 envSustain; // 0x1D - u16 envDecay; // 0x1E - u16 envRelease; // 0x20 - u8 priority; // 0x22 - u8 pan; // 0x23 - u16 volume; // 0x24 - u16 timer; // 0x26 - - struct SNDLfo lfo; // 0x28 - - s16 sweepPitch; // 0x32 - - s32 length; // 0x34 - - struct SNDWaveParam waveParam; // 0x38 - - union { - const void *waveDataPtr; - u32 dutyCycle; - }; // 0x44 - - void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48 - void *callbackUserData; // 0x4C - - struct SNDExChannel *channelLLNext; // 0x50 -}; // size = 0x54 - -#define SND_TRACK_COUNT_PER_PLAYER 16 -#define SND_INVALID_TRACK_INDEX 0xFF - -struct SNDPlayer { - struct { - u8 active : 1; - u8 prepared : 1; - u8 paused : 1; - } flags; // 0x0 - - u8 playerId; // 0x1 - u8 unk_2[2]; // 0x2 - - u8 prio; // 0x4 - u8 volume; // 0x5 - s16 extFader; // 0x6 - - u8 tracks[SND_TRACK_COUNT_PER_PLAYER]; // 0x8 - - u16 tempo; // 0x18 - u16 tempoRatio; // 0x1A - u16 tempoCounter; // 0x1C - u8 unk_1E[2]; // 0x1E - - struct SNDBankData *bank; // 0x20 -}; // size = 0x24 - -#define SND_TRACK_MAX_CALL 3 - -struct SNDBankData; - -struct SNDTrack { - struct { - u8 active : 1; - u8 noteWait : 1; - u8 muted : 1; - u8 tie : 1; - u8 noteFinishWait : 1; - u8 portamento : 1; - u8 cmp : 1; // ??? - u8 channelMask : 1; - } flags; // 0x00 - - u8 panRange; // 0x01 - u16 program; // 0x02 - - u8 volume; // 0x04 - u8 expression; // 0x05 - s8 pitchBend; // 0x06 - u8 bendRange; // 0x07 - - s8 pan; // 0x08 - s8 extPan; // 0x09 - s16 extFader; // 0x0A - s16 extPitch; // 0x0C - u8 envAttack; // 0x0E - u8 envDecay; // 0x0F - u8 envSustain; // 0x10 - u8 envRelease; // 0x11 - u8 priority; // 0x12 - s8 transpose; // 0x13 - - u8 portamentoKey; // 0x14 - u8 portamentoTime; // 0x15 - s16 sweepPitch; // 0x16 - - struct SNDLfoParam mod; // 0x18 - u16 channelMask; // 0x1E - - s32 wait; // 0x20 - - const u8 *trackDataStart; // 0x24 - const u8 *trackDataPos; // 0x28 - const u8 *posCallStack[SND_TRACK_MAX_CALL]; // 0x34 - u8 loopCount[SND_TRACK_MAX_CALL]; // 0x38 - u8 callStackDepth; // 0x3B - - struct SNDExChannel *channelLLHead; // 0x3C -}; // size = 0x40 - - - #endif // GUARD_SND_MAIN_H diff --git a/arm9/lib/include/SND_work.h b/arm9/lib/include/SND_work.h index dec2bd71..a8a3d62b 100644 --- a/arm9/lib/include/SND_work.h +++ b/arm9/lib/include/SND_work.h @@ -4,31 +4,7 @@ #include "global.h" #include "SND_main.h" -#include "SND_alarm.h" - -#define SND_PLAYER_COUNT 16 -#define SND_CHANNEL_COUNT 16 -#define SND_TRACK_COUNT 32 - -struct SNDWork { - struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00 - struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540 - struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780 - struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80 -}; // size = 0x1180 - -struct SNDSharedWork { - u32 finishedCommandTag; // 0x0 - u32 playerStatus; // 0x4 - u16 channelStatus; // 0x8 - u16 captureStatus; // 0xA - u8 unk_C[0x14]; // 0xC - struct { - s16 localVars[16]; // local 0x0 - u32 tickCounter; // local 0x20 - } players[SND_PLAYER_COUNT]; // 0x20 - s16 globalVars[16]; // 0x260 -}; // size = 0x280 +#include "nitro/SND_work_shared.h" struct SNDDriverInfo { struct SNDWork work; // 0x0000 diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h index 1ad79b93..127339ca 100644 --- a/arm9/lib/include/consts.h +++ b/arm9/lib/include/consts.h @@ -2,9 +2,6 @@ #define POKEDIAMOND_ARM9_CONSTS_H #include "nitro/consts_shared.h" -#include "mmap.h" -#include "registers.h" -#include "systemWork.h" #define HW_C5_PERMIT_MASK 0xf diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h index 38506194..bdf49037 100644 --- a/arm9/lib/include/fx.h +++ b/arm9/lib/include/fx.h @@ -1,6 +1,8 @@ #ifndef GUARD_FX_H #define GUARD_FX_H +#include "nitro/types.h" + typedef s16 fx16; typedef s32 fx32; typedef s64 fx64; diff --git a/arm9/lib/include/systemWork.h b/arm9/lib/include/systemWork.h index b7660985..1e3ba46b 100644 --- a/arm9/lib/include/systemWork.h +++ b/arm9/lib/include/systemWork.h @@ -1,7 +1,6 @@ #ifndef POKEDIAMOND_ARM9_SYSTEMWORK_H #define POKEDIAMOND_ARM9_SYSTEMWORK_H -#include "OS_context.h" #include "nitro/OS_systemWork_shared.h" #endif //POKEDIAMOND_ARM9_SYSTEMWORK_H diff --git a/arm9/lib/src/CARD_common.c b/arm9/lib/src/CARD_common.c index f820027e..fd66c7ce 100644 --- a/arm9/lib/src/CARD_common.c +++ b/arm9/lib/src/CARD_common.c @@ -8,6 +8,7 @@ #include "OS_cache.h" #include "MB_mb.h" #include "PXI_fifo.h" +#include "mmap.h" CARDiCommon cardi_common ALIGN(32); static CARDiCommandArg cardi_arg ALIGN(32); diff --git a/arm9/lib/src/CARD_pullOut.c b/arm9/lib/src/CARD_pullOut.c index 3456df48..d5c7737f 100644 --- a/arm9/lib/src/CARD_pullOut.c +++ b/arm9/lib/src/CARD_pullOut.c @@ -8,6 +8,7 @@ #include "PAD_pad.h" #include "SPI_pm.h" #include "syscall.h" +#include "mmap.h" static CARDPulledOutCallback CARD_UserCallback; static BOOL CARDi_IsPulledOutFlag = FALSE; diff --git a/arm9/lib/src/CP_context.c b/arm9/lib/src/CP_context.c index 4e928c06..6567f516 100644 --- a/arm9/lib/src/CP_context.c +++ b/arm9/lib/src/CP_context.c @@ -1,6 +1,6 @@ #include "CP_context.h" #include "function_target.h" -#include "consts.h" +#include "registers.h" ARM_FUNC asm void CP_SaveContext(register CPContext *context) { diff --git a/arm9/lib/src/CTRDG_common.c b/arm9/lib/src/CTRDG_common.c index 3d80cf24..df3ec0b6 100644 --- a/arm9/lib/src/CTRDG_common.c +++ b/arm9/lib/src/CTRDG_common.c @@ -7,6 +7,7 @@ #include "PXI_fifo.h" #include "MI_dma.h" #include "MI_memory.h" +#include "mmap.h" CTRDGWork CTRDGi_Work; diff --git a/arm9/lib/src/FX_cp.c b/arm9/lib/src/FX_cp.c index c8069146..0c5d4ff8 100644 --- a/arm9/lib/src/FX_cp.c +++ b/arm9/lib/src/FX_cp.c @@ -1,6 +1,8 @@ -#include "global.h" #include "fx.h" +#include "global.h" +#include "registers.h" + ARM_FUNC fx32 FX_Div(fx32 numerator, fx32 denominator){ FX_DivAsync(numerator, denominator); diff --git a/arm9/lib/src/FX_vec.c b/arm9/lib/src/FX_vec.c index 39dd3076..005872ac 100644 --- a/arm9/lib/src/FX_vec.c +++ b/arm9/lib/src/FX_vec.c @@ -1,6 +1,8 @@ -#include "global.h" #include "fx.h" +#include "global.h" +#include "registers.h" + ARM_FUNC void VEC_Add(struct Vecx32 *a, struct Vecx32 *b, struct Vecx32 *dst){ dst->x = a->x + b->x; dst->y = a->y + b->y; diff --git a/arm9/lib/src/GX.c b/arm9/lib/src/GX.c index 688e41b7..f47c0131 100644 --- a/arm9/lib/src/GX.c +++ b/arm9/lib/src/GX.c @@ -1,6 +1,9 @@ -#include "global.h" #include "gx.h" +#include "global.h" +#include "OS_spinLock.h" +#include "OS_terminate_proc.h" + u32 GXi_DmaId = 3; vu16 GXi_VRamLockId = 0; diff --git a/arm9/lib/src/MI_wram.c b/arm9/lib/src/MI_wram.c index a65bbb6f..c1433f07 100644 --- a/arm9/lib/src/MI_wram.c +++ b/arm9/lib/src/MI_wram.c @@ -1,7 +1,8 @@ -#include "function_target.h" -#include "consts.h" #include "MI_wram.h" +#include "global.h" +#include "registers.h" + ARM_FUNC void MI_SetWramBank(MIWram cnt) { reg_GX_VRAMCNT_WRAM = (u8)cnt; diff --git a/arm9/lib/src/OS_arena.c b/arm9/lib/src/OS_arena.c index df9c2fd8..de7cb9fe 100644 --- a/arm9/lib/src/OS_arena.c +++ b/arm9/lib/src/OS_arena.c @@ -1,8 +1,9 @@ -#include "function_target.h"
-#include "consts.h"
#include "OS_arena.h"
+
+#include "global.h"
#include "OS_protectionRegion.h"
#include "OS_emulator.h"
+#include "mmap.h"
static BOOL OSi_Initialized = FALSE;
static BOOL OSi_MainExArenaEnabled = FALSE;
diff --git a/arm9/lib/src/OS_entropy.c b/arm9/lib/src/OS_entropy.c index b33781cc..5d466f82 100644 --- a/arm9/lib/src/OS_entropy.c +++ b/arm9/lib/src/OS_entropy.c @@ -2,10 +2,13 @@ // Created by red031000 on 2020-05-03. // -#include "function_target.h" -#include "consts.h" #include "OS_entropy.h" +#include "global.h" +#include "registers.h" +#include "systemWork.h" +#include "userInfo.h" + ARM_FUNC void OS_GetLowEntropyData(u32 * arr) { const OSSystemWork* work = OS_GetSystemWork(); diff --git a/arm9/lib/src/OS_exception.c b/arm9/lib/src/OS_exception.c index 3aaaa2f2..63cd6d58 100644 --- a/arm9/lib/src/OS_exception.c +++ b/arm9/lib/src/OS_exception.c @@ -1,6 +1,8 @@ #include "OS_exception.h" -#include "function_target.h" + +#include "global.h" #include "OS_protectionUnit.h" +#include "mmap.h" static OSiExContext OSi_ExContext; diff --git a/arm9/lib/src/OS_interrupt.c b/arm9/lib/src/OS_interrupt.c index c7c0704d..699c7929 100644 --- a/arm9/lib/src/OS_interrupt.c +++ b/arm9/lib/src/OS_interrupt.c @@ -1,6 +1,8 @@ -#include "consts.h" -#include "function_target.h" #include "OS_interrupt.h" + +#include "global.h" +#include "registers.h" +#include "mmap.h" #include "OS_thread.h" #pragma optimize_for_size on diff --git a/arm9/lib/src/OS_ownerInfo.c b/arm9/lib/src/OS_ownerInfo.c index 10a638fb..6693f73f 100644 --- a/arm9/lib/src/OS_ownerInfo.c +++ b/arm9/lib/src/OS_ownerInfo.c @@ -1,5 +1,7 @@ -#include "function_target.h" #include "OS_ownerInfo.h" + +#include "global.h" +#include "systemWork.h" #include "MI_memory.h" ARM_FUNC void OS_GetMacAddress(u8 *macAddress) diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c index 45d2bb13..083f2321 100644 --- a/arm9/lib/src/OS_reset.c +++ b/arm9/lib/src/OS_reset.c @@ -1,5 +1,6 @@ -#include "function_target.h" #include "OS_reset.h" + +#include "global.h" #include "MB_mb.h" #include "OS_terminate_proc.h" #include "OS_interrupt.h" diff --git a/arm9/lib/src/OS_spinLock.c b/arm9/lib/src/OS_spinLock.c index c0398be9..576e03ad 100644 --- a/arm9/lib/src/OS_spinLock.c +++ b/arm9/lib/src/OS_spinLock.c @@ -3,9 +3,10 @@ // #include "OS_spinLock.h" + #include "OS_system.h" #include "function_target.h" -#include "consts.h" +#include "mmap.h" #include "MI_exMemory.h" extern void MIi_CpuClear32(u32 param1, void * addr, u32 length); //not too sure about names diff --git a/arm9/lib/src/OS_thread.c b/arm9/lib/src/OS_thread.c index 35e91c22..a52b1f6d 100644 --- a/arm9/lib/src/OS_thread.c +++ b/arm9/lib/src/OS_thread.c @@ -6,7 +6,8 @@ #include "OS_system.h" #include "OS_context.h" #include "OS_terminate_proc.h" -#include "consts.h" +#include "systemWork.h" +#include "mmap.h" extern void SDK_SYS_STACKSIZE(void); extern void SDK_IRQ_STACKSIZE(void); diff --git a/arm9/lib/src/SND_command.c b/arm9/lib/src/SND_command.c index 4ad80be5..044d960f 100644 --- a/arm9/lib/src/SND_command.c +++ b/arm9/lib/src/SND_command.c @@ -1,7 +1,10 @@ +#include "SND_alarm.h" #include "SND_command.h" #include "SND_work.h" +#include "OS_emulator.h" #include "OS_system.h" #include "OS_cache.h" +#include "PXI_fifo.h" #define SND_CMD_WAIT_QUEUE_COUNT 8 diff --git a/arm9/lib/src/custom_allocator.c b/arm9/lib/src/custom_allocator.c index 1b1375bc..283c3500 100644 --- a/arm9/lib/src/custom_allocator.c +++ b/arm9/lib/src/custom_allocator.c @@ -1,6 +1,8 @@ -#include "global.h" #include "custom_allocator.h" +#include "global.h" +#include "OS_alloc.h" + static FreeFunc sDestructor; static AllocFunc sAllocator; diff --git a/arm9/modules/05/asm/mod05_021E1AD8.s b/arm9/modules/05/asm/mod05_021E1AD8.s index 79954077..20fc2752 100644 --- a/arm9/modules/05/asm/mod05_021E1AD8.s +++ b/arm9/modules/05/asm/mod05_021E1AD8.s @@ -2073,10 +2073,10 @@ MOD05_021E2AD4: ; 0x021E2AD4 bl NewString_ReadMsgData str r0, [sp, #0x10] ldr r0, [r6, #0xc] - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 mov r1, #0 add r2, r1, #0 - bl FUN_0202A3B4 + bl SaveStruct23_Substruct2_SetField_0x0 add r2, r0, #0 mov r0, #1 str r0, [sp] diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index a73dd764..0701bc8c 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -19893,17 +19893,17 @@ _022433A4: .word OS_ResetSystem thumb_func_start MOD06_022433A8 MOD06_022433A8: ; 0x022433A8 - ldr r3, _022433AC ; =FUN_0202A1E4 + ldr r3, _022433AC ; =SaveStruct23_Substruct1_Init bx r3 .align 2, 0 -_022433AC: .word FUN_0202A1E4 +_022433AC: .word SaveStruct23_Substruct1_Init thumb_func_start MOD06_022433B0 MOD06_022433B0: ; 0x022433B0 - ldr r3, _022433B4 ; =FUN_0202A398 + ldr r3, _022433B4 ; =SaveStruct23_Substruct1_GetFlag1 bx r3 .align 2, 0 -_022433B4: .word FUN_0202A398 +_022433B4: .word SaveStruct23_Substruct1_GetFlag1 thumb_func_start MOD06_022433B8 MOD06_022433B8: ; 0x022433B8 @@ -19965,26 +19965,26 @@ _02243414: MOD06_02243428: ; 0x02243428 push {r4, lr} add r4, r1, #0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 cmp r4, #0 bne _0224343E mov r1, #5 mov r2, #2 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag pop {r4, pc} _0224343E: mov r1, #5 mov r2, #1 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag pop {r4, pc} thumb_func_start MOD06_02243448 MOD06_02243448: ; 0x02243448 push {r3, lr} - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 mov r1, #5 mov r2, #0 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag lsl r0, r0, #0x10 lsr r0, r0, #0x10 pop {r3, pc} @@ -19993,15 +19993,15 @@ MOD06_02243448: ; 0x02243448 MOD06_0224345C: ; 0x0224345C push {r4, r5, r6, lr} add r5, r0, #0 - bl FUN_0202A8CC + bl SaveStruct23_GetSubstruct1 add r4, r0, #0 add r0, r5, #0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 mov r1, #0 add r6, r0, #0 add r0, r4, #0 add r2, r1, #0 - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField lsl r0, r0, #0x18 lsr r4, r0, #0x18 cmp r4, #5 @@ -20015,11 +20015,11 @@ _02243484: add r0, r6, #0 lsr r1, r1, #0x10 mov r2, #2 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag add r0, r6, #0 add r1, r4, #0 mov r2, #2 - bl FUN_0202A538 + bl SaveStruct23_Substruct2_SetField_0xC cmp r4, #4 beq _022434A8 add r0, r5, #0 @@ -20031,8 +20031,8 @@ _022434A8: thumb_func_start MOD06_022434AC MOD06_022434AC: ; 0x022434AC push {r3, lr} - bl FUN_0202A8E4 - bl FUN_0202A744 + bl SaveStruct23_GetSubstruct4 + bl SaveStruct23_Substruct4_GetField_0xFE lsl r0, r0, #0x10 lsr r0, r0, #0x10 pop {r3, pc} @@ -20072,16 +20072,16 @@ MOD06_022434D0: ; 0x022434D0 mov r0, #0x3b str r0, [r4, #4] add r0, r6, #0 - bl FUN_0202A8CC + bl SaveStruct23_GetSubstruct1 str r0, [r4, #0x70] add r0, r6, #0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 str r0, [r4, #0x74] ldr r0, _02243688 ; =0x12345678 mov r1, #0 str r0, [r4] ldr r0, [r4, #0x70] - bl FUN_0202A3A0 + bl SaveStruct23_Substruct1_SetFlag1 cmp r5, #0 bne _0224356C strb r7, [r4, #0xf] @@ -20114,25 +20114,25 @@ _02243544: cmp r2, #0xe blo _02243544 ldr r0, [r4, #0x70] - bl FUN_0202A1E4 + bl SaveStruct23_Substruct1_Init ldrb r1, [r4, #0xf] add r0, sp, #8 add r2, sp, #8 strb r1, [r0] ldr r0, [r4, #0x70] mov r1, #0 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField b _0224362A _0224356C: mov r1, #0 ldr r0, [r4, #0x70] add r2, r1, #0 - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField strb r0, [r4, #0xf] ldr r0, [r4, #0x70] mov r1, #1 mov r2, #0 - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField strb r0, [r4, #0xc] ldrb r0, [r4, #0xc] sub r0, r0, #1 @@ -20144,16 +20144,16 @@ _0224356C: ldr r0, [r4, #0x70] mov r1, #5 add r2, #0x2a - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField add r2, r4, #0 ldr r0, [r4, #0x70] mov r1, #8 add r2, #0x3e - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField ldr r0, [r4, #0x70] mov r1, #0xa mov r2, #0 - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField str r0, [r4, #8] ldrb r0, [r4, #0xf] cmp r0, #2 @@ -20161,7 +20161,7 @@ _0224356C: ldr r0, [r4, #0x70] mov r1, #9 mov r2, #0 - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x1d @@ -20180,14 +20180,14 @@ _0224356C: lsl r3, r3, #4 mov r1, #6 add r2, r2, r3 - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField ldrb r0, [r4, #0x10] mov r1, #7 mov r2, #0 lsl r0, r0, #0x18 lsr r5, r0, #0x1d ldr r0, [r4, #0x70] - bl FUN_0202A240 + bl SaveStruct23_Substruct1_GetField add r3, r0, #0 ldr r0, _02243690 ; =0x000007E8 mov r1, #0xa6 @@ -20226,7 +20226,7 @@ _0224362A: lsl r1, r1, #0x10 lsr r1, r1, #0x10 mov r2, #0 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag lsl r0, r0, #0x10 lsr r0, r0, #0x10 beq _02243668 @@ -20244,7 +20244,7 @@ _02243668: ldrb r1, [r4, #0xf] ldr r0, [r4, #0x74] mov r2, #0 - bl FUN_0202A538 + bl SaveStruct23_Substruct2_SetField_0xC strh r0, [r4, #0x1c] _0224367E: add r0, r4, #0 @@ -20707,17 +20707,17 @@ _022439B8: strb r1, [r0] ldr r0, [r5, #0x70] mov r1, #0 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldrb r1, [r5, #0xc] add r0, sp, #0 add r2, sp, #0 strb r1, [r0] ldr r0, [r5, #0x70] mov r1, #1 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldr r0, [r5, #0x74] ldr r1, [r5, #0x70] - bl FUN_0202A4B8 + bl SaveStruct23_Substruct2_SetField_0x16 _022439F6: pop {r3, r4, r5, r6, r7, pc} @@ -20771,7 +20771,7 @@ _02243A52: add r1, #8 lsl r1, r1, #0x10 lsr r1, r1, #0x10 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag lsl r0, r0, #0x10 lsr r0, r0, #0x10 beq _02243A74 @@ -20793,7 +20793,7 @@ _02243A7E: lsl r1, r1, #0x10 lsr r1, r1, #0x10 mov r2, #2 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag ldrb r2, [r5, #0xd] ldr r0, [sp, #4] mov r1, #0x1d @@ -20801,7 +20801,7 @@ _02243A7E: ldrb r1, [r5, #0xf] ldr r0, [r5, #0x74] mov r2, #2 - bl FUN_0202A538 + bl SaveStruct23_Substruct2_SetField_0xC ldr r0, [sp, #8] bl FUN_02029FC8 mov r1, #0xf @@ -20849,7 +20849,7 @@ MOD06_02243AD8: ; 0x02243AD8 lsr r1, r1, #0x10 mov r2, #0 add r4, #0x35 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag lsl r0, r0, #0x10 lsr r0, r0, #0x10 beq _02243B1A @@ -20872,7 +20872,7 @@ _02243B26: add r1, #8 lsl r1, r1, #0x10 lsr r1, r1, #0x10 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag add r0, r6, #0 add r1, r4, #0 bl FUN_0202A150 @@ -20887,7 +20887,7 @@ _02243B26: ldrb r1, [r5, #0xf] ldr r0, [r5, #0x74] mov r2, #3 - bl FUN_0202A538 + bl SaveStruct23_Substruct2_SetField_0xC add r0, r6, #0 mov r1, #0xf mov r2, #1 @@ -20933,19 +20933,19 @@ MOD06_02243BA8: ; 0x02243BA8 strb r1, [r0] ldr r0, [r4, #0x70] mov r1, #0 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldrb r1, [r4, #0xc] add r0, sp, #0 add r2, sp, #0 strb r1, [r0] ldr r0, [r4, #0x70] mov r1, #1 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField add r2, r4, #0 ldr r0, [r4, #0x70] mov r1, #5 add r2, #0x2a - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldrh r1, [r4, #0x28] ldrh r2, [r4, #0x24] ldrh r3, [r4, #0x26] @@ -20957,15 +20957,15 @@ MOD06_02243BA8: ; 0x02243BA8 ldr r0, [r4, #0x70] mov r1, #8 add r2, #0x3e - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField add r2, r4, #0 ldr r0, [r4, #0x70] mov r1, #0xa add r2, #8 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldr r0, [r4, #0x70] mov r1, #1 - bl FUN_0202A3A0 + bl SaveStruct23_Substruct1_SetFlag1 ldrb r0, [r4, #0xf] cmp r0, #2 bne _02243C4E @@ -20977,7 +20977,7 @@ MOD06_02243BA8: ; 0x02243BA8 strb r1, [r0] ldr r0, [r4, #0x70] mov r1, #9 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldrb r3, [r4, #0x10] ldr r2, _02243C54 ; =0x000007E8 ldr r0, [r4, #0x70] @@ -20987,7 +20987,7 @@ MOD06_02243BA8: ; 0x02243BA8 lsl r3, r3, #4 mov r1, #6 add r2, r2, r3 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField ldr r2, _02243C58 ; =0x00000838 ldr r0, [r4, #0x70] add r3, r4, r2 @@ -20996,7 +20996,7 @@ MOD06_02243BA8: ; 0x02243BA8 lsl r2, r2, #0x18 lsr r2, r2, #0x1d add r2, r3, r2 - bl FUN_0202A2C4 + bl SaveStruct23_Substruct1_SetField _02243C4E: add sp, #4 pop {r3, r4, pc} @@ -21234,13 +21234,13 @@ _02243DEE: ldr r0, [r4, #0x74] bne _02243E00 mov r1, #0 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 ldr r1, _02243E2C ; =0x02250C5C ldrb r5, [r1, r0] b _02243E1E _02243E00: mov r2, #0 - bl FUN_0202A538 + bl SaveStruct23_Substruct2_SetField_0xC ldrb r1, [r4, #0x10] lsl r1, r1, #0x1d lsr r1, r1, #0x1e @@ -21259,7 +21259,7 @@ _02243E1E: ldr r0, [r4, #0x74] add r1, r5, #0 mov r2, #5 - bl FUN_0202A3B4 + bl SaveStruct23_Substruct2_SetField_0x0 add r0, r5, #0 pop {r3, r4, r5, pc} .align 2, 0 @@ -21283,7 +21283,7 @@ _02243E48: blo _02243E5E mov r1, #1 mov r2, #0 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag cmp r0, #0 beq _02243E6E mov r0, #0 @@ -21291,7 +21291,7 @@ _02243E48: _02243E5E: mov r1, #0 add r2, r1, #0 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag cmp r0, #0 beq _02243E6E mov r0, #0 @@ -21307,7 +21307,7 @@ MOD06_02243E74: ; 0x02243E74 add r6, r0, #0 add r0, r1, #0 add r5, r2, #0 - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 add r4, r0, #0 cmp r5, #0 beq _02243E90 @@ -21318,15 +21318,15 @@ MOD06_02243E74: ; 0x02243E74 b _02243F10 _02243E90: mov r1, #0 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 pop {r4, r5, r6, pc} _02243E98: mov r1, #4 mov r2, #2 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag add r0, r4, #0 mov r1, #0 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 add r5, r0, #0 cmp r5, #0xa bne _02243EB2 @@ -21335,7 +21335,7 @@ _02243E98: _02243EB2: add r0, r4, #0 mov r1, #3 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 add r0, r5, #1 cmp r0, #5 blt _02243EC8 @@ -21348,11 +21348,11 @@ _02243EC8: pop {r4, r5, r6, pc} _02243ECC: mov r1, #3 - bl FUN_0202A40C + bl SaveStruct23_Substruct2_SetField_0x2 add r5, r0, #0 add r0, r4, #0 mov r1, #0 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 cmp r0, #1 bne _02243EE4 mov r0, #0 @@ -21365,14 +21365,14 @@ _02243EE4: blo _02243F0C add r0, r4, #0 mov r1, #4 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 add r0, r4, #0 mov r1, #2 - bl FUN_0202A40C + bl SaveStruct23_Substruct2_SetField_0x2 add r0, r4, #0 mov r1, #4 mov r2, #2 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag mov r0, #1 pop {r4, r5, r6, pc} _02243F0C: @@ -21476,7 +21476,7 @@ MOD06_02243F9C: ; 0x02243F9C add r1, #8 lsl r1, r1, #0x10 lsr r1, r1, #0x10 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag lsl r0, r0, #0x18 lsr r0, r0, #0x18 bne _02243FC0 @@ -21749,7 +21749,7 @@ _022441B8: ldr r0, [r6, #0x74] ldr r1, [sp] ldr r2, [sp, #4] - bl FUN_0202A474 + bl SaveStruct23_Substruct2_SetArray ldr r0, [sp, #4] mov r1, #0 mov r2, #0xa8 @@ -21939,9 +21939,9 @@ MOD06_0224434C: ; 0x0224434C lsl r2, r2, #4 bl MI_CpuFill8 add r0, r6, #0 - bl FUN_0202A8E4 + bl SaveStruct23_GetSubstruct4 add r6, r0, #0 - bl FUN_0202A744 + bl SaveStruct23_Substruct4_GetField_0xFE cmp r0, #0 bne _0224437A add r0, r5, #0 @@ -22424,7 +22424,7 @@ _0224471C: ldr r0, [r6, #0x74] mov r1, #3 mov r2, #0 - bl FUN_0202A538 + bl SaveStruct23_Substruct2_SetField_0xC ldr r1, _02244754 ; =0x00000844 strh r0, [r6, r1] pop {r3, r4, r5, r6, r7, pc} diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c index 45b11873..681186f2 100644 --- a/arm9/modules/21/src/mod21_02254A6C.c +++ b/arm9/modules/21/src/mod21_02254A6C.c @@ -1,6 +1,8 @@ +#include "mod21_02254A6C.h" + #include "global.h" #include "heap.h" -#include "mod21_02254A6C.h" +#include "registers.h" #include "MI_memory.h" extern void MOD20_022536F4(u32 *param0, u32 param1); diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 6840cd32..8795cd7f 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -4440,7 +4440,7 @@ MOD54_021D9780: ; 0x021D9780 .word MOD54_021D9488, MOD54_021D94B4, MOD54_021D91B4, MOD54_021D9274 .word MOD54_021D94D0, MOD54_021D91BC, MOD54_021D92AC, MOD54_021D94E8 .word MOD54_021D91AC, MOD54_021D9238, MOD54_021D9500, FUN_0202B934 - .word MOD54_021D9518, MOD54_021D9520, FUN_0202A1E0, MOD54_021D9544 + .word MOD54_021D9518, MOD54_021D9520, SaveStruct23_Substruct4_Substruct1_sizeof, MOD54_021D9544 .word MOD54_021D956C .data diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 16e58c34..26a78f49 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -35,10 +35,10 @@ MOD74_021D74E0: ; 0x021D74E0 bl FUN_02029FC8 str r0, [r4, #0x1c] ldr r0, [r5] - bl FUN_0202A8D8 + bl SaveStruct23_GetSubstruct2 str r0, [r4, #0x20] ldr r0, [r5] - bl FUN_0202A8E4 + bl SaveStruct23_GetSubstruct4 str r0, [r4, #0x24] mov r0, #0x4a str r0, [r4] @@ -967,7 +967,7 @@ MOD74_021D7C10: ; 0x021D7C10 ldr r0, [r5, #0x20] lsr r1, r1, #0x10 mov r2, #0 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag lsl r2, r0, #0x10 add r0, sp, #0x18 ldrb r6, [r0, #0x10] @@ -1195,7 +1195,7 @@ _021D7E04: bl AddTextPrinterParameterized2 ldr r0, [r4, #0x20] mov r1, #0 - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 mov r1, #0 add r2, r0, #0 str r1, [sp] diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index b7ad2955..01d50253 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -1400,7 +1400,7 @@ MOD82_0222E050: ; 0x0222E050 ldr r0, [r4] mov r1, #0 ldr r0, [r0] - bl FUN_0202A444 + bl SaveStruct23_Substruct2_SetField_0x3 str r0, [r4, #0x38] str r0, [r4, #0x3c] mov r0, #1 @@ -2629,7 +2629,7 @@ _0222EA38: lsr r1, r1, #0x18 lsr r2, r2, #0x18 add r3, sp, #0 - bl FUN_0202A6B4 + bl SaveStruct23_Substruct4_GetArrayFlag cmp r0, #0 beq _0222EA66 mov r0, #0x12 @@ -2795,7 +2795,7 @@ _0222EB94: add r1, #0x48 lsr r2, r2, #0x18 lsr r3, r3, #0x18 - bl FUN_0202A754 + bl SaveStruct23_Substruct4_SetSubstruct1 add r0, r4, #0 mov r1, #0x25 mov r2, #0x11 @@ -2812,7 +2812,7 @@ _0222EB94: lsr r1, r1, #0x18 lsr r2, r2, #0x18 add r3, sp, #0 - bl FUN_0202A60C + bl SaveStruct23_Substruct4_SetArrayFlag b _0222EC44 _0222EBD6: mov r1, #0x3b @@ -2995,7 +2995,7 @@ _0222ED32: mov r1, #5 ldr r0, [r0] mov r2, #2 - bl FUN_0202A578 + bl SaveStruct23_Substruct2_SetFlag add r0, r4, #0 mov r1, #0x25 mov r2, #0x1a diff --git a/arm9/src/bag_view.c b/arm9/src/bag_view.c index 91bbafd2..31d53861 100644 --- a/arm9/src/bag_view.c +++ b/arm9/src/bag_view.c @@ -7,14 +7,13 @@ #include "player_data.h" #include "script_buffers.h" #include "seal.h" +#include "unk_0202A1E0.h" extern u32 *FUN_0202708C(u32 *); extern u32 FUN_02027168(u32 *); extern u16 FUN_02027184(u32 *); extern u32 *FUN_02027E24(struct SaveBlock2 *sav2); extern u8 FUN_02029E2C(struct SealCase *, u32); -extern u32 FUN_0202A8D8(struct SaveBlock2 *); -extern u16 FUN_0202A3B4(u32, u32, u32); THUMB_FUNC struct BagView *BagView_New(u8 heap_id) { @@ -122,7 +121,7 @@ THUMB_FUNC u32 FUN_0206E3D8(struct SaveBlock2 *sav2) THUMB_FUNC u32 FUN_0206E3E8(struct SaveBlock2 *sav2) { - return FUN_0202A3B4(FUN_0202A8D8(sav2), 0, 0); + return SaveStruct23_Substruct2_SetField_0x0(SaveStruct23_GetSubstruct2(sav2), 0, DATA_GET); } THUMB_FUNC BOOL FUN_0206E3F8(struct SaveBlock2 *sav2, struct String *dest, u32 item_id, u32 heap_id) diff --git a/arm9/src/save.c b/arm9/src/save.c index 89bd8374..7eb523f6 100644 --- a/arm9/src/save.c +++ b/arm9/src/save.c @@ -3,6 +3,7 @@ #include "save_block_2.h" #include "heap.h" #include "CARD_backup.h" +#include "OS_spinLock.h" #pragma thumb on diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index f4b18b86..1969e3f1 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -16,6 +16,7 @@ #include "unk_020139D8.h" #include "unk_02024E64.h" #include "sav_chatot.h" +#include "unk_0202A1E0.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); @@ -28,7 +29,6 @@ extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); extern u32 FUN_02029FB0(void); extern u32 Sav2_Chatot_sizeof(void); -extern u32 FUN_0202A89C(void); extern u32 FUN_0202A8F4(void); extern u32 FUN_0202A924(void); extern u32 FUN_0202ABC8(void); @@ -48,7 +48,6 @@ extern void FUN_0202805C(void *); extern void FUN_02028994(void *); extern void FUN_02029A8C(void *); extern void FUN_02029FB8(void *); -extern void FUN_0202A8A4(void *); extern void FUN_0202A8F8(void *); extern void FUN_0202A92C(void *); extern void FUN_0202ABCC(void *); @@ -88,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 }, { 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init }, { 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init }, - { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 }, + { 23, 0, (SAVSIZEFN)SaveStruct23_sizeof, (SAVINITFN)SaveStruct23_Init }, { 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 }, { 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C }, { 26, 0, (SAVSIZEFN)FUN_0202ABC8, (SAVINITFN)FUN_0202ABCC }, diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c index d4e8f8a1..4e7b03c7 100644 --- a/arm9/src/timer3.c +++ b/arm9/src/timer3.c @@ -1,5 +1,11 @@ #include "timer3.h" +#include "OS_interrupt.h" +#include "OS_irqTable.h" +#include "OS_timer.h" +#include "OS_system.h" +#include "registers.h" + static BOOL timer3_needReset; static vu64 timer3_counter; diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c new file mode 100644 index 00000000..151a9cd6 --- /dev/null +++ b/arm9/src/unk_0201C6B4.c @@ -0,0 +1,80 @@ +#include "global.h"
+#include "unk_0201C6B4.h"
+
+THUMB_FUNC s32 FUN_0201C6B4(s8 * r0)
+{
+ s32 r2 = 0;
+ while(r0[r2] != 0)
+ {
+ r2++;
+ }
+ return r2;
+}
+
+THUMB_FUNC s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2)
+{
+ for(int r3 = 0; r3 < 0x100; r3++)
+ {
+ r1[r3] = r0[r3];
+ if(r2 == r0[r3] || r0[r3] == 0)
+ {
+ r1[r3] = 0;
+ if(r2 == 0xd && r0[r3 + 1] == 0xa)
+ {
+ return &r0[r3 + 2];
+ }
+ return &r0[r3 + 1];
+ }
+ }
+ return NULL;
+}
+
+THUMB_FUNC s32 FUN_0201C70C(s8 * r4)
+{
+ s32 unk0 = FUN_0201C6B4(r4);
+ s32 r3;
+ s32 r5 = 1;
+ s32 r6 = 0;
+ for(r3 = unk0 - 1; r3 >= 0; r3--)
+ {
+ if(r4[r3] >= 0x30 && r4[r3] <= 0x39)
+ {
+ r6 += (r4[r3] - 0x30) * r5;
+ }
+ else
+ {
+ if(r3 == 0)
+ {
+ if(r4[r3] == 0x2d)
+ {
+ r6 *= -1;
+ }
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ r5 *= 0xa;
+ }
+ return r6;
+}
+
+THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4)
+{
+ for(u8 r2 = 0; r2 < 4; r2++)
+ {
+ s32 * unk5 = (s32 *)r5;
+ unk5[r2] = 0;
+ }
+ u8 r0 = (u8)(FUN_0201C6B4(r4));
+ for(u8 r2 = 0; r2 < r0; r2++)
+ {
+ r5[r2] = r4[r2];
+ }
+}
+
+THUMB_FUNC BOOL FUN_0201C78C(u32 r0)
+{
+ return r0 < 0x121;
+}
diff --git a/arm9/src/unk_0202A1E0.c b/arm9/src/unk_0202A1E0.c new file mode 100644 index 00000000..4f32d430 --- /dev/null +++ b/arm9/src/unk_0202A1E0.c @@ -0,0 +1,536 @@ +#include "global.h" +#include "MI_memory.h" +#include "msgdata.h" +#include "heap.h" +#include "unk_0202A1E0.h" + +THUMB_FUNC s32 SaveStruct23_Substruct4_Substruct1_sizeof() +{ + return sizeof(struct SaveStruct23_Substruct4_Substruct1); // 228 +} + +THUMB_FUNC void SaveStruct23_Substruct1_Init(struct SaveStruct23_Substruct1 *substruct1) +{ + MI_CpuFill8(substruct1, 0, sizeof(struct SaveStruct23_Substruct1)); +} + +THUMB_FUNC void SaveStruct23_Substruct2_Init(struct SaveStruct23_Substruct2 *substruct2) +{ + MI_CpuFill8(substruct2, 0, sizeof(struct SaveStruct23_Substruct2)); + substruct2->u_3 = 1; +} + +THUMB_FUNC void SaveStruct23_Messages_Init(struct SaveStruct23_Messages *messages) +{ + MailMsg_init_fromTemplate(&messages->messages[0], 0); + MailMsg_init_fromTemplate(&messages->messages[1], 1); + MailMsg_init_fromTemplate(&messages->messages[2], 2); + MailMsg_init_fromTemplate(&messages->messages[3], 3); +} + +THUMB_FUNC void SaveStruct23_Substruct4_Init(struct SaveStruct23_Substruct4 *substruct4) +{ + MI_CpuFill8(substruct4, 0, sizeof(struct SaveStruct23_Substruct4)); +} + +THUMB_FUNC u32 SaveStruct23_Substruct1_GetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *dst) +{ + switch (field) + { + case FIELD_0x0_2: + return substruct1->u_0_2; + case FIELD_0x2: + return substruct1->u_2; + case FIELD_0x3: + return substruct1->u_3; + case FIELD_0x4: + return substruct1->u_4; + case FIELD_0x6: + return substruct1->u_6; + case FIELD_0x8: + MI_CpuCopy8(&substruct1->u_8, dst, 4); + return 0; + case FIELD_0x2C: + MI_CpuCopy8(&substruct1->u_2C, dst, 16); + return 0; + case FIELD_flag0: + return substruct1->flag0; + case FIELD_0xC: + MI_CpuCopy8(&substruct1->u_C, dst, 28); + return 0; + case FIELD_0x0_5: + return substruct1->u_0_5; + case FIELD_0x28: + return substruct1->u_28; + default: + return 0; + }; +} + +THUMB_FUNC void SaveStruct23_Substruct1_SetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *value) +{ + switch (field) + { + case FIELD_0x0_2: + substruct1->u_0_2 = *(u8 *)value; + break; + case FIELD_0x2: + substruct1->u_2 = *(u8 *)value; + break; + case FIELD_0x3: + substruct1->u_3 = *(u8 *)value; + break; + case FIELD_0x4: + substruct1->u_4 = *(u16 *)value; + break; + case FIELD_0x6: + substruct1->u_6 = *(u16 *)value; + break; + case FIELD_0x8: + MI_CpuCopy8(value, &substruct1->u_8, 4); + break; + case FIELD_0x2C: + MI_CpuCopy8(value, &substruct1->u_2C, 16); + break; + case FIELD_flag0: + substruct1->flag0 = *(u8 *)value; + break; + case FIELD_0xC: + MI_CpuCopy8(value, &substruct1->u_C, 28); + break; + case FIELD_0x28: + substruct1->u_28 = *(u32 *)value; + break; + case FIELD_0x0_5: + substruct1->u_0_5 = *(u8 *)value; + break; + } +} + +THUMB_FUNC void FUN_0202A36C(struct SaveStruct23_Substruct1 *substruct1, s32 arg1, s32 arg2, s32 arg3) +{ + if (substruct1->u_3 + arg1 < 0xff) + { + substruct1->u_3 += arg1; + } + + if (substruct1->u_4 + arg2 < 0xffff) + { + substruct1->u_4 += arg2; + } + + if (substruct1->u_6 + arg3 < 0xffff) + { + substruct1->u_6 += arg3; + } +} + +THUMB_FUNC BOOL SaveStruct23_Substruct1_GetFlag1(struct SaveStruct23_Substruct1 *substruct1) +{ + return substruct1->flag1; +} + +THUMB_FUNC void SaveStruct23_Substruct1_SetFlag1(struct SaveStruct23_Substruct1 *substruct1, BOOL flag) +{ + substruct1->flag1 = flag; +} + +THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0x0(struct SaveStruct23_Substruct2 *substruct2, u16 value, DataSetMode mode) +{ + switch (mode) + { + case DATA_SET: + if (value > 9999) + { + substruct2->u_0 = 9999; + } + else + { + substruct2->u_0 = value; + } + break; + case DATA_ADD: + if (substruct2->u_0 + value > 9999) + { + substruct2->u_0 = 9999; + } + else + { + substruct2->u_0 += value; + } + break; + case DATA_SUBSTRACT: + if (substruct2->u_0 < value) + { + substruct2->u_0 = 0; + } + else + { + substruct2->u_0 -= value; + } + break; + case DATA_GET: + default: + break; + } + return substruct2->u_0; +} + +THUMB_FUNC u8 SaveStruct23_Substruct2_SetField_0x2(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode) +{ + switch (mode) + { + case DATA_RESET: + substruct2->u_2 = 0; + substruct2->flag4 = 0; + break; + case DATA_INCREMENT: + if (substruct2->flag4) + { + substruct2->u_2++; + } + else + { + substruct2->u_2 = 1; + substruct2->flag4 = 1; + } + break; + } + return substruct2->u_2; +} + +THUMB_FUNC u8 SaveStruct23_Substruct2_SetField_0x3(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode) +{ + switch (mode) + { + case DATA_RESET: + substruct2->u_3 = 1; + break; + case DATA_INCREMENT: + if (substruct2->u_3 < 10) + { + substruct2->u_3++; + } + break; + case DATA_DECREMENT: + if (substruct2->u_3 > 1) + { + substruct2->u_3--; + } + break; + } + return substruct2->u_3; +} + +THUMB_FUNC void SaveStruct23_Substruct2_SetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *src) +{ + if (mode == 0) + { + MI_CpuCopy8(src, substruct2->u_C0, 168); + } + else + { + MI_CpuCopy8(src, substruct2->u_18, 168); + } +} + +THUMB_FUNC void SaveStruct23_Substruct2_GetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *dst) +{ + if (mode == 0) + { + MI_CpuCopy8(substruct2->u_C0, dst, 168); + } + else + { + MI_CpuCopy8(substruct2->u_18, dst, 168); + } +} + +THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0x16(struct SaveStruct23_Substruct2 *substruct2, struct Unk0202A4B8 *arg1) +{ + u16 var1, var2, var3, var4, var5, total; + + var1 = (u16) ((arg1->u_2 - 1) * 1000); + var2 = (u16) (arg1->u_4 * 10); + var3 = (u16) (arg1->u_3 * 20); + + if (var2 + var3 > 950) + { + var4 = 0; + } + else + { + var4 = (u16) (950 - (var2 + var3)); + } + + if (arg1->u_6 > 970) + { + var5 = 0; + } + else + { + var5 = (u16) ((1000 - arg1->u_6) / 30); + } + + total = (u16) (var1 + var4 + var5); + substruct2->u_16 = total; + return total; +} + +THUMB_FUNC u16 SaveStruct23_Substruct2_GetField_0x16(struct SaveStruct23_Substruct2 *substruct2) +{ + return substruct2->u_16; +} + +THUMB_FUNC u8 FUN_0202A524(struct SaveStruct23_Substruct2 *substruct2) +{ + return (u8)(substruct2->u_16 / 1000); +} + +THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0xC(struct SaveStruct23_Substruct2 *substruct2, u16 arg1, DataSetMode mode) +{ + if (arg1 == 5) + { + return 0; + } + + switch(mode) { + case DATA_RESET: + substruct2->u_C[arg1] = 0; + break; + case DATA_INCREMENT: + if (substruct2->u_C[arg1] < 0xfffe) { + substruct2->u_C[arg1]++; + } + break; + } + return substruct2->u_C[arg1]; +} + +THUMB_FUNC BOOL SaveStruct23_Substruct2_SetFlag(struct SaveStruct23_Substruct2 *substruct2, u16 flagNumber, DataSetMode mode) +{ + u16 i; + u16 flag = 1; + + for (i = 0; i < flagNumber ; i++) + { + flag <<= 1; + } + + switch (mode) + { + case DATA_RESET: + flag = (u16) (flag ^ 0xffff); + substruct2->flags &= flag; + break; + case DATA_SET: + substruct2->flags |= flag; + break; + case DATA_GET: + return (BOOL) ((substruct2->flags >> flagNumber) & 1); + } + + return FALSE; +} + + +THUMB_FUNC void SaveStruct23_Substruct2_SetField_0x4(struct SaveStruct23_Substruct2 *substruct2, u32 value) +{ + substruct2->u_4 = value; +} + +THUMB_FUNC u32 SaveStruct23_Substruct2_GetField_0x4(struct SaveStruct23_Substruct2 *substruct2) +{ + return substruct2->u_4; +} + + +THUMB_FUNC void SaveStruct23_SetMessage(struct SaveBlock2 *sav2, u32 index, struct MailMessage *message) +{ + struct SaveStruct23 *data = SavArray_get(sav2, 23); + MailMsg_copy(&data->messages.messages[index], message); +} + +THUMB_FUNC struct MailMessage *SaveStruct23_GetMessage(struct SaveBlock2 *sav2, u32 index) +{ + struct SaveStruct23 *data = SavArray_get(sav2, 23); + return &data->messages.messages[index]; +} + +THUMB_FUNC void SaveStruct23_Substruct4_SetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) { + + u8 flag = 1; + + if (arg2 == 0 || arg2 > 200) + { + return; + } + + if (arg1 == 0 || arg1 > 10) + { + return; + } + + u16 var1 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); + u8 index = (u8) (var1 / 8); + u8 remainder = (u8) (var1 % 8); + flag <<= remainder; + + substruct4->flags[index] |= flag; + substruct4->u_0 = (arg3->u_0 << 24) | ((arg3->u_4 & 0xff) << 16) | ((arg3->u_8 & 0xff) << 8) | arg3->u_C; +} + +THUMB_FUNC void SaveStruct23_Substruct4_ClearArrayFlags(struct SaveStruct23_Substruct4 *substruct4) +{ + + MI_CpuFill8(substruct4->flags, 0, 250); + MI_CpuFill8(&substruct4->u_0, 0, 4); +} + +THUMB_FUNC BOOL StructUnk0202A68C_Compare(struct Unk0202A68C *struct1, struct Unk0202A68C *struct2) +{ + if (struct1->u_0 > struct2->u_0) { + return TRUE; + } else if (struct1->u_4 > struct2->u_4) { + return TRUE; + } else if (struct1->u_8 > struct2->u_8) { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC BOOL SaveStruct23_Substruct4_GetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) +{ + u8 flag = 1; + + if (arg2 > 200 || arg1 > 10) + { + return FALSE; + } + + u32 var0 = substruct4->u_0; + + Unk0202A68C var1; + var1.u_0 = var0 >> 24 & 0xff; + var1.u_4 = var0 >> 16 & 0xff; + var1.u_8 = var0 >> 8 & 0xff; + var1.u_C = var0 & 0xff; + + if (StructUnk0202A68C_Compare(arg3, &var1)) + { + SaveStruct23_Substruct4_ClearArrayFlags(substruct4); + return FALSE; + } + + u16 var2 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); + u8 index = (u8) (var2 / 8); + u8 remainder = (u8) (var2 % 8); + flag <<= remainder; + + if (substruct4->flags[index] & flag) + { + return TRUE; + } + return FALSE; +} + + +THUMB_FUNC u8 SaveStruct23_Substruct4_GetField_0xFE(struct SaveStruct23_Substruct4 *substruct4) +{ + return substruct4->u_FE; +} + +THUMB_FUNC u8 SaveStruct23_Substruct4_GetField_0xFF(struct SaveStruct23_Substruct4 *substruct4) +{ + return substruct4->u_FF; +} + +THUMB_FUNC void SaveStruct23_Substruct4_SetSubstruct1(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct1 *substruct1, u8 arg2, u8 arg3) +{ + MI_CpuCopy8(substruct1, &substruct4->substruct1, sizeof(struct SaveStruct23_Substruct4_Substruct1)*7); + substruct4->u_101 = arg2; + substruct4->u_100 = arg3; + substruct4->u_FE = 1; +} + +THUMB_FUNC void FUN_0202A784(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dst) +{ + dst->u_0 = substruct4->u_101; + dst->u_1 = substruct4->u_100; +} + +THUMB_FUNC void FUN_0202A798(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A798 *arg1, u32 arg2) +{ + struct Unk0202A798_substruct *unk_substruct = &arg1->u_0; + u8 *var1 = arg1->u_30; + struct SaveStruct23_Substruct4_Substruct1 *substruct4_substruct1 = &substruct4->substruct1[arg2]; + struct MsgData *message; + + unk_substruct->u_0 = 10000; + unk_substruct->u_4 = substruct4_substruct1->u_C9; + + if(substruct4_substruct1->u_C8_0) + { + message = NewMsgDataFromNarc(0, NARC_MSGDATA_MSG, 17, 11); + ReadMsgDataIntoU16Array(message, (u32) (22 + substruct4_substruct1->u_C8_1), unk_substruct->u_8); + DestroyMsgData(message); + } + else + { + MI_CpuCopy8(substruct4_substruct1->u_A8, unk_substruct->u_8, 16); + } + + MI_CpuCopy8(substruct4_substruct1->u_CA, unk_substruct->u_18, 8); + MI_CpuCopy8(substruct4_substruct1->u_D2, unk_substruct->u_20, 8); + MI_CpuCopy8(substruct4_substruct1->u_DA, unk_substruct->u_28, 8); + MI_CpuCopy8(substruct4_substruct1->u_0, var1, 168); +} + +THUMB_FUNC void FUN_0202A838(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2, u8 arg2, u8 arg3) +{ + MI_CpuCopy8(substruct4_substruct2, &substruct4->substruct2, sizeof(struct SaveStruct23_Substruct4_Substruct2)); + substruct4->u_103 = arg2; + substruct4->u_102 = arg3; + substruct4->u_FF = 1; +} + +THUMB_FUNC void FUN_0202A864(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dst) +{ + dst->u_0 = substruct4->u_103; + dst->u_1 = substruct4->u_102; +} + +THUMB_FUNC struct SaveStruct23_Substruct4_Substruct2 *FUN_0202A878(struct SaveStruct23_Substruct4 *substruct4, u32 heap_id) +{ + struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2 = AllocFromHeap(heap_id, sizeof(struct SaveStruct23_Substruct4_Substruct2) /* 1020 */); + MI_CpuCopy8(&substruct4->substruct2, substruct4_substruct2, sizeof(struct SaveStruct23_Substruct4_Substruct2)); + return substruct4_substruct2; +} + +THUMB_FUNC s32 SaveStruct23_sizeof() +{ + return sizeof(struct SaveStruct23); // 0xD00 (3328) +} + +THUMB_FUNC void SaveStruct23_Init(struct SaveStruct23 *saveStruct23) +{ + SaveStruct23_Substruct1_Init(&saveStruct23->substruct1); + SaveStruct23_Substruct2_Init(&saveStruct23->substruct2); + SaveStruct23_Messages_Init(&saveStruct23->messages); + SaveStruct23_Substruct4_Init(&saveStruct23->substruct4); +} + +THUMB_FUNC struct SaveStruct23_Substruct1 *SaveStruct23_GetSubstruct1(struct SaveBlock2* sav2) +{ + return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct1; +} + +THUMB_FUNC struct SaveStruct23_Substruct2 *SaveStruct23_GetSubstruct2(struct SaveBlock2* sav2) +{ + return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct2; +} + +THUMB_FUNC struct SaveStruct23_Substruct4 *SaveStruct23_GetSubstruct4(struct SaveBlock2* sav2) +{ + return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct4; +}
\ No newline at end of file diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index cabd756e..a023ad83 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -1,5 +1,6 @@ #include "unk_0205FA2C.h" #include "unk_020337E8.h" +#include "unk_0202A1E0.h" extern void *UNK_020F96DC; extern void *UNK_020FA6E8; @@ -11,17 +12,9 @@ extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); extern u16 MOD06_02244660(struct UnkSavStruct80 *param0, u8 *param1); extern u16 MOD06_022446BC(struct UnkSavStruct80 *param0, u8 *param1); extern u16 MOD06_022446E0(struct UnkSavStruct80 *param0, u8 *param1); -extern void FUN_0202A5CC(u32 param0, u32 param1); -extern u32 FUN_0202A5D0(u32 param0); extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1); -extern u32 FUN_0202A8D8(struct SaveBlock2 *sav2); -extern u32 FUN_0202A578(u32 param0, u32 param1, u32 param2); extern u32 FUN_02026CC4(struct SaveBlock2 *sav2); extern u32 FUN_02025D94(u32 param0, u32 param1); -extern u32 FUN_0202A8CC(struct SaveBlock2 *sav2); -extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); -extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); -extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); const u8 UNK_020F7454[] = { 0x00, @@ -327,33 +320,33 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) return 0; } - u32 res2 = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); - u8 res4 = (u8)FUN_0202A578(res2, 0, 0); - u8 res5 = (u8)FUN_0202A578(res2, 1, 0); + BOOL flagD = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_GET); + BOOL flag0 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_GET); + BOOL flag1 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_GET); - u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); - u8 res7 = (u8)FUN_0202A578(res2, 2, 0); - u8 res8 = (u8)FUN_0202A578(res2, 3, 0); + BOOL flagE = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_GET); + BOOL flag2 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_GET); + BOOL flag3 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_GET); - if (res3 != 0 && res4 != 0 && res5 != 0) + if (flagD && flag0 && flag1) { return 0; } u32 res9 = FUN_02026CC4(sav2); - if (res3 == 0) + if (!flagD) { if (FUN_02025D94(res9, 0x55) != 0) { - FUN_0202A578(res2, 0xd, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_SET); return 1; } - if (res6 == 0) + if (!flagE) { - FUN_0202A578(res2, 0xe, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_SET); } return 4; @@ -364,36 +357,36 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) return 0; } - if (res4 == 0) + if (!flag0) { if (FUN_02025D94(res9, 0x56) != 0) { - FUN_0202A578(res2, 0, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_SET); return 2; } - if (res7 == 0) + if (!flag2) { - FUN_0202A578(res2, 2, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_SET); } return 4; } - if (res < 100 || res5 != 0) + if (res < 100 || flag1) { return 0; } if (FUN_02025D94(res9, 0x57) != 0) { - FUN_0202A578(res2, 1, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_SET); return 3; } - if (res8 == 0) + if (!flag3) { - FUN_0202A578(res2, 3, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_SET); } return 4; @@ -407,24 +400,24 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) return 0; } - u32 res2 = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); - u8 res4 = (u8)FUN_0202A578(res2, 0, 0); - u8 res5 = (u8)FUN_0202A578(res2, 1, 0); + BOOL flagD = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_GET); + BOOL flag0 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_GET); + BOOL flag1 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_GET); - u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); - u8 res7 = (u8)FUN_0202A578(res2, 2, 0); - u8 res8 = (u8)FUN_0202A578(res2, 3, 0); + BOOL flagE = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_GET); + BOOL flag2 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_GET); + BOOL flag3 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_GET); - if (res3 != 0 && res4 != 0 && res5 != 0) + if (flagD && flag0 && flag1) { return 0; } - if (res3 == 0) + if (!flagD) { - if (res6 != 0) + if (flagE) { return 4; } @@ -437,9 +430,9 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) return 0; } - if (res4 == 0) + if (!flag0) { - if (res7 != 0) + if (flag2) { return 5; } @@ -452,12 +445,12 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) return 0; } - if (res5 != 0) + if (flag1) { return 0; } - if (res8 != 0) + if (flag3) { return 6; } @@ -488,42 +481,42 @@ THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2) { u32 res = FUN_02060070(FUN_020287A4(FUN_0202881C(sav2))); - FUN_0202A5CC(FUN_0202A8D8(sav2), res); + SaveStruct23_Substruct2_SetField_0x4(SaveStruct23_GetSubstruct2(sav2), res); return res; } THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2) { - u32 res = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u32 res2 = FUN_02060070(FUN_0202A5D0(res)); + u32 res2 = FUN_02060070(SaveStruct23_Substruct2_GetField_0x4(saveStruct23_substruct2)); - FUN_0202A5CC(res, res2); + SaveStruct23_Substruct2_SetField_0x4(saveStruct23_substruct2, res2); u32 res3 = FUN_02060064(res2); - FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + SaveStruct23_Substruct1_SetField(SaveStruct23_GetSubstruct1(sav2), FIELD_0x28, &res3); return res3; } THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) { - u32 res = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u32 res2 = FUN_0202A8CC(sav2); + struct SaveStruct23_Substruct1 *saveStruct23_substruct1 = SaveStruct23_GetSubstruct1(sav2); - u32 res3 = FUN_02060064(FUN_0202A5D0(res)); + u32 res3 = FUN_02060064(SaveStruct23_Substruct2_GetField_0x4(saveStruct23_substruct2)); int i = 0; - int res4 = FUN_0202A538(res, (u16)FUN_0202A240(res2, 0, 0), 0) * 0x18; + int res4 = SaveStruct23_Substruct2_SetField_0xC(saveStruct23_substruct2, (u16)SaveStruct23_Substruct1_GetField(saveStruct23_substruct1, FIELD_0x0_2, 0), DATA_GET) * 0x18; for (i = 0; i < res4; i++) { res3 = FUN_02060064(res3); } - FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + SaveStruct23_Substruct1_SetField(SaveStruct23_GetSubstruct1(sav2), FIELD_0x28, &res3); return res3; } diff --git a/include/global.h b/include/global.h index 1853dbc3..8353ed2c 100644 --- a/include/global.h +++ b/include/global.h @@ -5,7 +5,7 @@ #include "MWC_string.h" #include "function_target.h" -#include "nitro.h" +#include "nitro/types.h" #include "constants/global.h" #include "error_handling.h" diff --git a/include/heap.h b/include/heap.h index 36c747a7..57cd88e8 100644 --- a/include/heap.h +++ b/include/heap.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_HEAP_H #include "global.h" +#include "nitro/OS_arena_shared.h" #include "NNS_FND_expheap.h" #include "NNS_FND_allocator.h" diff --git a/include/nitro/OS_alarm_shared.h b/include/nitro/OS_alarm_shared.h index fe549351..1a24f139 100644 --- a/include/nitro/OS_alarm_shared.h +++ b/include/nitro/OS_alarm_shared.h @@ -15,6 +15,7 @@ #include "nitro/types.h" #include "nitro/OS_tick_shared.h" +#include "nitro/OS_thread_shared.h" typedef void (*OSAlarmHandler) (void *); diff --git a/include/nitro/OS_thread_shared.h b/include/nitro/OS_thread_shared.h index a0cce54d..0c0e7f9a 100644 --- a/include/nitro/OS_thread_shared.h +++ b/include/nitro/OS_thread_shared.h @@ -15,6 +15,9 @@ #include "nitro/types.h" +/* UGLY HACK: include proc specific header for OSContext */ +#include "OS_context.h" + typedef struct OSiAlarm OSAlarm; typedef struct _OSThread OSThread; diff --git a/include/nitro/SND_alarm_shared.h b/include/nitro/SND_alarm_shared.h new file mode 100644 index 00000000..a1e8ed9d --- /dev/null +++ b/include/nitro/SND_alarm_shared.h @@ -0,0 +1,30 @@ +/* + * NOTE: + * This file is shared between ARM9 and ARM7 + * DO NOT PUT PROC SPECIFIC CODE IN HERE + * Thank You! + */ + +/* + * DO NOT INCLUDE THIS FILE DIRECTLY + * Include SND_alarm.h from the specific proc's lib + */ + +#ifndef POKEDIAMOND_SND_ALARM_SHARED_H +#define POKEDIAMOND_SND_ALARM_SHARED_H + +#include "nitro/OS_tick_shared.h" +#include "nitro/OS_alarm_shared.h" + +struct SNDAlarm { + u8 enable; // 0x00 + u8 id; // 0x01 + u16 unk_2; // 0x02 + OSTick tick; // 0x04 + OSTick period; // 0x0C + OSAlarm alarm; // 0x14 +}; // size = 0x40 + +#define SND_ALARM_COUNT 8 + +#endif //POKEDIAMOND_SND_ALARM_SHARED_H diff --git a/include/nitro/SND_main_shared.h b/include/nitro/SND_main_shared.h new file mode 100644 index 00000000..d77273ed --- /dev/null +++ b/include/nitro/SND_main_shared.h @@ -0,0 +1,176 @@ +/* + * NOTE: + * This file is shared between ARM9 and ARM7 + * DO NOT PUT PROC SPECIFIC CODE IN HERE + * Thank You! + */ + +/* + * DO NOT INCLUDE THIS FILE DIRECTLY + * Include SND_main.h from the specific proc's lib + */ + +#ifndef POKEDIAMOND_SND_MAIN_SHARED_H +#define POKEDIAMOND_SND_MAIN_SHARED_H + +struct SNDWaveParam { + u8 format; // 0x0 + u8 loopEnabled; // 0x1 + u16 samplerate; // 0x2 + u16 timer; // 0x4 + u16 loopStart; // 0x6 + u32 loopLength; // 0x8 +}; // size = 0xC + +struct SNDLfoParam { + u8 target; // 0x0 + u8 speed; // 0x1 + u8 depth; // 0x2 + u8 range; // 0x3 + u16 delay; // 0x4 +}; // size = 0x6 + +struct SNDLfo { + struct SNDLfoParam param; // 0x0 + u16 delayCounter; // 0x6 + u16 counter; // 0x8 +}; // size = 0xA + +struct SNDExChannel { + u8 id; // 0x00 + u8 type; // 0x01 + u8 envStatus; // 0x02 + + struct { + u8 active : 1; + u8 start : 1; + u8 autoSweep : 1; + u8 syncFlag : 5; + } flags; // 0x03 + + u8 panRange; // 0x04 + u8 rootMidiKey; // 0x05 + s16 userDecay2; // 0x06 + + u8 midiKey; // 0x08 + u8 velocity; // 0x09 + s8 initPan; // 0x0A + s8 userPan; // 0x0B + + s16 userDecay; // 0x0C + s16 userPitch; // 0x0E + + s32 envAttenuation; // 0x10 + s32 sweepCounter; // 0x14 + s32 sweepLength; // 0x18 + + u8 envAttack; // 0x1C + u8 envSustain; // 0x1D + u16 envDecay; // 0x1E + u16 envRelease; // 0x20 + u8 priority; // 0x22 + u8 pan; // 0x23 + u16 volume; // 0x24 + u16 timer; // 0x26 + + struct SNDLfo lfo; // 0x28 + + s16 sweepPitch; // 0x32 + + s32 length; // 0x34 + + struct SNDWaveParam waveParam; // 0x38 + + union { + const void *waveDataPtr; + u32 dutyCycle; + }; // 0x44 + + void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48 + void *callbackUserData; // 0x4C + + struct SNDExChannel *channelLLNext; // 0x50 +}; // size = 0x54 + +#define SND_TRACK_COUNT_PER_PLAYER 16 +#define SND_INVALID_TRACK_INDEX 0xFF + +struct SNDBankData; + +struct SNDPlayer { + struct { + u8 active : 1; + u8 prepared : 1; + u8 paused : 1; + } flags; // 0x0 + + u8 playerId; // 0x1 + u8 unk_2[2]; // 0x2 + + u8 prio; // 0x4 + u8 volume; // 0x5 + s16 extFader; // 0x6 + + u8 tracks[SND_TRACK_COUNT_PER_PLAYER]; // 0x8 + + u16 tempo; // 0x18 + u16 tempoRatio; // 0x1A + u16 tempoCounter; // 0x1C + u8 unk_1E[2]; // 0x1E + + struct SNDBankData *bank; // 0x20 +}; // size = 0x24 + +#define SND_TRACK_MAX_CALL 3 + +struct SNDTrack { + struct { + u8 active : 1; + u8 noteWait : 1; + u8 muted : 1; + u8 tie : 1; + u8 noteFinishWait : 1; + u8 portamento : 1; + u8 cmp : 1; // ??? + u8 channelMask : 1; + } flags; // 0x00 + + u8 panRange; // 0x01 + u16 program; // 0x02 + + u8 volume; // 0x04 + u8 expression; // 0x05 + s8 pitchBend; // 0x06 + u8 bendRange; // 0x07 + + s8 pan; // 0x08 + s8 extPan; // 0x09 + s16 extFader; // 0x0A + s16 extPitch; // 0x0C + u8 envAttack; // 0x0E + u8 envDecay; // 0x0F + u8 envSustain; // 0x10 + u8 envRelease; // 0x11 + u8 priority; // 0x12 + s8 transpose; // 0x13 + + u8 portamentoKey; // 0x14 + u8 portamentoTime; // 0x15 + s16 sweepPitch; // 0x16 + + struct SNDLfoParam mod; // 0x18 + u16 channelMask; // 0x1E + + s32 wait; // 0x20 + + const u8 *trackDataStart; // 0x24 + const u8 *trackDataPos; // 0x28 + const u8 *posCallStack[SND_TRACK_MAX_CALL]; // 0x34 + u8 loopCount[SND_TRACK_MAX_CALL]; // 0x38 + u8 callStackDepth; // 0x3B + + struct SNDExChannel *channelLLHead; // 0x3C +}; // size = 0x40 + + #endif //POKEDIAMOND_SND_MAIN_SHARED_H +
\ No newline at end of file diff --git a/include/nitro/SND_work_shared.h b/include/nitro/SND_work_shared.h new file mode 100644 index 00000000..0de3981e --- /dev/null +++ b/include/nitro/SND_work_shared.h @@ -0,0 +1,46 @@ +/* + * NOTE: + * This file is shared between ARM9 and ARM7 + * DO NOT PUT PROC SPECIFIC CODE IN HERE + * Thank You! + */ + +/* + * DO NOT INCLUDE THIS FILE DIRECTLY + * Include SND_work.h from the specific proc's lib + */ + +#ifndef POKEDIAMOND_SND_WORK_SHARED_H +#define POKEDIAMOND_SND_WORK_SHARED_H + +#include "nitro/SND_alarm_shared.h" +#include "nitro/SND_main_shared.h" + +#define SND_PLAYER_COUNT 16 +#define SND_CHANNEL_COUNT 16 +#define SND_TRACK_COUNT 32 + +struct SNDWork { + struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00 + struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540 + struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780 + struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80 +}; // size = 0x1180 + +struct SNDSharedWork { + u32 finishedCommandTag; // 0x0 + u32 playerStatus; // 0x4 + u16 channelStatus; // 0x8 + u16 captureStatus; // 0xA + u8 unk_C[0x14]; // 0xC + struct { + s16 localVars[16]; // local 0x0 + u32 tickCounter; // local 0x20 + } players[SND_PLAYER_COUNT]; // 0x20 + s16 globalVars[16]; // 0x260 +}; // size = 0x280 + +extern struct SNDWork SNDi_Work; +extern struct SNDSharedWork *SNDi_SharedWork; + + #endif //POKEDIAMOND_SND_WORK_SHARED_H diff --git a/include/unk_0201C6B4.h b/include/unk_0201C6B4.h new file mode 100644 index 00000000..0a501954 --- /dev/null +++ b/include/unk_0201C6B4.h @@ -0,0 +1,10 @@ +#ifndef POKEDIAMOND_UNK_0201C6B4_H +#define POKEDIAMOND_UNK_0201C6B4_H + +s32 FUN_0201C6B4(s8 * r0); +s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2); +s32 FUN_0201C70C(s8 * r4); +void FUN_0201C750(s8 * r5, s8 * r4); +BOOL FUN_0201C78C(u32 r0); + +#endif // POKEDIAMOND_UNK_0201C6B4_H diff --git a/include/unk_0202A1E0.h b/include/unk_0202A1E0.h new file mode 100644 index 00000000..8c1e5da9 --- /dev/null +++ b/include/unk_0202A1E0.h @@ -0,0 +1,209 @@ +#ifndef POKEDIAMOND_UNK_0202A1E0_H +#define POKEDIAMOND_UNK_0202A1E0_H + +#include "mail_message.h" +#include "save_block_2.h" + +typedef enum +{ + DATA_GET = 0, + DATA_SET, + DATA_RESET, + DATA_INCREMENT, + DATA_DECREMENT, + DATA_ADD, + DATA_SUBSTRACT +} +DataSetMode; + +typedef enum +{ + FIELD_0x0_2 = 0, + FIELD_0x2, + FIELD_0x3, + FIELD_0x4, + FIELD_0x6, + FIELD_0x8, + FIELD_0x2C, + FIELD_flag0, + FIELD_0xC, + FIELD_0x0_5, + FIELD_0x28, +} +SaveStruct23_Substruct1_Field; + +struct SaveStruct23_Substruct1 +{ + /* 0x000 */ u8 flag0 : 1; + u8 flag1 : 1; + u8 u_0_2 : 3; + u8 u_0_5 : 3; + /* 0x001 */ u8 u_1; + /* 0x002 */ u8 u_2; + /* 0x003 */ u8 u_3; + /* 0x004 */ u16 u_4; + /* 0x006 */ u16 u_6; + /* 0x008 */ s32 u_8; + /* 0x00C */ s32 u_C[7]; + /* 0x028 */ u32 u_28; + /* 0x02C */ s32 u_2C[4]; +}; // total size = 0x3C (60) + +struct SaveStruct23_Substruct2 +{ + /* 0x000 */ u16 u_0; + /* 0x002 */ u8 u_2; + /* 0x003 */ u8 u_3; + /* 0x004 */ u32 u_4; + + union + { + struct + { + /* 0x008 */ u16 flag0:1; + u16 flag1:1; + u16 flag2:1; + u16 flag3:1; + u16 flag4:1; + u16 filler_1:11; + }; + /* 0x008 */ u16 flags; + }; + /* 0x00A */ u8 filler_2[2]; + /* 0x00C */ u16 u_C[5]; + /* 0x016 */ u16 u_16; + /* 0x018 */ u8 u_18[168]; + /* 0x0C0 */ u8 u_C0[168]; +}; // total size 0x168 (360) + +struct SaveStruct23_Messages +{ + /* 0x000 */ struct MailMessage messages[4]; +}; // total size 0x020 (32) + +struct SaveStruct23_Substruct4_Substruct1 +{ + /* 0x000 */ u8 u_0[168]; + /* 0x0A8 */ u8 u_A8[16]; + /* 0x0B8 */ u8 filler_1[16]; + /* 0x0C8 */ u8 u_C8_0:1; + u8 u_C8_1:1; + u8 filler_2:6; + /* 0x0C8 */ u8 u_C9; + /* 0x0CA */ u16 u_CA[4]; + /* 0x0D2 */ u16 u_D2[4]; + /* 0x0DA */ u16 u_DA[4]; + /* 0x0E2 */ u8 filler_3[2]; +}; // total size 0xE4 (228) + +struct SaveStruct23_Substruct4_Substruct2 +{ + /* 0x00 */ u8 u_0[1020]; +}; + +struct SaveStruct23_Substruct4 +{ + /* 0x000 */ u32 u_0; + /* 0x004 */ u8 flags[250]; + /* 0x0FE */ u8 u_FE; + /* 0x0FF */ u8 u_FF; + /* 0x100 */ u8 u_100; + /* 0x101 */ u8 u_101; + /* 0x102 */ u8 u_102; + /* 0x103 */ u8 u_103; + /* 0x104 */ struct SaveStruct23_Substruct4_Substruct1 substruct1[7]; + /* 0x740 */ struct SaveStruct23_Substruct4_Substruct2 substruct2; +}; // total size 0xB3C (2876) + +struct SaveStruct23 // Struct fetched with SavArray_get(sav2, 23) +{ + /* 0x000 */ struct SaveStruct23_Substruct1 substruct1; + /* 0x03C */ struct SaveStruct23_Substruct2 substruct2; + /* 0x1A4 */ struct SaveStruct23_Messages messages; + /* 0x1C4 */ struct SaveStruct23_Substruct4 substruct4; +}; // total size = 0xD00 (3328) + +struct Unk0202A4B8 +{ + /* 0x000 */ u8 filler_1[2]; + /* 0x002 */ u8 u_2; + /* 0x003 */ u8 u_3; + /* 0x004 */ u16 u_4; + /* 0x006 */ u16 u_6; +}; + +typedef struct Unk0202A68C +{ + /* 0x000 */ u32 u_0; + /* 0x004 */ u32 u_4; + /* 0x008 */ u32 u_8; + /* 0x00C */ u32 u_C; +} +Unk0202A68C; // total size 0x10 (16) + +struct Unk0202A784 +{ + /* 0x000 */ u8 u_0; + /* 0x001 */ u8 u_1; +}; + +struct Unk0202A798_substruct +{ + /* 0x000 */ u32 u_0; + /* 0x004 */ u16 u_4; + /* 0x006 */ u8 filler_1[2]; + /* 0x008 */ u16 u_8[8]; + /* 0x018 */ u16 u_18[4]; + /* 0x020 */ u16 u_20[4]; + /* 0x028 */ u16 u_28[4]; +}; // total size 0x30 (48) + +struct Unk0202A798 +{ + /* 0x000 */ struct Unk0202A798_substruct u_0; + /* 0x030 */ u8 u_30[168]; +}; + +s32 SaveStruct23_Substruct4_Substruct1_sizeof(); +void SaveStruct23_Substruct1_Init(struct SaveStruct23_Substruct1 *substruct1); +void SaveStruct23_Substruct2_Init(struct SaveStruct23_Substruct2 *substruct2); +void SaveStruct23_Messages_Init(struct SaveStruct23_Messages *mailStruct); +void SaveStruct23_Substruct4_Init(struct SaveStruct23_Substruct4 *substruct4); +u32 SaveStruct23_Substruct1_GetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *dst); +void SaveStruct23_Substruct1_SetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *value); +void FUN_0202A36C(struct SaveStruct23_Substruct1 *substruct1, s32 arg1, s32 arg2, s32 arg3); +BOOL SaveStruct23_Substruct1_GetFlag1(struct SaveStruct23_Substruct1 *substruct1); +void SaveStruct23_Substruct1_SetFlag1(struct SaveStruct23_Substruct1 *substruct1, BOOL arg1); +u16 SaveStruct23_Substruct2_SetField_0x0(struct SaveStruct23_Substruct2 *substruct2, u16 value, DataSetMode mode); +u8 SaveStruct23_Substruct2_SetField_0x2(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode); +u8 SaveStruct23_Substruct2_SetField_0x3(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode); +void SaveStruct23_Substruct2_SetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *src); +void SaveStruct23_Substruct2_GetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *dst); +u16 SaveStruct23_Substruct2_SetField_0x16(struct SaveStruct23_Substruct2 *substruct2, struct Unk0202A4B8 *arg1); +u16 SaveStruct23_Substruct2_GetField_0x16(struct SaveStruct23_Substruct2 *substruct2); +u8 FUN_0202A524(struct SaveStruct23_Substruct2 *substruct2); +u16 SaveStruct23_Substruct2_SetField_0xC(struct SaveStruct23_Substruct2 *substruct2, u16 arg1, DataSetMode mode); +BOOL SaveStruct23_Substruct2_SetFlag(struct SaveStruct23_Substruct2 *substruct2, u16 flagNumber, DataSetMode mode); +void SaveStruct23_Substruct2_SetField_0x4(struct SaveStruct23_Substruct2 *substruct2, u32 arg1); +u32 SaveStruct23_Substruct2_GetField_0x4(struct SaveStruct23_Substruct2 *substruct2); +void SaveStruct23_SetMessage(struct SaveBlock2 *sav2, u32 index, struct MailMessage *message); +struct MailMessage *SaveStruct23_GetMessage(struct SaveBlock2 *sav2, u32 index); +void SaveStruct23_Substruct4_SetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3); +void SaveStruct23_Substruct4_ClearArrayFlags(struct SaveStruct23_Substruct4 *substruct4); +BOOL StructUnk0202A68C_Compare(struct Unk0202A68C *struct1, struct Unk0202A68C *struct2); +BOOL SaveStruct23_Substruct4_GetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3); +u8 SaveStruct23_Substruct4_GetField_0xFE(struct SaveStruct23_Substruct4 *substruct4); +u8 SaveStruct23_Substruct4_GetField_0xFF(struct SaveStruct23_Substruct4 *substruct4); +void SaveStruct23_Substruct4_SetSubstruct1(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct1 *substruct4_substruct1, u8 arg2, u8 arg3); +void FUN_0202A784(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dest); +void FUN_0202A798(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A798 *arg1, u32 arg2); +void FUN_0202A838(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2, u8 arg2, u8 arg3); +void FUN_0202A864(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dest); +struct SaveStruct23_Substruct4_Substruct2 *FUN_0202A878(struct SaveStruct23_Substruct4 *substruct4, u32 heap_id); +s32 SaveStruct23_sizeof(); +void SaveStruct23_Init(struct SaveStruct23 *saveStruct23); +struct SaveStruct23_Substruct1 *SaveStruct23_GetSubstruct1(struct SaveBlock2* sav2); +struct SaveStruct23_Substruct2 *SaveStruct23_GetSubstruct2(struct SaveBlock2* sav2); +struct SaveStruct23_Substruct4 *SaveStruct23_GetSubstruct4(struct SaveBlock2* sav2); + +#endif //POKEDIAMOND_UNK_0202A1E0_H
\ No newline at end of file |