diff --git a/src/battle_message.c b/src/battle_message.c index a15a4b976b..280680e3ff 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -2256,28 +2256,23 @@ u32 BattleStringExpandPlaceholdersToDisplayedString(const u8 *src) static const u8 *TryGetStatusString(u8 *src) { u32 i; - u8 status[8]; - u32 chars1, chars2; + ALIGNED(4) u8 status[ARRAY_COUNT(sText_EmptyStatus)]; + u32 chars1, chars2, *cmp; u8 *statusPtr; - memcpy(status, sText_EmptyStatus, min(ARRAY_COUNT(status), ARRAY_COUNT(sText_EmptyStatus))); + memcpy(status, sText_EmptyStatus, ARRAY_COUNT(status)); statusPtr = status; - for (i = 0; i < ARRAY_COUNT(status); i++) - { - if (*src == EOS) break; // one line required to match -g - *statusPtr = *src; - src++; - statusPtr++; - } + for (i = 0; i < ARRAY_COUNT(status) && *src != EOS; i++) + *statusPtr++ = *src++; - chars1 = *(u32 *)(&status[0]); - chars2 = *(u32 *)(&status[4]); + chars1 = *(u32 *)status; + chars2 = *((u32 *)status + 1); for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++) { - if (chars1 == *(u32 *)(&gStatusConditionStringsTable[i][0][0]) - && chars2 == *(u32 *)(&gStatusConditionStringsTable[i][0][4])) + cmp = (u32 *)gStatusConditionStringsTable[i][0]; + if (chars1 == cmp[0] && chars2 == cmp[1]) return gStatusConditionStringsTable[i][1]; } return NULL;