summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTheo <65437533+notyourav@users.noreply.github.com>2023-12-23 21:10:01 -0800
committerGitHub <noreply@github.com>2023-12-23 21:10:01 -0800
commit22ed1e35d70ed72b633c8ad94cde6353af8d49d9 (patch)
tree8bfa994cd1e1aa53482f870dd71628a5ff6f320e /src
parent1e8ced01e6fd0f2a5fa607363dcb3af5eaaf9df3 (diff)
parent1944bf5e6dd7378eb844db7cdfadfb8e66665f5d (diff)
Merge pull request #663 from Henny022p/SortKinstoneBag
Match SortKinstoneBag
Diffstat (limited to 'src')
-rw-r--r--src/common.c108
-rw-r--r--src/itemUtils.c2
-rw-r--r--src/menu/kinstoneMenu.c14
-rw-r--r--src/menu/pauseMenu.c8
-rw-r--r--src/npc/cucco.c2
-rw-r--r--src/npc/din.c2
-rw-r--r--src/npc/farore.c2
-rw-r--r--src/npc/nayru.c2
-rw-r--r--src/npc/tingleSiblings.c4
-rw-r--r--src/npcUtils.c2
-rw-r--r--src/object/cuccoMinigame.c2
-rw-r--r--src/object/object37.c4
-rw-r--r--src/playerUtils.c2
13 files changed, 56 insertions, 98 deletions
diff --git a/src/common.c b/src/common.c
index f4266ce8..225563d4 100644
--- a/src/common.c
+++ b/src/common.c
@@ -1049,13 +1049,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) {
@@ -1074,17 +1074,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;
}
}
}
@@ -1092,12 +1092,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;
}
}
@@ -1106,92 +1106,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;
@@ -1259,7 +1217,7 @@ void UpdateVisibleFusionMapMarkers(void) {
#else
if (sub_0807CB24(tmp, s->flag)) {
#endif
- WriteBit(&gSave.fusionUnmarked, kinstoneId);
+ WriteBit(&gSave.kinstones.fusionUnmarked, kinstoneId);
}
}
}
@@ -1280,8 +1238,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) {
@@ -1312,8 +1270,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) {
diff --git a/src/itemUtils.c b/src/itemUtils.c
index 9436621f..1b3cf948 100644
--- a/src/itemUtils.c
+++ b/src/itemUtils.c
@@ -480,7 +480,7 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
ptr2 = &gDroptableModifiers[DROPTABLE_NO_SHELLS];
}
// don't drop kinstones anymore
- if (gSave.didAllFusions != 0) {
+ if (gSave.kinstones.didAllFusions != 0) {
ptr3 = &gDroptableModifiers[DROPTABLE_NO_KINSTONES];
}
// vector addition, s0 = s0 + ptr2 + ptr3
diff --git a/src/menu/kinstoneMenu.c b/src/menu/kinstoneMenu.c
index e9f5b7d0..b41d3707 100644
--- a/src/menu/kinstoneMenu.c
+++ b/src/menu/kinstoneMenu.c
@@ -86,7 +86,7 @@ const ScreenTransitionData gUnk_08128024[] = {
u32 sub_080A3B48(void) {
u32 index;
for (index = 0; index <= 0x12; index++) {
- if (gSave.kinstoneAmounts[index] == 0) {
+ if (gSave.kinstones.amounts[index] == 0) {
break;
}
}
@@ -206,7 +206,7 @@ void KinstoneMenu_Type1(void) {
case A_BUTTON:
if (gMenu.column_idx == 2) {
tmp3 = gGenericMenu.unk10.i / 0x10000;
- gGenericMenu.unk2a = gSave.kinstoneTypes[tmp3];
+ gGenericMenu.unk2a = gSave.kinstones.types[tmp3];
SetMenuType(3);
}
break;
@@ -319,9 +319,9 @@ void KinstoneMenu_Type5(void) {
void KinstoneMenu_Type5_Overlay0(void) {
gMenu.column_idx = 5;
- WriteBit(gSave.fusedKinstones, gFuseInfo.kinstoneId);
- if (++gSave.fusedKinstoneCount > 99) {
- gSave.didAllFusions = 1;
+ WriteBit(gSave.kinstones.fusedKinstones, gFuseInfo.kinstoneId);
+ if (++gSave.kinstones.fusedCount > 99) {
+ gSave.kinstones.didAllFusions = 1;
}
KinstoneMenu_080A4468();
SoundReq(SFX_TASK_COMPLETE);
@@ -462,7 +462,7 @@ void KinstoneMenu_080A414C(void) {
OamCmd->x = ((ptr[((uVar1 & tmp1) + 0x40) & tmp1] * 0x42) / 0x100) - 0x10;
iVar2 = gKinstoneMenu.unk10.WORD / 0x10000 + i;
if (iVar2 >= 0) {
- uVar3 = gSave.kinstoneAmounts[iVar2];
+ uVar3 = gSave.kinstones.amounts[iVar2];
if (i == 0) {
switch (gMenu.column_idx) {
case 3:
@@ -474,7 +474,7 @@ void KinstoneMenu_080A414C(void) {
}
}
if (uVar3 > 0) {
- sub_080A42E0(gSave.kinstoneTypes[iVar2], uVar3);
+ sub_080A42E0(gSave.kinstones.types[iVar2], uVar3);
}
}
uVar1 += 0x17;
diff --git a/src/menu/pauseMenu.c b/src/menu/pauseMenu.c
index 3963cb7b..2ea79113 100644
--- a/src/menu/pauseMenu.c
+++ b/src/menu/pauseMenu.c
@@ -666,7 +666,7 @@ void sub_080A5594(void) {
iVar5 = 0;
if (GetInventoryValue(ITEM_KINSTONE_BAG) != 0) {
for (i = 0; i < 0x13; i++) {
- iVar5 += gSave.kinstoneAmounts[i];
+ iVar5 += gSave.kinstones.amounts[i];
}
if (iVar5 >= 0x50) {
@@ -1305,11 +1305,11 @@ void sub_080A6044(void) {
gOamCmd._6 = 0;
uVar4 = 0;
uVar2 = 0;
- uVar1 = gSave.kinstoneTypes[0];
+ uVar1 = gSave.kinstones.types[0];
while (uVar1 != 0) {
gOamCmd.x = (uVar4 & 3) * 0x30 + 0x2b;
gOamCmd.y = (uVar4 >> 2) * 0x24 + 0x34;
- uVar3 = gSave.kinstoneAmounts[uVar2];
+ uVar3 = gSave.kinstones.amounts[uVar2];
gMenu.column_idx = 0;
sub_080A42E0(uVar1, uVar3);
uVar4++;
@@ -1320,7 +1320,7 @@ void sub_080A6044(void) {
if (0x11 < uVar2) {
return;
}
- uVar1 = gSave.kinstoneTypes[uVar2];
+ uVar1 = gSave.kinstones.types[uVar2];
}
}
}
diff --git a/src/npc/cucco.c b/src/npc/cucco.c
index db9b01dd..f936bc1e 100644
--- a/src/npc/cucco.c
+++ b/src/npc/cucco.c
@@ -126,7 +126,7 @@ void sub_0806E65C(Entity* this) {
void Cucco_ShowMessage(Entity* this) {
u32 val = 0;
u32 index = GetFuserId(this);
- if (gSave.fuserOffers[index] == KINSTONE_FUSER_DONE) {
+ if (gSave.kinstones.fuserOffers[index] == KINSTONE_FUSER_DONE) {
val = 1;
}
diff --git a/src/npc/din.c b/src/npc/din.c
index 5ac3114f..cfbef459 100644
--- a/src/npc/din.c
+++ b/src/npc/din.c
@@ -44,7 +44,7 @@ void Din(DinEntity* this) {
void Din_MakeInteractable(Entity* this) {
u32 kinstoneId = GetFusionToOffer(this);
- if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
+ if ((gSave.kinstones.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
kinstoneId = KINSTONE_NONE;
}
AddInteractableWhenBigFuser(this, kinstoneId);
diff --git a/src/npc/farore.c b/src/npc/farore.c
index 7c604803..9624b3bc 100644
--- a/src/npc/farore.c
+++ b/src/npc/farore.c
@@ -44,7 +44,7 @@ void Farore(FaroreEntity* this) {
void Farore_MakeInteractable(Entity* this) {
u32 kinstoneId = GetFusionToOffer(this);
- if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
+ if ((gSave.kinstones.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
kinstoneId = KINSTONE_NONE;
}
AddInteractableWhenBigFuser(this, kinstoneId);
diff --git a/src/npc/nayru.c b/src/npc/nayru.c
index 566c3bb2..4b8bd979 100644
--- a/src/npc/nayru.c
+++ b/src/npc/nayru.c
@@ -44,7 +44,7 @@ void Nayru(NayruEntity* this) {
void Nayru_MakeInteractable(Entity* this) {
u32 kinstoneId = GetFusionToOffer(this);
- if ((gSave.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
+ if ((gSave.kinstones.fuserProgress[GetFuserId(this)] != 0) && (gSave.global_progress < 7)) {
kinstoneId = KINSTONE_NONE;
}
AddInteractableWhenBigFuser(this, kinstoneId);
diff --git a/src/npc/tingleSiblings.c b/src/npc/tingleSiblings.c
index bc9ac0d5..cd113f45 100644
--- a/src/npc/tingleSiblings.c
+++ b/src/npc/tingleSiblings.c
@@ -146,7 +146,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) {
context->condition = 0;
roomFlag = gUnk_0810FC50[this->type];
if (CheckRoomFlag(roomFlag) == 0) {
- bVar2 = gSave.fuserProgress[GetFuserId(this)];
+ bVar2 = gSave.kinstones.fuserProgress[GetFuserId(this)];
if (bVar2 >= 2) {
uVar5 = 3;
} else {
@@ -163,7 +163,7 @@ void sub_08064F28(Entity* this, ScriptExecutionContext* context) {
remainingFusions = -1;
} else {
if (CheckGlobalFlag(KAKERA_COMPLETE) == 0) {
- remainingFusions = 100 - gSave.fusedKinstoneCount;
+ remainingFusions = 100 - gSave.kinstones.fusedCount;
if (remainingFusions < 1) {
uVar5 = 8;
remainingFusions = 0;
diff --git a/src/npcUtils.c b/src/npcUtils.c
index 4804a647..b0c111fe 100644
--- a/src/npcUtils.c
+++ b/src/npcUtils.c
@@ -356,7 +356,7 @@ u32 UpdateFuseInteraction(Entity* entity) {
void MarkFuserDone(Entity* entity) {
u32 fuserId = GetFuserId(entity);
if (fuserId != 0)
- gSave.fuserOffers[fuserId] = KINSTONE_FUSER_DONE;
+ gSave.kinstones.fuserOffers[fuserId] = KINSTONE_FUSER_DONE;
}
void ShowNPCDialogue(Entity* ent, const Dialog* dia) {
diff --git a/src/object/cuccoMinigame.c b/src/object/cuccoMinigame.c
index b0433c4d..75b9dc59 100644
--- a/src/object/cuccoMinigame.c
+++ b/src/object/cuccoMinigame.c
@@ -214,7 +214,7 @@ void CuccoMinigame_WinItem(CuccoMinigameEntity* this) {
}
break;
case ITEM_KINSTONE:
- if (gSave.didAllFusions) {
+ if (gSave.kinstones.didAllFusions) {
skipItem = 1;
}
break;
diff --git a/src/object/object37.c b/src/object/object37.c
index 800f0fa0..619f8482 100644
--- a/src/object/object37.c
+++ b/src/object/object37.c
@@ -44,14 +44,14 @@ void Object37_Init(Object37Entity* this) {
void Object37_Action1(Object37Entity* this) {
Entity* item;
- if ((gSave.fusionUnmarked[0] != 0) && (this->unk70 != *this->unk78)) {
+ if ((gSave.kinstones.fusionUnmarked[0] != 0) && (this->unk70 != *this->unk78)) {
item = CreateGroundItem(super, ITEM_RUPEE100, 0);
if (item != 0) {
item->direction = gPlayerEntity.animationState << 2;
item->speed = 0x80;
item->zVelocity = Q_16_16(2.0);
}
- gSave.fusionUnmarked[0] = 1;
+ gSave.kinstones.fusionUnmarked[0] = 1;
DeleteThisEntity();
}
}
diff --git a/src/playerUtils.c b/src/playerUtils.c
index 1afef3e1..2391d1e4 100644
--- a/src/playerUtils.c
+++ b/src/playerUtils.c
@@ -1113,7 +1113,7 @@ bool32 sub_080782C0(void) {
if (((gPlayerState.playerInput.newInput & PLAYER_INPUT_1000) != 0) &&
((u8)(gPossibleInteraction.currentObject->kinstoneId - 1) < 100)) {
AddKinstoneToBag(KINSTONE_NONE);
- if (gSave.kinstoneAmounts[0] != 0) {
+ if (gSave.kinstones.amounts[0] != 0) {
gPossibleInteraction.kinstoneId = gPossibleInteraction.currentObject->kinstoneId;
gPossibleInteraction.currentObject->entity->interactType = INTERACTION_FUSE;
gPlayerState.queued_action = PLAYER_08070E9C;