diff options
author | YamaArashi <shadow962@live.com> | 2016-11-01 20:38:04 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-11-01 20:38:04 -0700 |
commit | 1a3bc0ab4c9370c51435a9cad91a9899be6acff6 (patch) | |
tree | 9bedb428a61d79fdc9575718e87fcd9084ce6e30 /src | |
parent | be30d5bf44582db12b5d3425a4420041e5256661 (diff) |
whitespace cleanup
Diffstat (limited to 'src')
-rw-r--r-- | src/berry.c | 608 | ||||
-rw-r--r-- | src/libc.c | 242 | ||||
-rw-r--r-- | src/menu_cursor.c | 932 |
3 files changed, 891 insertions, 891 deletions
diff --git a/src/berry.c b/src/berry.c index 11d261790..811a70e4e 100644 --- a/src/berry.c +++ b/src/berry.c @@ -28,444 +28,444 @@ u8 CalcBerryYield(struct BerryTree *tree); void unref_sub_80B4884(void) { - CpuFill16(0, &gSaveBlock1.enigmaBerry, sizeof(gSaveBlock1.enigmaBerry)); + CpuFill16(0, &gSaveBlock1.enigmaBerry, sizeof(gSaveBlock1.enigmaBerry)); } // setEnigmaBerry void sub_80B48A8(u8 *src) { - u8 *dest; - struct SaveBlock1 *saveBlock; - unsigned int i; - dest = (u8*)&gSaveBlock1.enigmaBerry; - saveBlock = &gSaveBlock1; - for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++) - { - dest[i] = src[i]; - } - gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; - gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; + u8 *dest; + struct SaveBlock1 *saveBlock; + unsigned int i; + dest = (u8*)&gSaveBlock1.enigmaBerry; + saveBlock = &gSaveBlock1; + for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++) + { + dest[i] = src[i]; + } + gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; + gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } // checksum u32 sub_80B48F8(struct EnigmaBerry *enigmaBerry) { - u8 *description1; - u8 *description2; - unsigned int i; - u32 checksum; - u8 *dest; + u8 *description1; + u8 *description2; + unsigned int i; + u32 checksum; + u8 *dest; - description1 = gSaveBlock1.enigmaBerry.berry.description1; - description2 = gSaveBlock1.enigmaBerry.berry.description2; - gSaveBlock1.enigmaBerry.berry.description1 = 0; - gSaveBlock1.enigmaBerry.berry.description2 = 0; + description1 = gSaveBlock1.enigmaBerry.berry.description1; + description2 = gSaveBlock1.enigmaBerry.berry.description2; + gSaveBlock1.enigmaBerry.berry.description1 = 0; + gSaveBlock1.enigmaBerry.berry.description2 = 0; - dest = (u8*)enigmaBerry; - checksum = 0; - for (i = 0; i < ((int)&gSaveBlock1.enigmaBerry.checksum - (int)&gSaveBlock1.enigmaBerry); i++) - { - checksum += dest[i]; - } + dest = (u8*)enigmaBerry; + checksum = 0; + for (i = 0; i < ((int)&gSaveBlock1.enigmaBerry.checksum - (int)&gSaveBlock1.enigmaBerry); i++) + { + checksum += dest[i]; + } - gSaveBlock1.enigmaBerry.berry.description1 = description1; - gSaveBlock1.enigmaBerry.berry.description2 = description2; + gSaveBlock1.enigmaBerry.berry.description1 = description1; + gSaveBlock1.enigmaBerry.berry.description2 = description2; - return checksum; + return checksum; } int sub_80B4940(void) { - if (!gSaveBlock1.enigmaBerry.berry.stageDuration) - return 0; - if (!gSaveBlock1.enigmaBerry.berry.maxYield) - return 0; - if (sub_80B48F8(&gSaveBlock1.enigmaBerry) != gSaveBlock1.enigmaBerry.checksum) - return 0; - return 1; + if (!gSaveBlock1.enigmaBerry.berry.stageDuration) + return 0; + if (!gSaveBlock1.enigmaBerry.berry.maxYield) + return 0; + if (sub_80B48F8(&gSaveBlock1.enigmaBerry) != gSaveBlock1.enigmaBerry.checksum) + return 0; + return 1; } struct Berry *GetBerryInfo(u8 berry) { - if ((u8)berry == 0x2b) - { - if (sub_80B4940()) - return &gSaveBlock1.enigmaBerry.berry; - } - if ((u8)(berry - 1) > 0x2a) - { - berry = 1; - } - return &gBerries[berry - 1]; + if ((u8)berry == 0x2b) + { + if (sub_80B4940()) + return &gSaveBlock1.enigmaBerry.berry; + } + if ((u8)(berry - 1) > 0x2a) + { + berry = 1; + } + return &gBerries[berry - 1]; } struct BerryTree *GetBerryTreeInfo(u8 id) { - return &gSaveBlock1.berryTrees[id]; + return &gSaveBlock1.berryTrees[id]; } int FieldObjectInteractionWaterBerryTree(void) { - struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject)); - switch (tree->stage) - { - case 1: - tree->watered1 = 1; - break; - case 2: - tree->watered2 = 1; - break; - case 3: - tree->watered3 = 1; - break; - case 4: - tree->watered4 = 1; - break; - default: - return 0; - } - return 1; + struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject)); + switch (tree->stage) + { + case 1: + tree->watered1 = 1; + break; + case 2: + tree->watered2 = 1; + break; + case 3: + tree->watered3 = 1; + break; + case 4: + tree->watered4 = 1; + break; + default: + return 0; + } + return 1; } int IsPlayerFacingPlantedBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() == &BerryTreeScript) - if (GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0) - return 1; - return 0; + if (GetFieldObjectScriptPointerForComparison() == &BerryTreeScript) + if (GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0) + return 1; + return 0; } u8 WaterBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) - return 0; - return FieldObjectInteractionWaterBerryTree(); + if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) + return 0; + return FieldObjectInteractionWaterBerryTree(); } void sub_80B4A90(void) { - int i; - struct SaveBlock1 *saveBlock1 = &gSaveBlock1; - struct BerryTree berryTree = gUnknown_083CD780; - for (i = 127; i >= 0; i--) - { - saveBlock1->berryTrees[i] = berryTree; - } + int i; + struct SaveBlock1 *saveBlock1 = &gSaveBlock1; + struct BerryTree berryTree = gUnknown_083CD780; + for (i = 127; i >= 0; i--) + { + saveBlock1->berryTrees[i] = berryTree; + } } int BerryTreeGrow(struct BerryTree *tree) { - if (tree->growthSparkle) - return 0; - switch (tree->stage) - { - case 0: - return 0; - case 4: - tree->berryYield = CalcBerryYield(tree); - case 1: - case 2: - case 3: - tree->stage++; - break; - case 5: - tree->watered1 = 0; - tree->watered2 = 0; - tree->watered3 = 0; - tree->watered4 = 0; - tree->berryYield = 0; - tree->stage = 2; - if (++tree->regrowthCount == 10) - *tree = gUnknown_083CD780; - break; - } - return 1; + if (tree->growthSparkle) + return 0; + switch (tree->stage) + { + case 0: + return 0; + case 4: + tree->berryYield = CalcBerryYield(tree); + case 1: + case 2: + case 3: + tree->stage++; + break; + case 5: + tree->watered1 = 0; + tree->watered2 = 0; + tree->watered3 = 0; + tree->watered4 = 0; + tree->berryYield = 0; + tree->stage = 2; + if (++tree->regrowthCount == 10) + *tree = gUnknown_083CD780; + break; + } + return 1; } void BerryTreeTimeUpdate(int time) { - int i; - struct BerryTree *tree; - int time2; - for (i = 0; i <= 0x7f; i++) - { - tree = &gSaveBlock1.berryTrees[i]; - - if (tree->berry == 0) - continue; - if (tree->stage == 0) - continue; - if (tree->growthSparkle) - continue; - - if (time >= GetStageDurationByBerryType(tree->berry) * 71) - { - *tree = gUnknown_083CD780; - continue; - } - - time2 = time; - if (!time2) - continue; - - if (tree->secondsUntilNextStage > time2) - { - tree->secondsUntilNextStage -= time2; - time2 = tree->secondsUntilNextStage; - continue; - } - - while (1) - { - time2 -= tree->secondsUntilNextStage; - tree->secondsUntilNextStage = GetStageDurationByBerryType(tree->berry); - if (BerryTreeGrow(tree)) - { - if (tree->stage == 5) - { - tree->secondsUntilNextStage *= 4; - } - if (!time2) - { - break; - } - } - else - { - break; - } - if (tree->secondsUntilNextStage > time2) - { - tree->secondsUntilNextStage -= time2; - time2 = tree->secondsUntilNextStage; - break; - } - } - } + int i; + struct BerryTree *tree; + int time2; + for (i = 0; i <= 0x7f; i++) + { + tree = &gSaveBlock1.berryTrees[i]; + + if (tree->berry == 0) + continue; + if (tree->stage == 0) + continue; + if (tree->growthSparkle) + continue; + + if (time >= GetStageDurationByBerryType(tree->berry) * 71) + { + *tree = gUnknown_083CD780; + continue; + } + + time2 = time; + if (!time2) + continue; + + if (tree->secondsUntilNextStage > time2) + { + tree->secondsUntilNextStage -= time2; + time2 = tree->secondsUntilNextStage; + continue; + } + + while (1) + { + time2 -= tree->secondsUntilNextStage; + tree->secondsUntilNextStage = GetStageDurationByBerryType(tree->berry); + if (BerryTreeGrow(tree)) + { + if (tree->stage == 5) + { + tree->secondsUntilNextStage *= 4; + } + if (!time2) + { + break; + } + } + else + { + break; + } + if (tree->secondsUntilNextStage > time2) + { + tree->secondsUntilNextStage -= time2; + time2 = tree->secondsUntilNextStage; + break; + } + } + } } void PlantBerryTree(u8 id, u8 berry, u8 stage, u8 sparkle) { - struct BerryTree *tree; - tree = GetBerryTreeInfo(id); - *tree = gUnknown_083CD780; - tree->berry = berry; - tree->secondsUntilNextStage = GetStageDurationByBerryType(berry); - tree->stage = stage; - if (stage == 5) - { - tree->berryYield = CalcBerryYield(tree); - tree->secondsUntilNextStage *= 4; - } - if (sparkle == 0) - { - tree->growthSparkle = 1; - } + struct BerryTree *tree; + tree = GetBerryTreeInfo(id); + *tree = gUnknown_083CD780; + tree->berry = berry; + tree->secondsUntilNextStage = GetStageDurationByBerryType(berry); + tree->stage = stage; + if (stage == 5) + { + tree->berryYield = CalcBerryYield(tree); + tree->secondsUntilNextStage *= 4; + } + if (sparkle == 0) + { + tree->growthSparkle = 1; + } } void RemoveBerryTree(u8 id) { - gSaveBlock1.berryTrees[id] = gUnknown_083CD780; + gSaveBlock1.berryTrees[id] = gUnknown_083CD780; } u8 GetBerryTypeByBerryTreeId(u8 id) { - return gSaveBlock1.berryTrees[id].berry; + return gSaveBlock1.berryTrees[id].berry; } u8 GetStageByBerryTreeId(u8 id) { - return gSaveBlock1.berryTrees[id].stage; + return gSaveBlock1.berryTrees[id].stage; } u8 ItemIdToBerryType(u16 item) { - u16 berry = item - FIRST_BERRY; - if (berry > LAST_BERRY - FIRST_BERRY) - return 1; - return item - FIRST_BERRY + 1; + u16 berry = item - FIRST_BERRY; + if (berry > LAST_BERRY - FIRST_BERRY) + return 1; + return item - FIRST_BERRY + 1; } u16 BerryTypeToItemId(u16 berry) { - u16 item = berry; - item -= 1; - if (item > LAST_BERRY - FIRST_BERRY) - return FIRST_BERRY; - item = berry; - return item + FIRST_BERRY - 1; + u16 item = berry; + item -= 1; + if (item > LAST_BERRY - FIRST_BERRY) + return FIRST_BERRY; + item = berry; + return item + FIRST_BERRY - 1; } void GetBerryNameByBerryType(u8 berry, u8 *string) { - struct Berry *info; - info = GetBerryInfo(berry); - memcpy(string, info->name, 6); - string[6] = 0xff; + struct Berry *info; + info = GetBerryInfo(berry); + memcpy(string, info->name, 6); + string[6] = 0xff; } void ResetBerryTreeSparkleFlag(u8 id) { - struct BerryTree *tree; - tree = GetBerryTreeInfo(id); - tree->growthSparkle = 0; + struct BerryTree *tree; + tree = GetBerryTreeInfo(id); + tree->growthSparkle = 0; } u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) { - u8 count = 0; - if (tree->watered1) - count++; - if (tree->watered2) - count++; - if (tree->watered3) - count++; - if (tree->watered4) - count++; - return count; + u8 count = 0; + if (tree->watered1) + count++; + if (tree->watered2) + count++; + if (tree->watered3) + count++; + if (tree->watered4) + count++; + return count; } u8 GetNumStagesWateredByBerryTreeId(u8 id) { - return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id)); + return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id)); } u8 CalcBerryYieldInternal(u16 a1, u16 a2, u8 a3) { - u32 v6; - u32 v1; - u32 v5; - u32 v4; - u16 random; - u32 ret; - v6 = a2; - if (a3 == 0) - return v6; - v1 = a1 - v6; - v5 = v1 * (a3 - 1); - v4 = v1 * a3; - random = Random(); - v4 -= v5; - v4 += 1; - v5 += random % v4; - if ((v5 & 3) <= 1) - { - ret = v5 / 4; - return ret + v6; - } - else - { - ret = v5 / 4 + 1; - return ret + v6; - } + u32 v6; + u32 v1; + u32 v5; + u32 v4; + u16 random; + u32 ret; + v6 = a2; + if (a3 == 0) + return v6; + v1 = a1 - v6; + v5 = v1 * (a3 - 1); + v4 = v1 * a3; + random = Random(); + v4 -= v5; + v4 += 1; + v5 += random % v4; + if ((v5 & 3) <= 1) + { + ret = v5 / 4; + return ret + v6; + } + else + { + ret = v5 / 4 + 1; + return ret + v6; + } } u8 CalcBerryYield(struct BerryTree *tree) { - struct Berry *berry = GetBerryInfo(tree->berry); - u8 min = berry->minYield; - u8 max = berry->maxYield; - return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); + struct Berry *berry = GetBerryInfo(tree->berry); + u8 min = berry->minYield; + u8 max = berry->maxYield; + return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); } u8 GetBerryCountByBerryTreeId(u8 id) { - return gSaveBlock1.berryTrees[id].berryYield; + return gSaveBlock1.berryTrees[id].berryYield; } u16 GetStageDurationByBerryType(u8 berry) { - return GetBerryInfo(berry)->stageDuration * 60; + return GetBerryInfo(berry)->stageDuration * 60; } void FieldObjectInteractionGetBerryTreeData(void) { - u8 id; - u8 berry; - u8 unk; - u8 group; - u8 num; - id = FieldObjectGetBerryTreeId(gSelectedMapObject); - berry = GetBerryTypeByBerryTreeId(id); - ResetBerryTreeSparkleFlag(id); - unk = gUnknown_0202E8DE; - num = gSaveBlock1.location.mapNum; - group = gSaveBlock1.location.mapGroup; + u8 id; + u8 berry; + u8 unk; + u8 group; + u8 num; + id = FieldObjectGetBerryTreeId(gSelectedMapObject); + berry = GetBerryTypeByBerryTreeId(id); + ResetBerryTreeSparkleFlag(id); + unk = gUnknown_0202E8DE; + num = gSaveBlock1.location.mapNum; + group = gSaveBlock1.location.mapGroup; - if (sub_8060234(unk, num, group)) - gUnknown_0202E8CC = 0xff; - else - gUnknown_0202E8CC = (u8)GetStageByBerryTreeId(id); + if (sub_8060234(unk, num, group)) + gUnknown_0202E8CC = 0xff; + else + gUnknown_0202E8CC = (u8)GetStageByBerryTreeId(id); - gUnknown_0202E8CE = (u8)GetNumStagesWateredByBerryTreeId(id); - gUnknown_0202E8D0 = (u8)GetBerryCountByBerryTreeId(id); - GetBerryNameByBerryType(berry, gStringVar1); + gUnknown_0202E8CE = (u8)GetNumStagesWateredByBerryTreeId(id); + gUnknown_0202E8D0 = (u8)GetBerryCountByBerryTreeId(id); + GetBerryNameByBerryType(berry, gStringVar1); } void sub_80B4EE4(void) { - SetMainCallback2(sub_80A68CC); + SetMainCallback2(sub_80A68CC); } void FieldObjectInteractionPlantBerryTree(void) { - extern u16 word_203855E; - u8 berry = ItemIdToBerryType(word_203855E); - PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, 1); - FieldObjectInteractionGetBerryTreeData(); + extern u16 word_203855E; + u8 berry = ItemIdToBerryType(word_203855E); + PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, 1); + FieldObjectInteractionGetBerryTreeData(); } void FieldObjectInteractionPickBerryTree(void) { - u8 id; - u8 berry; - id = FieldObjectGetBerryTreeId(gSelectedMapObject); - berry = GetBerryTypeByBerryTreeId(id); - gUnknown_0202E8CC = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id)); + u8 id; + u8 berry; + id = FieldObjectGetBerryTreeId(gSelectedMapObject); + berry = GetBerryTypeByBerryTreeId(id); + gUnknown_0202E8CC = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id)); } void FieldObjectInteractionRemoveBerryTree(void) { - u8 id; - u8 unk; - u8 group, num; - id = FieldObjectGetBerryTreeId(gSelectedMapObject); - RemoveBerryTree(id); - unk = gUnknown_0202E8DE; - num = gSaveBlock1.location.mapNum; - group = gSaveBlock1.location.mapGroup; - sub_8060288(unk, num, group); + u8 id; + u8 unk; + u8 group, num; + id = FieldObjectGetBerryTreeId(gSelectedMapObject); + RemoveBerryTree(id); + unk = gUnknown_0202E8DE; + num = gSaveBlock1.location.mapNum; + group = gSaveBlock1.location.mapGroup; + sub_8060288(unk, num, group); } u8 PlayerHasBerries(void) { - return IsBagPocketNonEmpty(4); + return IsBagPocketNonEmpty(4); } void ResetBerryTreeSparkleFlags(void) { - s16 cam_left; - s16 cam_top; - s16 left; - s16 top; - s16 right; - s16 bottom; - int i; - - GetCameraCoords(&cam_left, &cam_top); - left = cam_left; - top = cam_top + 3; - right = cam_left + 14; - bottom = top + 8; - - for (i = 0; i < 16; i++) - { - if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) - { - cam_left = gMapObjects[i].coords2.x; - cam_top = gMapObjects[i].coords2.y; - if (left <= cam_left && cam_left <= right && top <= cam_top && cam_top <= bottom) - ResetBerryTreeSparkleFlag(gMapObjects[i].trainerRange_berryTreeId); - } - } + s16 cam_left; + s16 cam_top; + s16 left; + s16 top; + s16 right; + s16 bottom; + int i; + + GetCameraCoords(&cam_left, &cam_top); + left = cam_left; + top = cam_top + 3; + right = cam_left + 14; + bottom = top + 8; + + for (i = 0; i < 16; i++) + { + if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) + { + cam_left = gMapObjects[i].coords2.x; + cam_top = gMapObjects[i].coords2.y; + if (left <= cam_left && cam_left <= right && top <= cam_top && cam_top <= bottom) + ResetBerryTreeSparkleFlag(gMapObjects[i].trainerRange_berryTreeId); + } + } } diff --git a/src/libc.c b/src/libc.c index e408ba51e..370981878 100644 --- a/src/libc.c +++ b/src/libc.c @@ -11,133 +11,133 @@ void *memcpy(void *dst0, const void *src0, size_t len0) { - char *dst = dst0; - const char *src = src0; - long *aligned_dst; - const long *aligned_src; - unsigned int len = len0; - - // If the size is small, or either src or dst is unaligned, - // then go to the byte copy loop. This should be rare. - if(len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst))) - { - aligned_dst = (long *)dst; - aligned_src = (long *)src; - - // Copy 4X long words at a time if possible. - while(len >= 16) - { - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - len -= 16; - } - - // Copy one long word at a time if possible - while(len >= 4) - { - *aligned_dst++ = *aligned_src++; - len -= 4; - } - - dst = (char *)aligned_dst; - src = (char *)aligned_src; - } - - // Pick up any remaining bytes with a byte copier. - while(len--) - *dst++ = *src++; - - return dst0; + char *dst = dst0; + const char *src = src0; + long *aligned_dst; + const long *aligned_src; + unsigned int len = len0; + + // If the size is small, or either src or dst is unaligned, + // then go to the byte copy loop. This should be rare. + if(len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst))) + { + aligned_dst = (long *)dst; + aligned_src = (long *)src; + + // Copy 4X long words at a time if possible. + while(len >= 16) + { + *aligned_dst++ = *aligned_src++; + *aligned_dst++ = *aligned_src++; + *aligned_dst++ = *aligned_src++; + *aligned_dst++ = *aligned_src++; + len -= 16; + } + + // Copy one long word at a time if possible + while(len >= 4) + { + *aligned_dst++ = *aligned_src++; + len -= 4; + } + + dst = (char *)aligned_dst; + src = (char *)aligned_src; + } + + // Pick up any remaining bytes with a byte copier. + while(len--) + *dst++ = *src++; + + return dst0; } void *memset(void *m, int c, size_t n) { - char *s = (char *)m; - int count, i; - unsigned long buffer; - unsigned long *aligned_addr; - unsigned char *unaligned_addr; - - // If the size is small or m is unaligned, - // then go to the byte copy loop. This should be rare. - if(n >= LBLOCKSIZE && !UNALIGNED(m)) - { - // We know that n is large and m is word-aligned. - aligned_addr = (unsigned long *)m; - - // Store C into each char sized location in buffer so that - // we can set large blocks quickly. - c &= 0xFF; - if(LBLOCKSIZE == 4) - { - buffer = (c << 8) | c; - buffer |= (buffer << 16); - } - else - { - buffer = 0; - for(i = 0; i < LBLOCKSIZE; i++) - buffer = (buffer << 8) | c; - } - - while(n >= LBLOCKSIZE * 4) - { - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - n -= LBLOCKSIZE * 4; - } - while(n >= LBLOCKSIZE) - { - *aligned_addr++ = buffer; - n -= LBLOCKSIZE; - } - - s = (char *)aligned_addr; - } - - // Pick up the remainder with a bytewise loop. - while(n--) - *s++ = (char)c; - - return m; + char *s = (char *)m; + int count, i; + unsigned long buffer; + unsigned long *aligned_addr; + unsigned char *unaligned_addr; + + // If the size is small or m is unaligned, + // then go to the byte copy loop. This should be rare. + if(n >= LBLOCKSIZE && !UNALIGNED(m)) + { + // We know that n is large and m is word-aligned. + aligned_addr = (unsigned long *)m; + + // Store C into each char sized location in buffer so that + // we can set large blocks quickly. + c &= 0xFF; + if(LBLOCKSIZE == 4) + { + buffer = (c << 8) | c; + buffer |= (buffer << 16); + } + else + { + buffer = 0; + for(i = 0; i < LBLOCKSIZE; i++) + buffer = (buffer << 8) | c; + } + + while(n >= LBLOCKSIZE * 4) + { + *aligned_addr++ = buffer; + *aligned_addr++ = buffer; + *aligned_addr++ = buffer; + *aligned_addr++ = buffer; + n -= LBLOCKSIZE * 4; + } + while(n >= LBLOCKSIZE) + { + *aligned_addr++ = buffer; + n -= LBLOCKSIZE; + } + + s = (char *)aligned_addr; + } + + // Pick up the remainder with a bytewise loop. + while(n--) + *s++ = (char)c; + + return m; } int strcmp(const char *s1, const char *s2) { - unsigned long *a1; - unsigned long *a2; - - // If s1 or s2 are unaligned, then skip this and compare bytes. - if(!(UNALIGNED(s1) | UNALIGNED(s2))) - { - // Compare them a word at a time. - a1 = (unsigned long *)s1; - a2 = (unsigned long *)s2; - while(*a1 == *a2) - { - // If *a1 == *a2, and we find a null in *a1, - // then the strings must be equal, so return zero. - if(CONTAINSNULL(*a1)) - return 0; - - a1++; - a2++; - } - - s1 = (char *)a1; - s2 = (char *)a2; - } - - // Check the remaining few bytes. - while(*s1 != '\0' && *s1 == *s2) - { - s1++; - s2++; - } - - return (*(unsigned char *) s1) - (*(unsigned char *) s2); + unsigned long *a1; + unsigned long *a2; + + // If s1 or s2 are unaligned, then skip this and compare bytes. + if(!(UNALIGNED(s1) | UNALIGNED(s2))) + { + // Compare them a word at a time. + a1 = (unsigned long *)s1; + a2 = (unsigned long *)s2; + while(*a1 == *a2) + { + // If *a1 == *a2, and we find a null in *a1, + // then the strings must be equal, so return zero. + if(CONTAINSNULL(*a1)) + return 0; + + a1++; + a2++; + } + + s1 = (char *)a1; + s2 = (char *)a2; + } + + // Check the remaining few bytes. + while(*s1 != '\0' && *s1 == *s2) + { + s1++; + s2++; + } + + return (*(unsigned char *) s1) - (*(unsigned char *) s2); } diff --git a/src/menu_cursor.c b/src/menu_cursor.c index 88d43f468..26bac236d 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -36,575 +36,575 @@ void sub_814ADF4(u8 a1); void sub_814A590(void) { - gUnknown_0203A3D0 = 0x40; - gUnknown_0203A3D1 = 0x40; - gUnknown_0203A3D2 = 0x40; - gUnknown_0203A3D3 = 0; - gUnknown_0203A3D4 = 0; + gUnknown_0203A3D0 = 0x40; + gUnknown_0203A3D1 = 0x40; + gUnknown_0203A3D2 = 0x40; + gUnknown_0203A3D3 = 0; + gUnknown_0203A3D4 = 0; } u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) { - int v9; - struct Sprite *v10; - - if (gUnknown_0203A3D0 != 0x40 || gUnknown_0203A3D1 != 0x40) - sub_814A7FC(); - - v9 = 1; - if (a2 == 0xFFFF) - { - gUnknown_0203A360[a3 & 0xF] = a4; - if (LoadSpritePalette(&gUnknown_0842F240) != 0xFF) + int v9; + struct Sprite *v10; + + if (gUnknown_0203A3D0 != 0x40 || gUnknown_0203A3D1 != 0x40) + sub_814A7FC(); + + v9 = 1; + if (a2 == 0xFFFF) { - a2 = 0xFFF0; - v9 = 0; + gUnknown_0203A360[a3 & 0xF] = a4; + if (LoadSpritePalette(&gUnknown_0842F240) != 0xFF) + { + a2 = 0xFFF0; + v9 = 0; + } } - } - - LoadSpriteSheetDeferred(&gUnknown_0842F140[a3 & 0xF]); - gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 0xA0, a1); - gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 0xA0, a1); - if (gUnknown_0203A3D0 != 0x40) - { - v10 = &gSprites[gUnknown_0203A3D0]; - if (a2 == 0xFFFF) - v10->oam.paletteNum = 0; - else - v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); - } - if (gUnknown_0203A3D1 != 0x40) - { - v10 = &gSprites[gUnknown_0203A3D1]; - if (a2 == 0xFFFF) - v10->oam.paletteNum = 0; - else - v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); - if (!(REG_DISPCNT & (DISPCNT_WIN0_ON | DISPCNT_WIN1_ON))) - *(u8 *)(REG_ADDR_WINOUT) |= 0x1F; - gUnknown_0203A3D3 = REG_DISPCNT >> 0xF; - gUnknown_0203A3D4 = *(u8 *)(REG_BASE + REG_OFFSET_WINOUT + 1); - REG_DISPCNT |= DISPCNT_OBJWIN_ON; - *(u8 *)(REG_ADDR_WINOUT + 1) = 0x10; - } - sub_814A958(a5); - return gUnknown_0203A3D0; + LoadSpriteSheetDeferred(&gUnknown_0842F140[a3 & 0xF]); + gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 0xA0, a1); + gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 0xA0, a1); + if (gUnknown_0203A3D0 != 0x40) + { + v10 = &gSprites[gUnknown_0203A3D0]; + if (a2 == 0xFFFF) + v10->oam.paletteNum = 0; + else + v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); + } + if (gUnknown_0203A3D1 != 0x40) + { + v10 = &gSprites[gUnknown_0203A3D1]; + if (a2 == 0xFFFF) + v10->oam.paletteNum = 0; + else + v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); + + if (!(REG_DISPCNT & (DISPCNT_WIN0_ON | DISPCNT_WIN1_ON))) + *(u8 *)(REG_ADDR_WINOUT) |= 0x1F; + gUnknown_0203A3D3 = REG_DISPCNT >> 0xF; + gUnknown_0203A3D4 = *(u8 *)(REG_BASE + REG_OFFSET_WINOUT + 1); + REG_DISPCNT |= DISPCNT_OBJWIN_ON; + *(u8 *)(REG_ADDR_WINOUT + 1) = 0x10; + } + sub_814A958(a5); + return gUnknown_0203A3D0; } u8 sub_814A758(u8 a1, u8 a2, u8 a3, u8 a4) { - u8 result; - struct Sprite *spr; - - result = sub_814A5C0(a1, 0, a3, 0, a4); - if (result != 0x40) - { - spr = &gSprites[gUnknown_0203A3D0]; - spr->oam.paletteNum = a2; - } - return result; + u8 result; + struct Sprite *spr; + + result = sub_814A5C0(a1, 0, a3, 0, a4); + if (result != 0x40) + { + spr = &gSprites[gUnknown_0203A3D0]; + spr->oam.paletteNum = a2; + } + return result; } u8 unref_sub_814A7AC(u8 a1, u16 a2, u8 a3) { - u16 i; - u8 val1 = 0; - u16 val2 = 0xF; - - for (i = 0; i <= 0xFF; i++) - { - if (gPlttBufferUnfaded[i] == a2) + u16 i; + u8 val1 = 0; + u16 val2 = 0xF; + + for (i = 0; i <= 0xFF; i++) { - val1 = (u8)(i >> 4); - val2 = i & 0xF; + if (gPlttBufferUnfaded[i] == a2) + { + val1 = (u8)(i >> 4); + val2 = i & 0xF; + } } - } - - return sub_814A758(a1, val1, val2, a3); + + return sub_814A758(a1, val1, val2, a3); } void sub_814A7FC(void) { - if (gUnknown_0203A3D0 != 0x40) - { - LoadTilesForSpriteSheet(&gUnknown_0842F140[0]); - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203A3D0]); - gUnknown_0203A3D0 = 0x40; - } - - if (gUnknown_0203A3D1 != 0x40) - { - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203A3D1]); - gUnknown_0203A3D1 = 0x40; - if (!gUnknown_0203A3D3) - REG_DISPCNT &= ~DISPCNT_OBJWIN_ON; - *(u8 *)(REG_BASE + REG_OFFSET_WINOUT + 1) = gUnknown_0203A3D4; - } - - return; + if (gUnknown_0203A3D0 != 0x40) + { + LoadTilesForSpriteSheet(&gUnknown_0842F140[0]); + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203A3D0]); + gUnknown_0203A3D0 = 0x40; + } + + if (gUnknown_0203A3D1 != 0x40) + { + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203A3D1]); + gUnknown_0203A3D1 = 0x40; + if (!gUnknown_0203A3D3) + REG_DISPCNT &= ~DISPCNT_OBJWIN_ON; + *(u8 *)(REG_BASE + REG_OFFSET_WINOUT + 1) = gUnknown_0203A3D4; + } + + return; } void sub_814A880(u8 a1, u8 a2) { - struct Sprite *spr; - - if (gUnknown_0203A3D0 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D0]; - spr->invisible = 0; - spr->centerToCornerVecX = 0; - spr->centerToCornerVecY = 0; - spr->pos1.x = a1; - spr->pos1.y = a2; - } - - if (gUnknown_0203A3D1 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D1]; - spr->invisible = 0; - spr->centerToCornerVecX = 0; - spr->centerToCornerVecY = 0; - spr->pos1.x = a1; - spr->pos1.y = a2; - } - - return; + struct Sprite *spr; + + if (gUnknown_0203A3D0 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D0]; + spr->invisible = 0; + spr->centerToCornerVecX = 0; + spr->centerToCornerVecY = 0; + spr->pos1.x = a1; + spr->pos1.y = a2; + } + + if (gUnknown_0203A3D1 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D1]; + spr->invisible = 0; + spr->centerToCornerVecX = 0; + spr->centerToCornerVecY = 0; + spr->pos1.x = a1; + spr->pos1.y = a2; + } + + return; } void sub_814A904(void) { - struct Sprite *spr; - - if (gUnknown_0203A3D0 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D0]; - spr->invisible = 1; - } - - if (gUnknown_0203A3D1 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D1]; - spr->invisible = 1; - } - - return; + struct Sprite *spr; + + if (gUnknown_0203A3D0 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D0]; + spr->invisible = 1; + } + + if (gUnknown_0203A3D1 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D1]; + spr->invisible = 1; + } + + return; } #ifdef NONMATCHING // Fix pls void sub_814A958(u8 a1) { - struct Subsprite *cursub; - u8 v2; // r7@1 - s16 v3; // r2@1 - s32 v5; // r0@1 - s32 v6; // r3@1 - s32 v7; // r5@3 - int v8; // r7@9 - s16 negone; - - cursub = &gMenuCursorSubsprites[0]; - negone = -1; - cursub = (struct Subsprite){0,2}; - cursub->x = negone; - cursub++; - - v2 = 1; - v3 = 1; - v5 = (a1 - 1) << 0x10; - v6 = v5 >> 0x10; - if ((v5 >> 0x10) > 7) - { - do + struct Subsprite *cursub; + u8 v2; // r7@1 + s16 v3; // r2@1 + s32 v5; // r0@1 + s32 v6; // r3@1 + s32 v7; // r5@3 + int v8; // r7@9 + s16 negone; + + cursub = &gMenuCursorSubsprites[0]; + negone = -1; + cursub = (struct Subsprite){0,2}; + cursub->x = negone; + cursub++; + + v2 = 1; + v3 = 1; + v5 = (a1 - 1) << 0x10; + v6 = v5 >> 0x10; + if ((v5 >> 0x10) > 7) { - if (v6 > 0x1F) - { - *cursub = gUnknown_0842F780; - cursub->x = v3; - v3 = ((v3 << 16) + 0x200000) >> 16; - v7 = a1 << 16; - } - else - { - v7 = a1 << 16; - if (a1 <= 0x27 || v6 <= 0x8) - { - *cursub = gUnknown_0842F788; - cursub->x = v3; - v3 = ((v3 << 16) + 0x80000) >> 16; - } - else + do { - *cursub = gUnknown_0842F780; - cursub->x = v3 - 0x20 + (v6 & 0xFFF8); - v3 = (v3 + (v6 & 0x18)) & negone; + if (v6 > 0x1F) + { + *cursub = gUnknown_0842F780; + cursub->x = v3; + v3 = ((v3 << 16) + 0x200000) >> 16; + v7 = a1 << 16; + } + else + { + v7 = a1 << 16; + if (a1 <= 0x27 || v6 <= 0x8) + { + *cursub = gUnknown_0842F788; + cursub->x = v3; + v3 = ((v3 << 16) + 0x80000) >> 16; + } + else + { + *cursub = gUnknown_0842F780; + cursub->x = v3 - 0x20 + (v6 & 0xFFF8); + v3 = (v3 + (v6 & 0x18)) & negone; + } + } + + cursub++; + v2 = v2 + 1; + v6 = ((v7 >> 16) - v3) & 0xFFFF; } - } - - cursub++; - v2 = v2 + 1; - v6 = ((v7 >> 16) - v3) & 0xFFFF; + while (v7 - v3 > 7); } - while (v7 - v3 > 7); - } - *cursub = gUnknown_0842F790; - cursub->x = v6 + v3 - 7; - v8 = v2 + 1; - if (gUnknown_0203A3D0 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D0], &gSubspriteTables_842F5C0[v8]); - if (gUnknown_0203A3D1 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D1], &gSubspriteTables_842F5C0[v8]); - return; + *cursub = gUnknown_0842F790; + cursub->x = v6 + v3 - 7; + v8 = v2 + 1; + if (gUnknown_0203A3D0 != 0x40) + SetSubspriteTables(&gSprites[gUnknown_0203A3D0], &gSubspriteTables_842F5C0[v8]); + if (gUnknown_0203A3D1 != 0x40) + SetSubspriteTables(&gSprites[gUnknown_0203A3D1], &gSubspriteTables_842F5C0[v8]); + return; } #else __attribute__((naked)) void sub_814A958(u8 a1) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - ldr r4, _0814A9C4\n\ - ldr r2, _0814A9C8\n\ - lsrs r0, 24\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - movs r1, 0\n\ - movs r1, 0x2\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - strh r2, [r4]\n\ - adds r4, 0x8\n\ - movs r7, 0x1\n\ - movs r2, 0x1\n\ - ldr r1, [sp]\n\ - subs r0, r1, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x7\n\ - ble _0814AA3A\n\ - ldr r0, _0814A9CC\n\ - mov r12, r0\n\ - mov r8, r1\n\ - movs r1, 0x8\n\ - negs r1, r1\n\ - mov r10, r1\n\ - ldr r5, _0814A9D0\n\ - mov r9, r5\n\ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + ldr r4, _0814A9C4\n\ + ldr r2, _0814A9C8\n\ + lsrs r0, 24\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + movs r1, 0x2\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + strh r2, [r4]\n\ + adds r4, 0x8\n\ + movs r7, 0x1\n\ + movs r2, 0x1\n\ + ldr r1, [sp]\n\ + subs r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x7\n\ + ble _0814AA3A\n\ + ldr r0, _0814A9CC\n\ + mov r12, r0\n\ + mov r8, r1\n\ + movs r1, 0x8\n\ + negs r1, r1\n\ + mov r10, r1\n\ + ldr r5, _0814A9D0\n\ + mov r9, r5\n\ _0814A99E:\n\ - lsls r0, r3, 16\n\ - asrs r3, r0, 16\n\ - cmp r3, 0x1F\n\ - ble _0814A9D4\n\ - mov r6, r12\n\ - ldr r0, [r6]\n\ - ldr r1, [r6, 0x4]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - strh r2, [r4]\n\ - lsls r0, r2, 16\n\ - movs r1, 0x80\n\ - lsls r1, 14\n\ - adds r0, r1\n\ - lsrs r2, r0, 16\n\ - ldr r3, [sp]\n\ - lsls r5, r3, 16\n\ - b _0814AA20\n\ - .align 2, 0\n\ + lsls r0, r3, 16\n\ + asrs r3, r0, 16\n\ + cmp r3, 0x1F\n\ + ble _0814A9D4\n\ + mov r6, r12\n\ + ldr r0, [r6]\n\ + ldr r1, [r6, 0x4]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + strh r2, [r4]\n\ + lsls r0, r2, 16\n\ + movs r1, 0x80\n\ + lsls r1, 14\n\ + adds r0, r1\n\ + lsrs r2, r0, 16\n\ + ldr r3, [sp]\n\ + lsls r5, r3, 16\n\ + b _0814AA20\n\ + .align 2, 0\n\ _0814A9C4: .4byte gMenuCursorSubsprites\n\ _0814A9C8: .4byte 0x0000ffff\n\ _0814A9CC: .4byte gUnknown_0842F780\n\ _0814A9D0: .4byte gUnknown_0842F788\n\ _0814A9D4:\n\ - ldr r6, [sp]\n\ - lsls r5, r6, 16\n\ - mov r0, r8\n\ - cmp r0, 0x27\n\ - ble _0814AA0A\n\ - cmp r3, 0x8\n\ - ble _0814AA0A\n\ - mov r6, r12\n\ - ldr r0, [r6]\n\ - ldr r1, [r6, 0x4]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - adds r2, r1, 0\n\ - subs r2, 0x20\n\ - adds r0, r3, 0\n\ - mov r6, r10\n\ - ands r0, r6\n\ - adds r2, r0\n\ - strh r2, [r4]\n\ - movs r0, 0x18\n\ - ands r0, r3\n\ - adds r1, r0\n\ - lsls r1, 16\n\ - lsrs r2, r1, 16\n\ - b _0814AA20\n\ + ldr r6, [sp]\n\ + lsls r5, r6, 16\n\ + mov r0, r8\n\ + cmp r0, 0x27\n\ + ble _0814AA0A\n\ + cmp r3, 0x8\n\ + ble _0814AA0A\n\ + mov r6, r12\n\ + ldr r0, [r6]\n\ + ldr r1, [r6, 0x4]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + lsls r1, r2, 16\n\ + asrs r1, 16\n\ + adds r2, r1, 0\n\ + subs r2, 0x20\n\ + adds r0, r3, 0\n\ + mov r6, r10\n\ + ands r0, r6\n\ + adds r2, r0\n\ + strh r2, [r4]\n\ + movs r0, 0x18\n\ + ands r0, r3\n\ + adds r1, r0\n\ + lsls r1, 16\n\ + lsrs r2, r1, 16\n\ + b _0814AA20\n\ _0814AA0A:\n\ - mov r3, r9\n\ - ldr r0, [r3]\n\ - ldr r1, [r3, 0x4]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - strh r2, [r4]\n\ - lsls r0, r2, 16\n\ - movs r6, 0x80\n\ - lsls r6, 12\n\ - adds r0, r6\n\ - lsrs r2, r0, 16\n\ + mov r3, r9\n\ + ldr r0, [r3]\n\ + ldr r1, [r3, 0x4]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + strh r2, [r4]\n\ + lsls r0, r2, 16\n\ + movs r6, 0x80\n\ + lsls r6, 12\n\ + adds r0, r6\n\ + lsrs r2, r0, 16\n\ _0814AA20:\n\ - adds r4, 0x8\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - asrs r1, r5, 16\n\ - lsls r0, r2, 16\n\ - asrs r0, 16\n\ - subs r1, r0\n\ - lsls r1, 16\n\ - lsrs r3, r1, 16\n\ - asrs r1, 16\n\ - cmp r1, 0x7\n\ - bgt _0814A99E\n\ + adds r4, 0x8\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + asrs r1, r5, 16\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + subs r1, r0\n\ + lsls r1, 16\n\ + lsrs r3, r1, 16\n\ + asrs r1, 16\n\ + cmp r1, 0x7\n\ + bgt _0814A99E\n\ _0814AA3A:\n\ - ldr r5, _0814AAA8\n\ - ldr r0, [r5]\n\ - ldr r1, [r5, 0x4]\n\ - str r0, [r4]\n\ - str r1, [r4, 0x4]\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - subs r1, 0x7\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - adds r0, r1\n\ - strh r0, [r4]\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r6, _0814AAAC\n\ - ldrb r0, [r6]\n\ - cmp r0, 0x40\n\ - beq _0814AA78\n\ - adds r1, r0, 0\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _0814AAB0\n\ - adds r2, r0, r1\n\ - lsls r1, r7, 3\n\ - ldr r0, _0814AAB4\n\ - adds r1, r0\n\ - adds r0, r2, 0\n\ - bl SetSubspriteTables\n\ + ldr r5, _0814AAA8\n\ + ldr r0, [r5]\n\ + ldr r1, [r5, 0x4]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + lsls r1, r2, 16\n\ + asrs r1, 16\n\ + subs r1, 0x7\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + adds r0, r1\n\ + strh r0, [r4]\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r6, _0814AAAC\n\ + ldrb r0, [r6]\n\ + cmp r0, 0x40\n\ + beq _0814AA78\n\ + adds r1, r0, 0\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _0814AAB0\n\ + adds r2, r0, r1\n\ + lsls r1, r7, 3\n\ + ldr r0, _0814AAB4\n\ + adds r1, r0\n\ + adds r0, r2, 0\n\ + bl SetSubspriteTables\n\ _0814AA78:\n\ - ldr r1, _0814AAB8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x40\n\ - beq _0814AA98\n\ - adds r1, r0, 0\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _0814AAB0\n\ - adds r2, r0, r1\n\ - lsls r1, r7, 3\n\ - ldr r0, _0814AAB4\n\ - adds r1, r0\n\ - adds r0, r2, 0\n\ - bl SetSubspriteTables\n\ + ldr r1, _0814AAB8\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x40\n\ + beq _0814AA98\n\ + adds r1, r0, 0\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _0814AAB0\n\ + adds r2, r0, r1\n\ + lsls r1, r7, 3\n\ + ldr r0, _0814AAB4\n\ + adds r1, r0\n\ + adds r0, r2, 0\n\ + bl SetSubspriteTables\n\ _0814AA98:\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _0814AAA8: .4byte gUnknown_0842F790\n\ _0814AAAC: .4byte gUnknown_0203A3D0\n\ _0814AAB0: .4byte gSprites\n\ _0814AAB4: .4byte gSubspriteTables_842F5C0\n\ _0814AAB8: .4byte gUnknown_0203A3D1\n\ - .syntax divided\n"); + .syntax divided\n"); } #endif void sub_814AABC(void (*callback)(struct Sprite *)) { - struct Sprite *spr; - - if (gUnknown_0203A3D0 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D0]; - spr->callback = callback; - } - - if (gUnknown_0203A3D1 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D1]; - spr->callback = callback; - } - - return; + struct Sprite *spr; + + if (gUnknown_0203A3D0 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D0]; + spr->callback = callback; + } + + if (gUnknown_0203A3D1 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D1]; + spr->callback = callback; + } + + return; } void sub_814AAF8(u16 a1) { - struct Sprite *spr; - u8 v2; - u8 v3; - u16 v4; - - if (gUnknown_0203A3D0 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D0]; - if (spr->template->paletteTag == 0xFFFF) + struct Sprite *spr; + u8 v2; + u8 v3; + u16 v4; + + if (gUnknown_0203A3D0 != 0x40) { - for (v2 = 0, v3 = 0xF, v4 = 0; v4 <= 0xFF; v4++) - { - if (gPlttBufferUnfaded[v4] == a1) + spr = &gSprites[gUnknown_0203A3D0]; + if (spr->template->paletteTag == 0xFFFF) { - v2 = v4 >> 4; - v3 = v4 & 0xF; + for (v2 = 0, v3 = 0xF, v4 = 0; v4 <= 0xFF; v4++) + { + if (gPlttBufferUnfaded[v4] == a1) + { + v2 = v4 >> 4; + v3 = v4 & 0xF; + } + } + spr->oam.paletteNum = v2; + RequestSpriteSheetCopy(&gUnknown_0842F140[v3 & 0xF]); } - } - spr->oam.paletteNum = v2; - RequestSpriteSheetCopy(&gUnknown_0842F140[v3 & 0xF]); } - } - return; + return; } void sub_814AB84(void) { - struct Sprite *spr; + struct Sprite *spr; - if (gUnknown_0203A3D1 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D1]; - FreeSpriteOamMatrix(spr); - DestroySprite(spr); - gUnknown_0203A3D1 = 0x40; - - if (!gUnknown_0203A3D3) - REG_DISPCNT &= ~DISPCNT_OBJWIN_ON; - *(u8 *)(REG_ADDR_WINOUT + 1) = gUnknown_0203A3D4; - } - return; + if (gUnknown_0203A3D1 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D1]; + FreeSpriteOamMatrix(spr); + DestroySprite(spr); + gUnknown_0203A3D1 = 0x40; + + if (!gUnknown_0203A3D3) + REG_DISPCNT &= ~DISPCNT_OBJWIN_ON; + *(u8 *)(REG_ADDR_WINOUT + 1) = gUnknown_0203A3D4; + } + return; } void unref_sub_814ABE4(int a1) { - struct Sprite *spr; - - CpuSet(gUnknown_0842F5BC[a1], &gMenuCursorSubsprites, 0x28); - - if (gUnknown_0203A3D0 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D0]; - SetSubspriteTables(spr, &gUnknown_0842F758[a1]); - } - if (gUnknown_0203A3D1 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D1]; - SetSubspriteTables(spr, &gUnknown_0842F758[a1]); - } - return; + struct Sprite *spr; + + CpuSet(gUnknown_0842F5BC[a1], &gMenuCursorSubsprites, 0x28); + + if (gUnknown_0203A3D0 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D0]; + SetSubspriteTables(spr, &gUnknown_0842F758[a1]); + } + if (gUnknown_0203A3D1 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D1]; + SetSubspriteTables(spr, &gUnknown_0842F758[a1]); + } + return; } u8 CreateBlendedOutlineCursor(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) { - int v8; - struct Sprite *spr; - u8 var1 = gUnknown_0203A3D2; - - if (var1 != 0x40) - sub_814AD44(); - - v8 = 1; - - if (a2 == 0xFFFF) - { - gUnknown_0203A360[a3 & 0xF] = a4; - if (LoadSpritePalette(&gUnknown_0842F248) != 0xFF ) + int v8; + struct Sprite *spr; + u8 var1 = gUnknown_0203A3D2; + + if (var1 != 0x40) + sub_814AD44(); + + v8 = 1; + + if (a2 == 0xFFFF) { - a2 = 0xFFF1; - v8 = 0; + gUnknown_0203A360[a3 & 0xF] = a4; + if (LoadSpritePalette(&gUnknown_0842F248) != 0xFF ) + { + a2 = 0xFFF1; + v8 = 0; + } } - } - - LoadSpriteSheetDeferred(&gUnknown_0842F1C0[a3 & 0xF]); - gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 0xA0, a1); - - if (gUnknown_0203A3D2 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D2]; - if (a2 == 0xFFFF) - spr->oam.paletteNum = 0; - else - spr->oam.paletteNum = IndexOfSpritePaletteTag(a2); - } - sub_814ADF4(a5); - - return gUnknown_0203A3D2; + LoadSpriteSheetDeferred(&gUnknown_0842F1C0[a3 & 0xF]); + gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 0xA0, a1); + + if (gUnknown_0203A3D2 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D2]; + + if (a2 == 0xFFFF) + spr->oam.paletteNum = 0; + else + spr->oam.paletteNum = IndexOfSpritePaletteTag(a2); + } + sub_814ADF4(a5); + + return gUnknown_0203A3D2; } void sub_814AD44(void) { - if (gUnknown_0203A3D2 != 0x40) - { - LoadTilesForSpriteSheet(&gUnknown_0842F1C0[0]); - DestroySpriteAndFreeResources(&gSprites[gUnknown_0203A3D2]); - gUnknown_0203A3D2 = 0x40; - } - return; + if (gUnknown_0203A3D2 != 0x40) + { + LoadTilesForSpriteSheet(&gUnknown_0842F1C0[0]); + DestroySpriteAndFreeResources(&gSprites[gUnknown_0203A3D2]); + gUnknown_0203A3D2 = 0x40; + } + return; } void sub_814AD7C(u8 a1, u8 a2) { - struct Sprite *spr; - if (gUnknown_0203A3D2 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D2]; - spr->invisible = 0; - spr->centerToCornerVecX = 0; - spr->centerToCornerVecY = 0; - spr->pos1.x = a1; - spr->pos1.y = a2; - } - return; + struct Sprite *spr; + if (gUnknown_0203A3D2 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D2]; + spr->invisible = 0; + spr->centerToCornerVecX = 0; + spr->centerToCornerVecY = 0; + spr->pos1.x = a1; + spr->pos1.y = a2; + } + return; } void sub_814ADC8() { - struct Sprite *spr; - if (gUnknown_0203A3D2 != 0x40) - { - spr = &gSprites[gUnknown_0203A3D2]; - spr->invisible = 1; - } - return; + struct Sprite *spr; + if (gUnknown_0203A3D2 != 0x40) + { + spr = &gSprites[gUnknown_0203A3D2]; + spr->invisible = 1; + } + return; } void sub_814ADF4(u8 a1) { - if (a1 > 0x12) - a1 = 0; - - if (gUnknown_0203A3D2 != 0x40) - SetSubspriteTables(&gSprites[gUnknown_0203A3D2], &gUnknown_0842F6C0[a1]); - return; + if (a1 > 0x12) + a1 = 0; + + if (gUnknown_0203A3D2 != 0x40) + SetSubspriteTables(&gSprites[gUnknown_0203A3D2], &gUnknown_0842F6C0[a1]); + return; } |