summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-12-20 14:52:50 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-12-20 14:52:50 -0500
commit0f60c1239c9ebf32f47ba52468738107519d758f (patch)
tree2c3b4bc97b14b9251e88b158b95d856e3c25c5fb /src
parent2f44988d40ec0eaec1abd4f9ac07dcf5edb0cc26 (diff)
parent9f604fe56c83a904c3c2eeeede3d8b73cb6f94a1 (diff)
Merge branch 'master' of github.com:pret/pokefirered into leafgreen
Diffstat (limited to 'src')
-rw-r--r--src/quest_log.c75
-rw-r--r--src/trade.c159
-rw-r--r--src/trainer_tower.c89
3 files changed, 85 insertions, 238 deletions
diff --git a/src/quest_log.c b/src/quest_log.c
index 6b25150f3..970071a0f 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -179,9 +179,9 @@ static void sub_8113A1C(u16);
static void sub_811381C(void);
static bool8 sub_8113A44(u16, const u16 *);
static u16 *QuestLog_SkipCommand(u16 *, u16 **);
-static void sub_8113ABC(u16 *);
-static bool8 sub_8113AE8(u16 *);
-static bool8 sub_8113B44(u16 *);
+static void sub_8113ABC(const u16 *);
+static bool8 sub_8113AE8(const u16 *);
+static bool8 sub_8113B44(const u16 *);
static void sub_8113B88(void);
static void sub_8113B94(u16);
static void sub_8113BD8(void);
@@ -2831,19 +2831,24 @@ static u16 *QuestLog_SkipCommand(u16 *curPtr, u16 **prevPtr_p)
return sQuestLogEventCmdSizes[idx] + (sQuestLogEventCmdSizes[idx] - 4) * cnt + (void *)curPtr;
}
-static void sub_8113ABC(u16 *a0)
+static void sub_8113ABC(const u16 *a0)
{
- u8 *r2 = (u8 *)(a0 + 2);
+ const u8 *r2 = (const u8 *)(a0 + 2);
if ((a0[0] & 0xFFF) != 35)
gUnknown_203B04A = 0;
else
gUnknown_203B04A = r2[1] + 1;
}
-#ifdef NONMATCHING
-static bool8 sub_8113AE8(u16 *a0)
+static bool8 sub_8113AE8(const u16 *a0)
{
- if (a0 == NULL || a0[1] > sQuestLogIdx)
+#ifndef NONMATCHING
+ register const u16 *r0 asm("r0") = a0;
+#else
+ const u16 *r0 = a0;
+#endif
+
+ if (r0 == NULL || r0[1] > sQuestLogIdx)
return FALSE;
sQuestLogScriptParsingCBs[a0[0] & 0xFFF](a0);
@@ -2853,60 +2858,8 @@ static bool8 sub_8113AE8(u16 *a0)
gUnknown_203B044.unk_2 = 1;
return TRUE;
}
-#else
-NAKED
-static bool8 sub_8113AE8(u16 *a0)
-{
- asm_unified("\tpush {r4,lr}\n"
- "\tadds r4, r0, 0\n"
- "\tcmp r0, 0\n"
- "\tbeq _08113AFA\n"
- "\tldr r1, _08113B00 @ =sQuestLogIdx\n"
- "\tldrh r0, [r0, 0x2]\n"
- "\tldrh r1, [r1]\n"
- "\tcmp r0, r1\n"
- "\tbls _08113B04\n"
- "_08113AFA:\n"
- "\tmovs r0, 0\n"
- "\tb _08113B32\n"
- "\t.align 2, 0\n"
- "_08113B00: .4byte sQuestLogIdx\n"
- "_08113B04:\n"
- "\tldr r2, _08113B38 @ =sQuestLogScriptParsingCBs\n"
- "\tldrh r1, [r4]\n"
- "\tldr r0, _08113B3C @ =0x00000fff\n"
- "\tands r0, r1\n"
- "\tlsls r0, 2\n"
- "\tadds r0, r2\n"
- "\tldr r1, [r0]\n"
- "\tadds r0, r4, 0\n"
- "\tbl _call_via_r1\n"
- "\tldr r2, _08113B40 @ =gUnknown_203B044\n"
- "\tldrh r1, [r4]\n"
- "\tstrb r1, [r2]\n"
- "\tmovs r0, 0xF0\n"
- "\tlsls r0, 8\n"
- "\tands r0, r1\n"
- "\tlsrs r0, 12\n"
- "\tstrb r0, [r2, 0x1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _08113B30\n"
- "\tmovs r0, 0x1\n"
- "\tstrh r0, [r2, 0x2]\n"
- "_08113B30:\n"
- "\tmovs r0, 0x1\n"
- "_08113B32:\n"
- "\tpop {r4}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_08113B38: .4byte sQuestLogScriptParsingCBs\n"
- "_08113B3C: .4byte 0x00000fff\n"
- "_08113B40: .4byte gUnknown_203B044");
-}
-#endif
-static bool8 sub_8113B44(u16 *a0)
+static bool8 sub_8113B44(const u16 *a0)
{
if (gUnknown_203B044.unk_2 == 0)
return FALSE;
diff --git a/src/trade.c b/src/trade.c
index 42ff22978..2f48928ec 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -365,41 +365,58 @@ static const u8 sTradeMonSpriteCoords[][2] = {
{0x17, 0x12},
};
-// No idea if a 4D array is correct
-static const u8 gUnknown_8261E5A[][2][6][2] = {
- {
- {
- {0x05, 0x04},
- {0x0c, 0x04},
- {0x05, 0x09},
- {0x0c, 0x09},
- {0x05, 0x0e},
- {0x0c, 0x0e}
- }, {
- {0x14, 0x04},
- {0x1b, 0x04},
- {0x14, 0x09},
- {0x1b, 0x09},
- {0x14, 0x0e},
- {0x1b, 0x0e}
- }
- }, {
- {
- {0x01, 0x03},
- {0x08, 0x03},
- {0x01, 0x08},
- {0x08, 0x08},
- {0x01, 0x0d},
- {0x08, 0x0d}
- }, {
- {0x10, 0x03},
- {0x17, 0x03},
- {0x10, 0x08},
- {0x17, 0x08},
- {0x10, 0x0d},
- {0x17, 0x0d}
- }
- }
+static const u8 gUnknown_8261E5A[][2][2] = {
+ {
+ {0x05, 0x04},
+ {0x0c, 0x04},
+ },
+ {
+ {0x05, 0x09},
+ {0x0c, 0x09},
+ },
+ {
+ {0x05, 0x0e},
+ {0x0c, 0x0e}
+ },
+ {
+ {0x14, 0x04},
+ {0x1b, 0x04},
+ },
+ {
+ {0x14, 0x09},
+ {0x1b, 0x09},
+ },
+ {
+ {0x14, 0x0e},
+ {0x1b, 0x0e},
+ },
+};
+
+static const u8 gUnknown_8261E72[][2][2] = {
+ {
+ {0x01, 0x03},
+ {0x08, 0x03},
+ },
+ {
+ {0x01, 0x08},
+ {0x08, 0x08},
+ },
+ {
+ {0x01, 0x0d},
+ {0x08, 0x0d}
+ },
+ {
+ {0x10, 0x03},
+ {0x17, 0x03},
+ },
+ {
+ {0x10, 0x08},
+ {0x17, 0x08},
+ },
+ {
+ {0x10, 0x0d},
+ {0x17, 0x0d},
+ },
};
static const u8 sTradeUnknownSpriteCoords[][4] = {
@@ -2328,78 +2345,28 @@ static void sub_804F08C(u8 whichParty, u8 monIdx, u8 a2, u8 a3, u8 a4, u8 a5)
sTradeMenuResourcesPtr->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2;
}
-#ifdef NONMATCHING
-// Instruction swap when setting r5 and r4
static void sub_804F284(u8 whichParty)
{
s32 i;
for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++)
{
+ const u8 (*r5)[2];
+ const u8 (*r4)[2];
+ u32 r0 = 3 * whichParty;
+ const u8 (*r1)[2][2] = gUnknown_8261E5A;
+ r5 = r1[r0];
+ r4 = gUnknown_8261E72[r0];
+
sub_804F08C(
whichParty,
i,
- gUnknown_8261E5A[0][whichParty][i][0],
- gUnknown_8261E5A[0][whichParty][i][1],
- gUnknown_8261E5A[1][whichParty][i][0],
- gUnknown_8261E5A[1][whichParty][i][1]
+ r5[i][0],
+ r5[i][1],
+ r4[i][0],
+ r4[i][1]
);
}
}
-#else
-NAKED
-static void sub_804F284(u8 whichParty)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tsub sp, 0x8\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tmovs r7, 0\n"
- "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n"
- "\tldr r0, [r0]\n"
- "\tadds r0, 0x36\n"
- "\tadds r0, r6\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r7, r0\n"
- "\tbge _0804F2D4\n"
- "\tlsls r0, r6, 1\n"
- "\tadds r0, r6\n"
- "\tldr r1, _0804F2E0 @ =gUnknown_8261E5A\n"
- "\tlsls r0, 2\n"
- "\tadds r5, r0, r1\n"
- "\tldr r1, _0804F2E4 @ =gUnknown_8261E5A+24\n"
- "\tadds r4, r0, r1\n"
- "_0804F2AA:\n"
- "\tlsls r1, r7, 24\n"
- "\tlsrs r1, 24\n"
- "\tldrb r2, [r5]\n"
- "\tldrb r3, [r5, 0x1]\n"
- "\tldrb r0, [r4]\n"
- "\tstr r0, [sp]\n"
- "\tldrb r0, [r4, 0x1]\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tadds r0, r6, 0\n"
- "\tbl sub_804F08C\n"
- "\tadds r5, 0x2\n"
- "\tadds r4, 0x2\n"
- "\tadds r7, 0x1\n"
- "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n"
- "\tldr r0, [r0]\n"
- "\tadds r0, 0x36\n"
- "\tadds r0, r6\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r7, r0\n"
- "\tblt _0804F2AA\n"
- "_0804F2D4:\n"
- "\tadd sp, 0x8\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_0804F2DC: .4byte sTradeMenuResourcesPtr\n"
- "_0804F2E0: .4byte gUnknown_8261E5A\n"
- "_0804F2E4: .4byte gUnknown_8261E5A+24");
-}
-#endif //NONMATCHING
static void sub_804F2E8(u8 whichParty)
{
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index aba6fe7c1..5d1b3fc62 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -513,7 +513,6 @@ void sub_815DC40(u8 *dest, u8 opponentIdx)
TT_ConvertEasyChatMessageToString(sTrainerTowerOpponent->speechLose2, dest);
}
-#ifdef NONMATCHING
static void sub_815DC8C(void) // fakematching
{
u32 whichTimer = gSaveBlock1Ptr->unkArrayIdx;
@@ -528,97 +527,25 @@ static void sub_815DC8C(void) // fakematching
{
struct UnkStruct_203F458 * r0_ = sTrainerTowerState;
const struct EReaderTrainerHillSetSubstruct * r1 = &gUnknown_84827AC;
-// *r0_ = *r1;
memcpy(&r0_->unk_0004, r1, sizeof(struct EReaderTrainerHillSetSubstruct));
-// sTrainerTowerState->unk_0004.floorIdx = gUnknown_84827AC;
r7 = gUnknown_84827B4[whichTimer];
for (r4 = 0; r4 < 8; r4++)
{
- void * r0 = sTrainerTowerState;
- r0 = r4 * sizeof(struct TrainerTowerFloor) + r0;
+ #ifndef NONMATCHING
+ void * r5;
+ register void * r0 asm("r0") = sTrainerTowerState;
+ r5 = (void *)(r4 * sizeof(struct TrainerTowerFloor));
+ r0 = r5 + (uintptr_t)r0;
r0 += offsetof(struct UnkStruct_203F458, unk_0004.floors);
memcpy(r0, r7[r4], sizeof(struct TrainerTowerFloor));
-// r0[r4] = *r7[r4];
+ #else
+ memcpy(&sTrainerTowerState->unk_0004.floors[r4], r7[r4], sizeof(struct TrainerTowerFloor));
+ #endif
}
sTrainerTowerState->unk_0004.checksum = CalcByteArraySum((void *)sTrainerTowerState->unk_0004.floors, sizeof(sTrainerTowerState->unk_0004.floors));
ValidateOrResetCurTrainerTowerRecord();
}
}
-#else
-NAKED
-static void sub_815DC8C(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tldr r0, _0815DCBC @ =gSaveBlock1Ptr\n"
- "\tldr r0, [r0]\n"
- "\tldr r1, _0815DCC0 @ =0x00003d34\n"
- "\tadds r0, r1\n"
- "\tldr r5, [r0]\n"
- "\tldr r4, _0815DCC4 @ =sTrainerTowerState\n"
- "\tldr r0, _0815DCC8 @ =0x00001f0c\n"
- "\tbl AllocZeroed\n"
- "\tstr r0, [r4]\n"
- "\tldr r1, _0815DCCC @ =gMapHeader\n"
- "\tldrb r1, [r1, 0x12]\n"
- "\tsubs r1, 0x2A\n"
- "\tstrb r1, [r0]\n"
- "\tbl sub_815D834\n"
- "\tcmp r0, 0x1\n"
- "\tbne _0815DCD0\n"
- "\tldr r0, [r4]\n"
- "\tadds r0, 0x4\n"
- "\tbl CEReaderTool_LoadTrainerTower\n"
- "\tb _0815DD18\n"
- "\t.align 2, 0\n"
- "_0815DCBC: .4byte gSaveBlock1Ptr\n"
- "_0815DCC0: .4byte 0x00003d34\n"
- "_0815DCC4: .4byte sTrainerTowerState\n"
- "_0815DCC8: .4byte 0x00001f0c\n"
- "_0815DCCC: .4byte gMapHeader\n"
- "_0815DCD0:\n"
- "\tldr r0, [r4]\n"
- "\tldr r1, _0815DD20 @ =gUnknown_84827AC\n"
- "\tadds r0, 0x4\n"
- "\tmovs r2, 0x8\n"
- "\tbl memcpy\n"
- "\tlsls r1, r5, 5\n"
- "\tldr r0, _0815DD24 @ =gUnknown_84827B4\n"
- "\tadds r7, r1, r0\n"
- "\tmovs r5, 0\n"
- "\tmovs r4, 0x7\n"
- "_0815DCE6:\n"
- "\tldr r6, _0815DD28 @ =sTrainerTowerState\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5, r0\n"
- "\tadds r0, 0xC\n"
- "\tldm r7!, {r1}\n"
- "\tmovs r2, 0xF8\n"
- "\tlsls r2, 2\n"
- "\tbl memcpy\n"
- "\tmovs r0, 0xF8\n"
- "\tlsls r0, 2\n"
- "\tadds r5, r0\n"
- "\tsubs r4, 0x1\n"
- "\tcmp r4, 0\n"
- "\tbge _0815DCE6\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, 0xC\n"
- "\tmovs r1, 0xF8\n"
- "\tlsls r1, 5\n"
- "\tbl CalcByteArraySum\n"
- "\tldr r1, [r6]\n"
- "\tstr r0, [r1, 0x8]\n"
- "\tbl ValidateOrResetCurTrainerTowerRecord\n"
- "_0815DD18:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_0815DD20: .4byte gUnknown_84827AC\n"
- "_0815DD24: .4byte gUnknown_84827B4\n"
- "_0815DD28: .4byte sTrainerTowerState");
-}
-#endif // NONMATCHING
static void sub_815DD2C(void)
{