diff options
Diffstat (limited to 'arm9/src')
-rw-r--r-- | arm9/src/mail_message.c | 6 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 4 | ||||
-rw-r--r-- | arm9/src/save_arrays.c | 8 | ||||
-rw-r--r-- | arm9/src/script_buffers.c | 21 | ||||
-rw-r--r-- | arm9/src/seal_case.c | 59 | ||||
-rw-r--r-- | arm9/src/unk_020139D8.c | 106 |
6 files changed, 131 insertions, 73 deletions
diff --git a/arm9/src/mail_message.c b/arm9/src/mail_message.c index 4d1b75c6..a5837d89 100644 --- a/arm9/src/mail_message.c +++ b/arm9/src/mail_message.c @@ -16,7 +16,7 @@ struct UnkStruct_020ED556 u16 unk_8; }; -extern u16 FUN_02013A9C(s16 bank, u16 num); +extern u16 GetECWordIndexByPair(s16 bank, u16 num); const u16 UNK_020ED54C[] = { 397, @@ -68,9 +68,9 @@ void MailMsg_init_fromTemplate(struct MailMessage * mailMsg, u32 a1) MailMsg_init_withBank(mailMsg, UNK_020ED556[a1].unk_0); mailMsg->msg_no = UNK_020ED556[a1].unk_1; if (UNK_020ED556[a1].unk_2 != -1) - mailMsg->fields[0] = FUN_02013A9C(UNK_020ED556[a1].unk_2, UNK_020ED556[a1].unk_4); + mailMsg->fields[0] = GetECWordIndexByPair(UNK_020ED556[a1].unk_2, UNK_020ED556[a1].unk_4); if (UNK_020ED556[a1].unk_6 != -1) - mailMsg->fields[1] = FUN_02013A9C(UNK_020ED556[a1].unk_6, UNK_020ED556[a1].unk_8); + mailMsg->fields[1] = GetECWordIndexByPair(UNK_020ED556[a1].unk_6, UNK_020ED556[a1].unk_8); } } diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 7fe8191a..b3e53d1a 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -565,7 +565,7 @@ u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * dest) Mail_copy(&pokemon->party.mail, dest); return 1; case MON_DATA_SEAL_COORDS: - FUN_02029C74(&pokemon->party.sealCoords, dest); + CapsuleArray_copy(&pokemon->party.sealCoords, dest); return 1; default: return GetBoxMonDataInternal(&pokemon->box, attr, dest); @@ -1053,7 +1053,7 @@ void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * value) Mail_copy((const struct Mail *)value, &pokemon->party.mail); break; case MON_DATA_SEAL_COORDS: - FUN_02029C74((CapsuleArray *)value, &pokemon->party.sealCoords); + CapsuleArray_copy((CapsuleArray *)value, &pokemon->party.sealCoords); break; default: SetBoxMonDataInternal(&pokemon->box, attr, value); diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 43e83403..397f1f69 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -12,6 +12,8 @@ #include "unk_020254B8.h" #include "daycare.h" #include "pokedex.h" +#include "seal.h" +#include "unk_020139D8.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); @@ -24,7 +26,6 @@ extern u32 FUN_02028054(void); extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); extern u32 FUN_02029FB0(void); -extern u32 FUN_02029C58(void); extern u32 FUN_02029EC4(void); extern u32 FUN_0202A89C(void); extern u32 FUN_0202A8F4(void); @@ -36,7 +37,6 @@ extern u32 FUN_020281E0(void); extern u32 FUN_02029AE0(void); extern u32 FUN_0202BE98(void); extern u32 FUN_0202C0E0(void); -extern u32 FUN_02013B28(void); extern void FUN_0202AC28(void *); extern void FUN_02034D98(void *); extern void FUN_02024E6C(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_02029C60(void *); extern void FUN_02029ECC(void *); extern void FUN_0202A8A4(void *); extern void FUN_0202A8F8(void *); @@ -60,7 +59,6 @@ extern void FUN_020281E8(void *); extern void FUN_02029AE8(void *); extern void FUN_0202BEA0(void *); extern void FUN_0202C0E4(void *); -extern void FUN_02013B2C(void *); const struct SaveChunkHeader UNK_020EE6E0[] = { { 0, 32, (SAVSIZEFN)Sav2_HOF_sizeof, (SAVINITFN)Sav2_HOF_init }, @@ -89,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 18, 0, (SAVSIZEFN)FUN_02028980, (SAVINITFN)FUN_02028994 }, { 19, 0, (SAVSIZEFN)FUN_02029A84, (SAVINITFN)FUN_02029A8C }, { 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 }, - { 21, 0, (SAVSIZEFN)FUN_02029C58, (SAVINITFN)FUN_02029C60 }, + { 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init }, { 22, 0, (SAVSIZEFN)FUN_02029EC4, (SAVINITFN)FUN_02029ECC }, { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 }, { 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 }, diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index c29feed3..10ec9094 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -9,6 +9,7 @@ #include "unk_020286F8.h" #include "filesystem.h" #include "unk_0201B8B8.h" +#include "trainer_data.h" #include "script_buffers.h" #pragma thumb on @@ -16,7 +17,7 @@ extern void * FUN_02024EC0(struct SaveBlock2 * sav2); extern u16 * FUN_02024EE8(void *); extern u32 GetCityNamesMsgdataIdByCountry(u32); -extern void FUN_02013A58(u32 a0, struct String * a1); +extern void GetECWordIntoStringByIndex(u32 a0, struct String * a1); extern void FUN_02022048(struct String * dest, const struct String * src); extern void StrAddChar(struct String * str, u16 val); extern void * FUN_02006BB0(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); @@ -374,7 +375,7 @@ void BufferTrainerClassName2(struct ScrStrBufs * mgr, u32 idx, struct Trainer * } } -void FUN_0200B10C(struct ScrStrBufs * mgr, u32 idx, u32 msgno) +void BufferTrainerName(struct ScrStrBufs * mgr, u32 idx, u32 msgno) { struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 559, mgr->heap_id); if (msgData != NULL) @@ -385,9 +386,9 @@ void FUN_0200B10C(struct ScrStrBufs * mgr, u32 idx, u32 msgno) } } -void FUN_0200B144(struct ScrStrBufs * mgr, u32 idx, void * unk_struct) +void BufferTrainerNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct TrainerDataLoaded * trdata) { - CopyU16ArrayToString(mgr->tmpbuf, (u16 *)((char *)unk_struct + 20)); + CopyU16ArrayToString(mgr->tmpbuf, trdata->name); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); } @@ -587,7 +588,7 @@ void BufferCityName(struct ScrStrBufs * mgr, u32 idx, u32 a2, u32 a3) void FUN_0200B518(struct ScrStrBufs * mgr, u32 idx, u32 a2) { - FUN_02013A58(a2, mgr->tmpbuf); + GetECWordIntoStringByIndex(a2, mgr->tmpbuf); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); } @@ -684,7 +685,7 @@ void BufferContestBackgroundName(struct ScrStrBufs * mgr, u32 idx, u32 bg) } } -void FUN_0200B708(struct ScrStrBufs * mgr, struct SaveBlock2 * sav2, u32 r5, u32 idx, u32 sp28) +void BufferEasyChatWord(struct ScrStrBufs * mgr, struct SaveBlock2 * sav2, u32 r5, u32 idx, u32 sp28) { void * r6 = FUN_0202881C(sav2); u8 sp10 = FUN_020287F8(r6, r5); @@ -708,7 +709,7 @@ void BufferMonthNameAbbr(struct ScrStrBufs * mgr, u32 idx, u32 month) } } -void FUN_0200B7A8(struct ScrStrBufs * mgr, u32 idx) +void ScrStrBufs_UpperFirstChar(struct ScrStrBufs * mgr, u32 idx) { StrUpperFirstChar(mgr->array[idx].msg); } @@ -741,13 +742,13 @@ void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, str } } -void FUN_0200B84C(struct ScrStrBufs * mgr) +void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr) { for (int i = 0; i < mgr->count; i++) StringSetEmpty(mgr->array[i].msg); } -struct UnkStruct_0200B870 * FUN_0200B870(u32 r5, u32 r6, u32 sp4, u32 r4) +struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4) { struct UnkStruct_0200B870 * sp8 = AllocFromHeap(r4, sizeof(struct UnkStruct_0200B870)); if (sp8 != NULL) @@ -793,7 +794,7 @@ struct UnkStruct_0200B870 * FUN_0200B870(u32 r5, u32 r6, u32 sp4, u32 r4) return sp8; } -void FUN_0200B990(struct UnkStruct_0200B870 * a0) +void MessagePrinter_delete(struct UnkStruct_0200B870 * a0) { if (a0 != NULL) { diff --git a/arm9/src/seal_case.c b/arm9/src/seal_case.c new file mode 100644 index 00000000..b1359a02 --- /dev/null +++ b/arm9/src/seal_case.c @@ -0,0 +1,59 @@ +#include "global.h" +#include "save_block_2.h" +#include "MI_memory.h" +#include "seal.h" + +#pragma thumb on + +u32 Sav2_SealCase_sizeof(void) +{ + return sizeof(struct SealCase); +} + +void Sav2_SealCase_init(struct SealCase * sealCase) +{ + MI_CpuClear8(sealCase, Sav2_SealCase_sizeof()); +} + +void CapsuleArray_copy(const CapsuleArray * a0, CapsuleArray * a1) +{ + MI_CpuCopy8(a0, a1, sizeof(CapsuleArray)); +} + +struct SealCase * Sav2_SealCase_get(struct SaveBlock2 * sav2) +{ + return (struct SealCase *)SavArray_get(sav2, 21); +} + +CapsuleArray * SealCase_GetCapsuleI(struct SealCase * sealCase, s32 idx) +{ + GF_ASSERT(idx < 12); + return &sealCase->coords[idx]; +} + +void SealCase_SetCapsuleI(struct SealCase * sealCase, const CapsuleArray * src, s32 idx) +{ + GF_ASSERT(idx < 12); + CapsuleArray_copy(src, SealCase_GetCapsuleI(sealCase, idx)); +} + +Coords8 * Capsule_GetSealI(CapsuleArray * a0, s32 a1) +{ + GF_ASSERT(a1 < 8); + return &(*a0)[a1]; +} + +s32 Seal_GetId(Coords8 * a0) +{ + return (*a0)[0]; +} + +s32 Seal_GetXCoord(Coords8 * a0) +{ + return (*a0)[1]; +} + +s32 Seal_GetYCoord(Coords8 * a0) +{ + return (*a0)[2]; +} diff --git a/arm9/src/unk_020139D8.c b/arm9/src/unk_020139D8.c index 82c96ea9..796190b2 100644 --- a/arm9/src/unk_020139D8.c +++ b/arm9/src/unk_020139D8.c @@ -7,7 +7,7 @@ #pragma thumb on -const u8 UNK_020ED5B4[][2] = { +const u8 sNarcLanguages[][2] = { { LANGUAGE_JAPANESE, 0 }, { LANGUAGE_ENGLISH, 1 }, { LANGUAGE_FRENCH, 2 }, @@ -16,32 +16,32 @@ const u8 UNK_020ED5B4[][2] = { { LANGUAGE_SPANISH, 5 }, }; -const u16 UNK_020ED5C0[] = { - 362, - 589, - 565, - 553, - 388, - 389, - 390, - 391, - 392, - 393, - 394 +const u16 sNarcMsgBanks[] = { + 362, // Species names + 589, // Move names + 565, // Type names + 553, // Ability names + 388, // Trainer + 389, // People + 390, // Greetings + 391, // Lifestyle + 392, // Feelings + 393, // Tough words + 394 // Union }; -const u16 UNK_020ED5D6[] = { - 496, - 468, - 18, - 124, - 38, - 38, - 107, - 104, - 47, - 32, - 23 +const u16 sNarcMsgCounts[] = { + 496, // Species names + 468, // Move names + 18, // Type names + 124, // Ability names + 38, // Trainer + 38, // People + 107, // Greetings + 104, // Lifestyle + 47, // Feelings + 32, // Tough words + 23 // Union }; const u16 UNK_020ED580[] = { 0x04C0, 0x04F0 }; @@ -76,19 +76,19 @@ const struct UnkStruct_020ED5EC { UNK_020ED594, NELEMS(UNK_020ED594) }, }; -struct UnkStruct_020139D8 * FUN_020139D8(u32 heap_id) +struct UnkStruct_020139D8 * EasyChatManager_new(u32 heap_id) { struct UnkStruct_020139D8 * ret = (struct UnkStruct_020139D8 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_020139D8)); s32 i; for (i = 0; i < 11; i++) { ret->heap_id = heap_id; // inadvertently inside the loop - ret->msgDatas[i] = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, UNK_020ED5C0[i], heap_id); + ret->msgDatas[i] = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, sNarcMsgBanks[i], heap_id); } return ret; } -void FUN_02013A10(struct UnkStruct_020139D8 * unk) +void EasyChatManager_delete(struct UnkStruct_020139D8 * unk) { s32 i; for (i = 0; i < 11; i++) @@ -98,61 +98,61 @@ void FUN_02013A10(struct UnkStruct_020139D8 * unk) FreeToHeap(unk); } -void FUN_02013A30(struct UnkStruct_020139D8 * unk, u16 a1, struct String * str) +void EasyChatManager_ReadWordIntoString(struct UnkStruct_020139D8 * unk, u16 wordIdx, struct String * str) { - s32 sp4; - s32 sp0; - FUN_02013AEC(a1, &sp4, &sp0); - ReadMsgDataIntoString(unk->msgDatas[sp4], (u32)sp0, str); + s32 msgBank; + s32 msgNo; + GetCategoryAndMsgNoByECWordIdx(wordIdx, &msgBank, &msgNo); + ReadMsgDataIntoString(unk->msgDatas[msgBank], (u32)msgNo, str); } -void FUN_02013A58(u16 a0, struct String * a1) +void GetECWordIntoStringByIndex(u16 wordIdx, struct String * a1) { - s32 sp8; - s32 sp4; - if (a0 != 0xFFFF) + s32 msgBank; + s32 msgNo; + if (wordIdx != 0xFFFF) { - FUN_02013AEC(a0, &sp8, &sp4); - sp8 = UNK_020ED5C0[sp8]; - ReadMsgData_NewNarc_ExistingString(NARC_MSGDATA_MSG, (u32)sp8, (u32)sp4, 0, a1); + GetCategoryAndMsgNoByECWordIdx(wordIdx, &msgBank, &msgNo); + msgBank = sNarcMsgBanks[msgBank]; + ReadMsgData_NewNarc_ExistingString(NARC_MSGDATA_MSG, (u32)msgBank, (u32)msgNo, 0, a1); } else StringSetEmpty(a1); } -u16 FUN_02013A9C(u16 a0, u16 a1) +u16 GetECWordIndexByPair(u16 msgBank, u16 msgNo) { u32 i; u16 k; u16 j; for (i = 0; i < 11; i++) { - if (a0 == UNK_020ED5C0[i]) + if (msgBank == sNarcMsgBanks[i]) { for (j = 0, k = 0; j < i; j++) - k += UNK_020ED5D6[j]; - return (u16)(k + a1); + k += sNarcMsgCounts[j]; + return (u16)(k + msgNo); } } return 0xFFFF; } -void FUN_02013AEC(u32 a0, s32 * a1, s32 * a2) +void GetCategoryAndMsgNoByECWordIdx(u32 wordIdx, s32 * msgBank_p, s32 * msgNo_p) { s32 i; s32 j; u32 r3; - r3 = a0 & 0xFFF; + r3 = wordIdx & 0xFFF; j = 0; - for (i = 0; i < NELEMS(UNK_020ED5D6); i++) + for (i = 0; i < NELEMS(sNarcMsgCounts); i++) { - j += UNK_020ED5D6[i]; + j += sNarcMsgCounts[i]; if (r3 < j) { - *a1 = i; - *a2 = (s32)(r3 - (j - UNK_020ED5D6[i])); + *msgBank_p = i; + *msgNo_p = (s32)(r3 - (j - sNarcMsgCounts[i])); return; } } @@ -170,9 +170,9 @@ void FUN_02013B2C(struct UnkStruct_02013B28 * unk) unk->unk_4 = 0; for (i = 0; i < 6; i++) { - if (UNK_020ED5B4[i][0] == GAME_LANGUAGE) + if (sNarcLanguages[i][0] == GAME_LANGUAGE) { - FUN_02013C18(unk, UNK_020ED5B4[i][1]); + FUN_02013C18(unk, sNarcLanguages[i][1]); break; } } @@ -233,7 +233,7 @@ u16 FUN_02013BE4(u16 a0) s32 i; u16 skip = 0; for (i = 0; i < 9; i++) - skip += UNK_020ED5D6[i]; + skip += sNarcMsgCounts[i]; return (u16)(skip + a0); } |