summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/berry.c608
-rw-r--r--src/libc.c242
-rw-r--r--src/menu_cursor.c932
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;
}