summaryrefslogtreecommitdiff
path: root/src/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c108
1 files changed, 33 insertions, 75 deletions
diff --git a/src/common.c b/src/common.c
index e05db3ee..4a0e9f80 100644
--- a/src/common.c
+++ b/src/common.c
@@ -1054,13 +1054,13 @@ void NotifyFusersOnFusionDone(KinstoneId kinstoneId) {
u32 index;
if (kinstoneId - 1 < 100) {
for (index = 0; index < 0x80; index++) {
- if (kinstoneId == gSave.fuserOffers[index]) {
- gSave.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT;
+ if (kinstoneId == gSave.kinstones.fuserOffers[index]) {
+ gSave.kinstones.fuserOffers[index] = KINSTONE_NEEDS_REPLACEMENT;
}
}
tmp = GetFuserId(gFuseInfo.entity);
- if ((tmp - 1 < 0x7f) && (gSave.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) {
- gSave.fuserOffers[tmp] = KINSTONE_JUST_FUSED;
+ if ((tmp - 1 < 0x7f) && (gSave.kinstones.fuserOffers[tmp] == KINSTONE_NEEDS_REPLACEMENT)) {
+ gSave.kinstones.fuserOffers[tmp] = KINSTONE_JUST_FUSED;
}
for (index = 0; index < 0x20; index++) {
if (kinstoneId == gPossibleInteraction.candidates[index].kinstoneId) {
@@ -1079,17 +1079,17 @@ void AddKinstoneToBag(KinstoneId kinstoneId) {
index = GetIndexInKinstoneBag(kinstoneId);
if (index < 0) {
index = 0;
- while (gSave.kinstoneTypes[index] != KINSTONE_NONE) {
+ while (gSave.kinstones.types[index] != KINSTONE_NONE) {
index++;
}
}
if ((u32)index < 0x12) {
- gSave.kinstoneTypes[index] = kinstoneId;
- tmp = gSave.kinstoneAmounts[index] + 1;
+ gSave.kinstones.types[index] = kinstoneId;
+ tmp = gSave.kinstones.amounts[index] + 1;
if (tmp > 99) {
tmp = 99;
}
- gSave.kinstoneAmounts[index] = tmp;
+ gSave.kinstones.amounts[index] = tmp;
}
}
}
@@ -1097,12 +1097,12 @@ void AddKinstoneToBag(KinstoneId kinstoneId) {
void RemoveKinstoneFromBag(KinstoneId kinstoneId) {
s32 idx = GetIndexInKinstoneBag(kinstoneId);
if (idx >= 0) {
- s32 next = gSave.kinstoneAmounts[idx] - 1;
+ s32 next = gSave.kinstones.amounts[idx] - 1;
if (next <= 0) {
- gSave.kinstoneTypes[idx] = KINSTONE_NONE;
+ gSave.kinstones.types[idx] = KINSTONE_NONE;
next = 0;
}
- gSave.kinstoneAmounts[idx] = next;
+ gSave.kinstones.amounts[idx] = next;
}
}
@@ -1111,92 +1111,50 @@ u32 GetAmountInKinstoneBag(KinstoneId kinstoneId) {
if (index < 0) {
return 0;
}
- return gSave.kinstoneAmounts[index];
+ return gSave.kinstones.amounts[index];
}
u32 CheckKinstoneFused(KinstoneId kinstoneId) {
if (kinstoneId - 1 >= 100) {
return 0;
}
- return ReadBit(&gSave.fusedKinstones, kinstoneId);
+ return ReadBit(&gSave.kinstones.fusedKinstones, kinstoneId);
}
bool32 CheckFusionMapMarkerDisabled(KinstoneId kinstoneId) {
if (kinstoneId - 1 >= 100) {
return FALSE;
}
- return ReadBit(&gSave.fusionUnmarked, kinstoneId);
+ return ReadBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
}
void SortKinstoneBag(void) {
-#ifdef NON_MATCHING
- u32 r5;
+ u32 i;
+
+ KinstoneSave* ptr = &gSave.kinstones;
- for (r5 = 0; r5 < 0x13; r5++) {
- if (gSave.kinstoneAmounts[r5] == 0) {
- gSave.kinstoneTypes[r5] = gSave.kinstoneAmounts[r5];
+ for (i = 0; i < 19; i++) {
+ if (ptr->amounts[i] == 0) {
+ ptr->types[i] = 0;
}
}
- gSave.kinstoneTypes[0x12] = 0;
- gSave.kinstoneAmounts[0x12] = 0;
+ ptr->types[18] = 0;
+ ptr->amounts[18] = 0;
- for (r5 = 0; r5 < 0x12; r5++) {
- if ((gSave.kinstoneTypes[r5] - 0x65) > 0x10) {
- MemCopy(&gSave.kinstoneTypes[r5 + 1], &gSave.kinstoneTypes[r5], 0x12 - r5);
- MemCopy(&gSave.kinstoneAmounts[r5 + 1], &gSave.kinstoneAmounts[r5], 0x12 - r5);
+ for (i = 0; i < 18; i++) {
+ u32 t = ptr->types[i];
+ if (t < 0x65 || t > 0x75) {
+ MemCopy(&ptr->types[i + 1], &ptr->types[i], 0x12 - i);
+ MemCopy(&ptr->amounts[i + 1], &ptr->amounts[i], 0x12 - i);
}
}
-#else
- u32 r0, r4, r5;
- u32 new_var;
- u8 *r1, *r2, *r3, *r6, *r7, *r8, *r9, *r10;
-
- new_var = 4;
- r1 = &gSave.inventory[34];
- r5 = 0;
- r2 = gSave.kinstoneTypes;
-code0_0:
- r0 = r2[0x13];
- r3 = &r1[4];
- r10 = r3;
- if (r0 == 0) {
- *r2 = r0;
- }
- r2++;
- r5++;
- if (r5 <= 0x12)
- goto code0_0;
-
- r1[0x16] = 0;
- r1[0x29] = 0;
- r5 = 0;
- r9 = &r1[0x17];
- r3 = &r1[0x18];
- r8 = r3;
- r7 = &r1[new_var];
- r6 = &r1[5];
-code0_2:
- r0 = r10[r5] - 0x65;
- if (r0 > 0x10) {
- MemCopy(r6, r7, 0x12 - r5);
- MemCopy(r8, r9, 0x12 - r5);
- }
- r9++;
- r8++;
- r7++;
- r6++;
- r5++;
- if (r5 <= 0x11)
- goto code0_2;
-#endif
}
-
s32 GetIndexInKinstoneBag(KinstoneId kinstoneId) {
u32 i;
for (i = 0; i < 0x12; ++i) {
- if (kinstoneId == gSave.kinstoneTypes[i])
+ if (kinstoneId == gSave.kinstones.types[i])
return i;
}
return -1;
@@ -1264,7 +1222,7 @@ void UpdateVisibleFusionMapMarkers(void) {
#else
if (sub_0807CB24(tmp, s->flag)) {
#endif
- WriteBit(&gSave.fusionUnmarked, kinstoneId);
+ WriteBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
}
}
}
@@ -1285,8 +1243,8 @@ KinstoneId GetFusionToOffer(Entity* entity) {
if (GetInventoryValue(ITEM_KINSTONE_BAG) == 0 || fuserData[0] > gSave.global_progress) {
return KINSTONE_NONE;
}
- offeredFusion = gSave.fuserOffers[fuserId];
- fuserProgress = gSave.fuserProgress[fuserId];
+ offeredFusion = gSave.kinstones.fuserOffers[fuserId];
+ fuserProgress = gSave.kinstones.fuserProgress[fuserId];
fuserFusionData = (u8*)(fuserProgress + (u32)fuserData);
while (TRUE) { // loop through fusions for this fuser
switch (offeredFusion) {
@@ -1317,8 +1275,8 @@ KinstoneId GetFusionToOffer(Entity* entity) {
}
offeredFusion = KINSTONE_NEEDS_REPLACEMENT; // already completed, try next fusion in the list
}
- gSave.fuserOffers[fuserId] = offeredFusion;
- gSave.fuserProgress[fuserId] = fuserProgress;
+ gSave.kinstones.fuserOffers[fuserId] = offeredFusion;
+ gSave.kinstones.fuserProgress[fuserId] = fuserProgress;
randomMood = Random();
fuserStability = fuserData[1];
if (fuserStability <= randomMood % 100) {