diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-12-20 14:52:50 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-12-20 14:52:50 -0500 |
commit | 0f60c1239c9ebf32f47ba52468738107519d758f (patch) | |
tree | 2c3b4bc97b14b9251e88b158b95d856e3c25c5fb /src | |
parent | 2f44988d40ec0eaec1abd4f9ac07dcf5edb0cc26 (diff) | |
parent | 9f604fe56c83a904c3c2eeeede3d8b73cb6f94a1 (diff) |
Merge branch 'master' of github.com:pret/pokefirered into leafgreen
Diffstat (limited to 'src')
-rw-r--r-- | src/quest_log.c | 75 | ||||
-rw-r--r-- | src/trade.c | 159 | ||||
-rw-r--r-- | src/trainer_tower.c | 89 |
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) { |