summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPokeCodec <67983839+PokeCodec@users.noreply.github.com>2020-09-02 14:14:29 -0400
committerPokeCodec <67983839+PokeCodec@users.noreply.github.com>2020-09-04 19:49:53 -0400
commitd4158e490a221e8d94747c8fffae84649bb3cae9 (patch)
treed791e1ccf07c144ff0115fecc3b6643a3d778ff4 /src
parent24b607b9daf7053cb45a305ce1138d9b64a459b2 (diff)
Match more functions
Diffstat (limited to 'src')
-rw-r--r--src/battle_bg.c2
-rw-r--r--src/battle_dome.c277
-rw-r--r--src/battle_gfx_sfx_util.c2
-rw-r--r--src/battle_tv.c347
-rw-r--r--src/contest.c8
-rw-r--r--src/contest_util.c367
-rw-r--r--src/frontier_util.c245
-rw-r--r--src/intro_credits_graphics.c4
-rw-r--r--src/pokedex.c22
-rw-r--r--src/pokenav_main_menu.c171
-rw-r--r--src/walda_phrase.c4
11 files changed, 133 insertions, 1316 deletions
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 7c9b05b25..6a0e4c10c 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -1126,7 +1126,7 @@ void DrawBattleEntryBackground(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
LZDecompressVram(gUnknown_08D778F0, (void*)(BG_CHAR_ADDR(1)));
- LZDecompressVram(gVsLettersGfx, (void*)(VRAM + 0x10000));
+ LZDecompressVram(gVsLettersGfx, (void*)(OBJ_VRAM0));
LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 452997ebd..7b0311661 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -2731,9 +2731,6 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom)
#define TYPE_x2 40
#define TYPE_x4 80
-// Functionally equivalent, while loop is impossible to match.
-// arg2 is either 2, a personality, or an OTID
-#ifdef NONMATCHING
static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
{
int defType1, defType2, defAbility, moveType;
@@ -2762,13 +2759,15 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
i += 3;
continue;
}
- else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
+ if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
- // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard.
- if (TYPE_EFFECT_DEF_TYPE(i) == defType1 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2))
- typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
- if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2))
- typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ // BUG: TYPE_x2 is not necessary and makes the condition always false if the ability is wonder guard.
+ if (TYPE_EFFECT_DEF_TYPE(i) == defType1)
+ if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD)
+ typePower = typePower * TYPE_EFFECT_MULTIPLIER(i) / 10;
+ if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2)
+ if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD)
+ typePower = typePower * TYPE_EFFECT_MULTIPLIER(i) / 10;
}
i += 3;
}
@@ -2779,10 +2778,10 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
case 0:
switch (typePower)
{
- case TYPE_x0_50:
- case TYPE_x0_25:
- case TYPE_x0:
default:
+ case TYPE_x0:
+ case TYPE_x0_25:
+ case TYPE_x0_50:
typePower = 0;
break;
case TYPE_x1:
@@ -2799,19 +2798,19 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
case 1:
switch (typePower)
{
- default:
- case TYPE_x1:
- typePower = 0;
+ case TYPE_x0:
+ typePower = 8;
break;
case TYPE_x0_25:
typePower = 4;
break;
- case TYPE_x0:
- typePower = 8;
- break;
case TYPE_x0_50:
typePower = 2;
break;
+ default:
+ case TYPE_x1:
+ typePower = 0;
+ break;
case TYPE_x2:
typePower = -2;
break;
@@ -2829,8 +2828,8 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
case TYPE_x0_25:
typePower = -8;
break;
- case TYPE_x0_50:
default:
+ case TYPE_x0_50:
typePower = 0;
break;
case TYPE_x1:
@@ -2848,246 +2847,6 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
return typePower;
}
-#else
-NAKED
-static int GetTypeEffectivenessPoints(int move, int species, int arg2)
-{
- asm_unified(
- "push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- adds r3, r0, 0\n\
- adds r4, r1, 0\n\
- str r2, [sp]\n\
- movs r6, 0\n\
- movs r2, 0x14\n\
- cmp r3, 0\n\
- beq _0818FFF0\n\
- ldr r0, =0x0000ffff\n\
- cmp r3, r0\n\
- beq _0818FFF0\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3, 0x1]\n\
- cmp r0, 0\n\
- bne _0818FFFC\n\
-_0818FFF0:\n\
- movs r0, 0\n\
- b _08190156\n\
- .pool\n\
-_0818FFFC:\n\
- ldr r1, =gBaseStats\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x6]\n\
- mov r10, r1\n\
- ldrb r1, [r0, 0x7]\n\
- mov r9, r1\n\
- ldrb r0, [r0, 0x16]\n\
- mov r8, r0\n\
- ldrb r3, [r3, 0x2]\n\
- str r3, [sp, 0x4]\n\
- cmp r0, 0x1A\n\
- bne _0819002C\n\
- cmp r3, 0x4\n\
- bne _0819002C\n\
- ldr r0, [sp]\n\
- cmp r0, 0x1\n\
- bne _081900AA\n\
- movs r2, 0x8\n\
- b _081900A4\n\
- .pool\n\
-_0819002C:\n\
- ldr r0, =gTypeEffectiveness\n\
- adds r1, r6, r0\n\
- ldrb r0, [r1]\n\
- ldr r7, =gTypeEffectiveness\n\
- cmp r0, 0xFF\n\
- beq _081900A4\n\
- adds r4, r1, 0\n\
-_0819003A:\n\
- ldrb r0, [r4]\n\
- cmp r0, 0xFE\n\
- beq _08190096\n\
- ldrb r0, [r4]\n\
- ldr r1, [sp, 0x4]\n\
- cmp r0, r1\n\
- bne _08190096\n\
- ldrb r0, [r4, 0x1]\n\
- adds r5, r6, 0x1\n\
- cmp r0, r10\n\
- bne _0819006C\n\
- adds r1, r6, 0x2\n\
- mov r0, r8\n\
- cmp r0, 0x19\n\
- bne _0819005E\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r0, 0x28\n\
- bne _0819006C\n\
-_0819005E:\n\
- adds r0, r1, r7\n\
- ldrb r0, [r0]\n\
- muls r0, r2\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r2, r0, 0\n\
-_0819006C:\n\
- adds r0, r5, r7\n\
- ldrb r0, [r0]\n\
- cmp r0, r9\n\
- bne _08190096\n\
- cmp r10, r9\n\
- beq _08190096\n\
- adds r1, r6, 0x2\n\
- mov r0, r8\n\
- cmp r0, 0x19\n\
- bne _08190088\n\
- adds r0, r1, r7\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x28\n\
- bne _08190096\n\
-_08190088:\n\
- adds r0, r1, r7\n\
- ldrb r0, [r0]\n\
- muls r0, r2\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r2, r0, 0\n\
-_08190096:\n\
- adds r4, 0x3\n\
- adds r6, 0x3\n\
- ldr r1, =gTypeEffectiveness\n\
- adds r0, r6, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xFF\n\
- bne _0819003A\n\
-_081900A4:\n\
- ldr r0, [sp]\n\
- cmp r0, 0x1\n\
- beq _081900E0\n\
-_081900AA:\n\
- ldr r1, [sp]\n\
- cmp r1, 0x1\n\
- bgt _081900BC\n\
- cmp r1, 0\n\
- beq _081900C4\n\
- b _08190154\n\
- .pool\n\
-_081900BC:\n\
- ldr r0, [sp]\n\
- cmp r0, 0x2\n\
- beq _08190114\n\
- b _08190154\n\
-_081900C4:\n\
- cmp r2, 0xA\n\
- beq _08190146\n\
- cmp r2, 0xA\n\
- ble _08190146\n\
- cmp r2, 0x28\n\
- beq _0819014A\n\
- cmp r2, 0x28\n\
- bgt _081900DA\n\
- cmp r2, 0x14\n\
- beq _08190104\n\
- b _08190146\n\
-_081900DA:\n\
- cmp r2, 0x50\n\
- bne _08190146\n\
- b _08190100\n\
-_081900E0:\n\
- cmp r2, 0xA\n\
- beq _08190104\n\
- cmp r2, 0xA\n\
- bgt _081900F2\n\
- cmp r2, 0\n\
- beq _08190100\n\
- cmp r2, 0x5\n\
- beq _0819014A\n\
- b _08190146\n\
-_081900F2:\n\
- cmp r2, 0x28\n\
- beq _08190108\n\
- cmp r2, 0x28\n\
- ble _08190146\n\
- cmp r2, 0x50\n\
- beq _0819010E\n\
- b _08190146\n\
-_08190100:\n\
- movs r2, 0x8\n\
- b _08190154\n\
-_08190104:\n\
- movs r2, 0x2\n\
- b _08190154\n\
-_08190108:\n\
- movs r2, 0x2\n\
- negs r2, r2\n\
- b _08190154\n\
-_0819010E:\n\
- movs r2, 0x4\n\
- negs r2, r2\n\
- b _08190154\n\
-_08190114:\n\
- cmp r2, 0xA\n\
- beq _08190146\n\
- cmp r2, 0xA\n\
- bgt _08190126\n\
- cmp r2, 0\n\
- beq _0819013A\n\
- cmp r2, 0x5\n\
- beq _08190140\n\
- b _08190146\n\
-_08190126:\n\
- cmp r2, 0x28\n\
- beq _0819014E\n\
- cmp r2, 0x28\n\
- bgt _08190134\n\
- cmp r2, 0x14\n\
- beq _0819014A\n\
- b _08190146\n\
-_08190134:\n\
- cmp r2, 0x50\n\
- beq _08190152\n\
- b _08190146\n\
-_0819013A:\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- b _08190154\n\
-_08190140:\n\
- movs r2, 0x8\n\
- negs r2, r2\n\
- b _08190154\n\
-_08190146:\n\
- movs r2, 0\n\
- b _08190154\n\
-_0819014A:\n\
- movs r2, 0x4\n\
- b _08190154\n\
-_0819014E:\n\
- movs r2, 0xC\n\
- b _08190154\n\
-_08190152:\n\
- movs r2, 0x14\n\
-_08190154:\n\
- adds r0, r2, 0\n\
-_08190156:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1");
-}
-#endif // NONMATCHING
// Duplicate of GetFrontierTrainerFixedIvs
// NOTE: In CreateDomeOpponentMon a tournament trainer ID (0-15) is passed instead, resulting in all IVs of 3
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index b1bb61aaf..e3e63f0e8 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -957,7 +957,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
}
src = gMonSpritesGfxPtr->sprites[position];
- dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
+ dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + battlerAtk * 16;
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
diff --git a/src/battle_tv.c b/src/battle_tv.c
index c84ae827b..e3dec9a6c 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -713,20 +713,18 @@ void BattleTv_SetDataBasedOnAnimation(u8 animationId)
}
}
-#ifdef NONMATCHING
-// for loop has an unused stack variable
void TryPutLinkBattleTvShowOnAir(void)
{
- u16 playerBestSpecies = 0, opponentBestSpecies = 0;
- s16 playerBestSum = 0, opponentBestSum = SHRT_MAX;
+ u16 playerBestSpecies = 0, opponentBestSpecies = 0, moveId = 0;
+ s16 sum = 0, playerBestSum = 0, opponentBestSum = SHRT_MAX;
u8 playerBestMonId = 0, opponentBestMonId = 0;
struct BattleTvMovePoints *movePoints = NULL;
u8 countPlayer = 0, countOpponent = 0;
- s16 sum = 0;
- u16 species = 0;
- u16 moveId = 0;
+ u16 species;
s32 i, j;
+ int zero = 0, one = 1; // stupid variables needed to match. Feel free to get rid of them.
+
if (gBattleStruct->anyMonHasTransformed)
return;
@@ -748,7 +746,7 @@ void TryPutLinkBattleTvShowOnAir(void)
if (species != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG, NULL))
{
for (sum = 0, j = 0; j < MAX_MON_MOVES; j++)
- sum += movePoints->points[0][i * 4 + j];
+ sum += movePoints->points[zero][i * 4 + j];
if (playerBestSum < sum)
{
@@ -762,7 +760,7 @@ void TryPutLinkBattleTvShowOnAir(void)
if (species != SPECIES_NONE && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG, NULL))
{
for (sum = 0, j = 0; j < MAX_MON_MOVES; j++)
- sum += movePoints->points[1][i * 4 + j];
+ sum += movePoints->points[one][i * 4 + j];
if (opponentBestSum == sum)
{
@@ -784,9 +782,9 @@ void TryPutLinkBattleTvShowOnAir(void)
for (sum = 0, i = 0, j = 0; j < MAX_MON_MOVES; j++)
{
- if (sum < movePoints->points[0][playerBestMonId * 4 + j])
+ if (sum < movePoints->points[zero][playerBestMonId * 4 + j])
{
- sum = movePoints->points[0][playerBestMonId * 4 + j];
+ sum = movePoints->points[zero][playerBestMonId * 4 + j];
i = j;
}
}
@@ -810,333 +808,6 @@ void TryPutLinkBattleTvShowOnAir(void)
}
}
-#else
-NAKED
-void TryPutLinkBattleTvShowOnAir(void)
-{
- asm_unified(
- "push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r1, 0\n\
- str r1, [sp, 0x4]\n\
- movs r2, 0\n\
- str r2, [sp, 0x8]\n\
- ldr r3, =0x00007fff\n\
- str r3, [sp, 0xC]\n\
- movs r4, 0\n\
- str r4, [sp, 0x10]\n\
- movs r7, 0\n\
- str r7, [sp, 0x14]\n\
- mov r8, r0\n\
- ldr r0, =gBattleStruct\n\
- ldr r1, [r0]\n\
- adds r0, r1, 0\n\
- adds r0, 0xB3\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _0817E42A\n\
- b _0817E670\n\
-_0817E42A:\n\
- movs r2, 0xD2\n\
- lsls r2, 1\n\
- adds r2, r1\n\
- mov r10, r2\n\
- movs r6, 0\n\
-_0817E434:\n\
- movs r0, 0x64\n\
- adds r4, r6, 0\n\
- muls r4, r0\n\
- ldr r0, =gPlayerParty\n\
- adds r0, r4, r0\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0817E454\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
-_0817E454:\n\
- ldr r5, =gEnemyParty\n\
- adds r0, r4, r5\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0817E46A\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
-_0817E46A:\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0817E434\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0817E47E\n\
- b _0817E670\n\
-_0817E47E:\n\
- cmp r8, r7\n\
- beq _0817E484\n\
- b _0817E670\n\
-_0817E484:\n\
- movs r6, 0\n\
- lsls r3, r6, 1\n\
- str r3, [sp, 0x18]\n\
- movs r4, 0x64\n\
- mov r8, r4\n\
-_0817E48E:\n\
- mov r1, r8\n\
- muls r1, r6\n\
- ldr r0, =gPlayerParty\n\
- adds r4, r1, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- adds r0, r6, 0x1\n\
- mov r9, r0\n\
- cmp r7, 0\n\
- beq _0817E4EE\n\
- adds r0, r4, 0\n\
- movs r1, 0x2D\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0817E4EE\n\
- movs r4, 0\n\
- lsls r0, r6, 3\n\
- mov r2, r10\n\
- adds r1, r0, r2\n\
- movs r3, 0x3\n\
-_0817E4C4:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- ldrh r4, [r1]\n\
- adds r0, r4\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- adds r1, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _0817E4C4\n\
- ldr r1, [sp, 0x8]\n\
- lsls r0, r1, 16\n\
- lsls r1, r4, 16\n\
- cmp r0, r1\n\
- bge _0817E4EE\n\
- lsls r0, r6, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x10]\n\
- lsrs r1, 16\n\
- str r1, [sp, 0x8]\n\
- str r7, [sp]\n\
-_0817E4EE:\n\
- mov r0, r8\n\
- muls r0, r6\n\
- ldr r2, =gEnemyParty\n\
- adds r4, r0, r2\n\
- adds r0, r4, 0\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- ldr r3, [sp, 0x8]\n\
- lsls r3, 16\n\
- str r3, [sp, 0x1C]\n\
- cmp r7, 0\n\
- beq _0817E5A0\n\
- adds r0, r4, 0\n\
- movs r1, 0x2D\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0817E5A0\n\
- movs r4, 0\n\
- ldr r0, [sp, 0xC]\n\
- lsls r2, r0, 16\n\
- movs r3, 0x1\n\
- lsls r1, r3, 1\n\
- adds r1, 0x1\n\
- lsls r1, 4\n\
- lsls r0, r6, 3\n\
- adds r0, r1\n\
- mov r3, r10\n\
- adds r1, r0, r3\n\
- movs r3, 0x3\n\
-_0817E534:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- ldrh r4, [r1]\n\
- adds r0, r4\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- adds r1, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _0817E534\n\
- asrs r1, r2, 16\n\
- lsls r5, r4, 16\n\
- asrs r0, r5, 16\n\
- cmp r1, r0\n\
- bne _0817E590\n\
- mov r0, r8\n\
- muls r0, r6\n\
- ldr r1, =gEnemyParty\n\
- adds r0, r1\n\
- movs r1, 0x19\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- ldr r2, [sp, 0x14]\n\
- mov r0, r8\n\
- muls r0, r2\n\
- ldr r3, =gEnemyParty\n\
- adds r0, r3\n\
- movs r1, 0x19\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r4, r0\n\
- bls _0817E5A0\n\
- b _0817E594\n\
- .pool\n\
-_0817E590:\n\
- cmp r1, r0\n\
- ble _0817E5A0\n\
-_0817E594:\n\
- lsls r0, r6, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x14]\n\
- lsrs r5, 16\n\
- str r5, [sp, 0xC]\n\
- str r7, [sp, 0x4]\n\
-_0817E5A0:\n\
- mov r6, r9\n\
- cmp r6, 0x5\n\
- bgt _0817E5A8\n\
- b _0817E48E\n\
-_0817E5A8:\n\
- movs r4, 0\n\
- movs r6, 0\n\
- movs r3, 0\n\
- ldr r5, =gPlayerParty\n\
- ldr r7, [sp, 0x10]\n\
- lsls r0, r7, 3\n\
- mov r1, r10\n\
- adds r2, r0, r1\n\
-_0817E5B8:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- movs r7, 0\n\
- ldrsh r1, [r2, r7]\n\
- cmp r0, r1\n\
- bge _0817E5C8\n\
- ldrh r4, [r2]\n\
- adds r6, r3, 0\n\
-_0817E5C8:\n\
- adds r2, 0x2\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0817E5B8\n\
- movs r0, 0x64\n\
- ldr r1, [sp, 0x10]\n\
- muls r0, r1\n\
- adds r0, r5\n\
- adds r1, r6, 0\n\
- adds r1, 0xD\n\
- movs r2, 0\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0\n\
- beq _0817E670\n\
- cmp r4, 0\n\
- beq _0817E670\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0817E65C\n\
- ldr r3, [sp, 0x10]\n\
- cmp r3, 0x2\n\
- bhi _0817E620\n\
- ldr r0, =gBattleScripting\n\
- adds r0, 0x25\n\
- ldrb r0, [r0]\n\
- bl GetLinkTrainerFlankId\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _0817E630\n\
- b _0817E670\n\
- .pool\n\
-_0817E620:\n\
- ldr r0, =gBattleScripting\n\
- adds r0, 0x25\n\
- ldrb r0, [r0]\n\
- bl GetLinkTrainerFlankId\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _0817E670\n\
-_0817E630:\n\
- movs r3, 0\n\
- ldr r7, [sp, 0x14]\n\
- cmp r7, 0x2\n\
- bls _0817E63A\n\
- movs r3, 0x1\n\
-_0817E63A:\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- ldr r1, =gBattleScripting\n\
- adds r1, 0x25\n\
- ldrb r1, [r1]\n\
- bl sub_806EF84\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r1, r4, 0\n\
- ldr r2, [sp]\n\
- ldr r3, [sp, 0x4]\n\
- bl PutBattleUpdateOnTheAir\n\
- b _0817E670\n\
- .pool\n\
-_0817E65C:\n\
- ldr r0, =gBattleScripting\n\
- adds r0, 0x25\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- adds r1, r4, 0\n\
- ldr r2, [sp]\n\
- ldr r3, [sp, 0x4]\n\
- bl PutBattleUpdateOnTheAir\n\
-_0817E670:\n\
- add sp, 0x20\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\
- .pool");
-}
-#endif
-
static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
{
struct BattleTvMovePoints *movePoints = &gBattleStruct->tvMovePoints;
diff --git a/src/contest.c b/src/contest.c
index a84d72aa9..a2f5b6f99 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -4137,12 +4137,12 @@ static u8 CreateContestantBoxBlinkSprites(u8 contestant)
CpuFill32(0, gContestResources->boxBlinkTiles2 + 0x500, 0x300);
RequestDma3Copy(gContestResources->boxBlinkTiles1,
- (u8 *)(VRAM + 0x10000 + gSprites[spriteId1].oam.tileNum * 32),
+ (u8 *)(OBJ_VRAM0 + gSprites[spriteId1].oam.tileNum * 32),
0x800,
1);
RequestDma3Copy(gContestResources->boxBlinkTiles2,
- (u8 *)(VRAM + 0x10000 + gSprites[spriteId2].oam.tileNum * 32),
+ (u8 *)(OBJ_VRAM0 + gSprites[spriteId2].oam.tileNum * 32),
0x800,
1);
@@ -4728,8 +4728,8 @@ static void UpdateApplauseMeter(void)
src = &gContestApplauseMeterGfx[64];
else
src = gContestApplauseMeterGfx;
- CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
- CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
+ CpuCopy32(src, (void *)(OBJ_VRAM0 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
+ CpuCopy32(src + 32, (void *)(OBJ_VRAM0 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
if (eContest.applauseLevel > 4)
StartApplauseOverflowAnimation();
diff --git a/src/contest_util.c b/src/contest_util.c
index 123d3e8eb..ae76eda6b 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -1148,350 +1148,71 @@ static void TryCreateWirelessSprites(void)
}
}
-// Functionally equivalent, the same except compiler generated variables from
-// src are placed on different stack positions.
-
-#ifdef NONMATCHING
static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
{
- u8 *windowTilesPtr;
u16 windowId;
- int origWidth;
- struct WindowTemplate windowTemplate;
- int strWidth;
+ s32 origWidth, strWidth;
u8 *spriteTilePtrs[4];
u8 *dst;
- int i;
- struct Sprite *sprite;
- const u8 *src; // The culprit.
- memset(&windowTemplate, 0, sizeof(windowTemplate));
- windowTemplate.width = 30;
- windowTemplate.height = 2;
- windowId = AddWindow(&windowTemplate);
- FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ {
+ struct WindowTemplate windowTemplate; //It's important the lifetime of this struct ends after the clear
+ memset(&windowTemplate, 0, sizeof(windowTemplate));
+ windowTemplate.width = 30;
+ windowTemplate.height = 2;
+ windowId = AddWindow(&windowTemplate);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ }
origWidth = GetStringWidth(1, text, 0);
- strWidth = (origWidth + 9) / 8;
- if (strWidth > 30)
- strWidth = 30;
+ if ((strWidth = (origWidth + 9) / 8) > 30)
+ strWidth = 30;
AddTextPrinterParameterized3(windowId, 1, (strWidth * 8 - origWidth) / 2, 1, sContestLinkTextColors, -1, text);
- windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
- src = (u8 *)(sUnknown_0858D6D0);
- sprite = &gSprites[spriteId];
- spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + VRAM + 0x10000);
+ {
+ s32 i;
+ struct Sprite *sprite;
+ const u8 *src, *windowTilesPtr;
+ windowTilesPtr = (const u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
+ src = sUnknown_0858D6D0;
+
+ sprite = &gSprites[spriteId];
+ spriteTilePtrs[0] = (u8 *)((OBJ_VRAM0) + sprite->oam.tileNum * 32);
- for (i = 1; i < 4; i++)
- spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + VRAM + 0x10000);
+ for (i = 1; i < 4; i++)
+ spriteTilePtrs[i] = (u8 *)((OBJ_VRAM0) + gSprites[sprite->data[i - 1]].oam.tileNum * 32);
- for (i = 0; i < 4; i++)
- CpuFill32(0, spriteTilePtrs[i], 0x400);
+ for (i = 0; i < 4; i++)
+ CpuFill32(0, spriteTilePtrs[i], 0x400);
- dst = spriteTilePtrs[0];
- CpuCopy32(src, dst, 0x20);
- CpuCopy32(src + 128, dst + 0x100, 0x20);
- CpuCopy32(src + 128, dst + 0x200, 0x20);
- CpuCopy32(src + 64, dst + 0x300, 0x20);
+ dst = spriteTilePtrs[0];
+ CpuCopy32(src, dst, 0x20);
+ CpuCopy32(src + 128, dst + 0x100, 0x20);
+ CpuCopy32(src + 128, dst + 0x200, 0x20);
+ CpuCopy32(src + 64, dst + 0x300, 0x20);
+
+ for (i = 0; i < strWidth; i++)
+ {
+ dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
+ CpuCopy32(src + 192, dst, 0x20);
+ CpuCopy32(windowTilesPtr, dst + 0x100, 0x20);
+ CpuCopy32(windowTilesPtr + 960, dst + 0x200, 0x20);
+ CpuCopy32(src + 224, dst + 0x300, 0x20);
+ windowTilesPtr += 0x20;
+ }
- for (i = 0; i < strWidth; i++)
- {
dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
- CpuCopy32(src + 192, dst, 0x20);
- CpuCopy32(windowTilesPtr, dst + 0x100, 0x20);
- CpuCopy32(windowTilesPtr + 960, dst + 0x200, 0x20);
- CpuCopy32(src + 224, dst + 0x300, 0x20);
- windowTilesPtr += 0x20;
- }
-
- dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
- CpuCopy32(src + 32, dst, 0x20);
- CpuCopy32(src + 160, dst + 0x100, 0x20);
- CpuCopy32(src + 160, dst + 0x200, 0x20);
- CpuCopy32(src + 96, dst + 0x300, 0x20);
+ CpuCopy32(src + 32, dst, 0x20);
+ CpuCopy32(src + 160, dst + 0x100, 0x20);
+ CpuCopy32(src + 160, dst + 0x200, 0x20);
+ CpuCopy32(src + 96, dst + 0x300, 0x20);
+ }
RemoveWindow(windowId);
return (240 - (strWidth + 2) * 8) / 2;
}
-#else
-NAKED
-static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
-{
- asm_unified(
- "push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x44\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r7, r1, 24\n\
- add r4, sp, 0x20\n\
- adds r0, r4, 0\n\
- movs r1, 0\n\
- movs r2, 0x8\n\
- bl memset\n\
- movs r0, 0x1E\n\
- strb r0, [r4, 0x3]\n\
- movs r0, 0x2\n\
- strb r0, [r4, 0x4]\n\
- adds r0, r4, 0\n\
- bl AddWindow\n\
- lsls r6, r0, 24\n\
- lsrs r4, r6, 24\n\
- adds r0, r4, 0\n\
- movs r1, 0x11\n\
- bl FillWindowPixelBuffer\n\
- movs r0, 0x1\n\
- adds r1, r5, 0\n\
- movs r2, 0\n\
- bl GetStringWidth\n\
- adds r2, r0, 0\n\
- adds r2, 0x9\n\
- cmp r2, 0\n\
- bge _080F6BC4\n\
- adds r2, 0x7\n\
-_080F6BC4:\n\
- asrs r2, 3\n\
- mov r10, r2\n\
- cmp r2, 0x1E\n\
- ble _080F6BD0\n\
- movs r1, 0x1E\n\
- mov r10, r1\n\
-_080F6BD0:\n\
- mov r1, r10\n\
- lsls r2, r1, 3\n\
- subs r2, r0\n\
- lsrs r0, r2, 31\n\
- adds r2, r0\n\
- asrs r2, 1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- ldr r0, =sContestLinkTextColors\n\
- str r0, [sp]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r0, [sp, 0x4]\n\
- str r5, [sp, 0x8]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r3, 0x1\n\
- bl AddTextPrinterParameterized3\n\
- adds r0, r4, 0\n\
- movs r1, 0x7\n\
- bl GetWindowAttribute\n\
- mov r9, r0\n\
- ldr r2, =sUnknown_0858D6D0\n\
- mov r8, r2\n\
- lsls r1, r7, 4\n\
- adds r1, r7\n\
- lsls r1, 2\n\
- ldr r3, =gSprites\n\
- adds r1, r3\n\
- ldrh r0, [r1, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 17\n\
- ldr r2, =0x06010000\n\
- adds r0, r2\n\
- str r0, [sp, 0xC]\n\
- str r6, [sp, 0x38]\n\
- mov r7, sp\n\
- adds r7, 0x1C\n\
- str r7, [sp, 0x2C]\n\
- mov r0, r10\n\
- adds r0, 0x2\n\
- str r0, [sp, 0x30]\n\
- movs r5, 0\n\
- add r7, sp, 0x10\n\
- mov r12, r7\n\
- adds r6, r1, 0\n\
- adds r6, 0x2E\n\
- movs r4, 0x2\n\
-_080F6C34:\n\
- adds r0, r6, r5\n\
- movs r7, 0\n\
- ldrsh r1, [r0, r7]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrh r0, [r0, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 17\n\
- adds r0, r2\n\
- mov r1, r12\n\
- adds r1, 0x4\n\
- mov r12, r1\n\
- subs r1, 0x4\n\
- stm r1!, {r0}\n\
- adds r5, 0x2\n\
- subs r4, 0x1\n\
- cmp r4, 0\n\
- bge _080F6C34\n\
- mov r7, r8\n\
- adds r7, 0x80\n\
- mov r2, r8\n\
- adds r2, 0x40\n\
- str r2, [sp, 0x28]\n\
- mov r0, r8\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x3C]\n\
- mov r1, r8\n\
- adds r1, 0xA0\n\
- str r1, [sp, 0x40]\n\
- adds r2, 0x20\n\
- str r2, [sp, 0x34]\n\
- add r5, sp, 0xC\n\
- movs r6, 0\n\
- movs r4, 0x3\n\
-_080F6C7C:\n\
- str r6, [sp, 0x1C]\n\
- ldm r5!, {r1}\n\
- ldr r0, [sp, 0x2C]\n\
- ldr r2, =0x05000100\n\
- bl CpuSet\n\
- subs r4, 0x1\n\
- cmp r4, 0\n\
- bge _080F6C7C\n\
- ldr r5, [sp, 0xC]\n\
- ldr r6, =0x04000008\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- adds r1, r5, r0\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r2, 0x80\n\
- lsls r2, 2\n\
- adds r1, r5, r2\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r7, 0xC0\n\
- lsls r7, 2\n\
- adds r1, r5, r7\n\
- ldr r0, [sp, 0x28]\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r4, 0\n\
- cmp r4, r10\n\
- bge _080F6D32\n\
- adds r7, r6, 0\n\
-_080F6CCE:\n\
- adds r6, r4, 0x1\n\
- adds r0, r6, 0\n\
- cmp r6, 0\n\
- bge _080F6CDA\n\
- adds r0, r4, 0\n\
- adds r0, 0x8\n\
-_080F6CDA:\n\
- asrs r0, 3\n\
- lsls r1, r0, 2\n\
- add r1, sp\n\
- adds r1, 0xC\n\
- lsls r0, 3\n\
- subs r0, r6, r0\n\
- lsls r0, 5\n\
- ldr r1, [r1]\n\
- adds r5, r1, r0\n\
- mov r0, r8\n\
- adds r0, 0xC0\n\
- adds r1, r5, 0\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- adds r1, r5, r0\n\
- mov r0, r9\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r0, 0xF0\n\
- lsls r0, 2\n\
- add r0, r9\n\
- movs r2, 0x80\n\
- lsls r2, 2\n\
- adds r1, r5, r2\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r0, 0xC0\n\
- lsls r0, 2\n\
- adds r1, r5, r0\n\
- mov r0, r8\n\
- adds r0, 0xE0\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r1, 0x20\n\
- add r9, r1\n\
- adds r4, r6, 0\n\
- cmp r4, r10\n\
- blt _080F6CCE\n\
-_080F6D32:\n\
- adds r2, r4, 0x1\n\
- adds r0, r2, 0\n\
- cmp r2, 0\n\
- bge _080F6D3E\n\
- adds r0, r4, 0\n\
- adds r0, 0x8\n\
-_080F6D3E:\n\
- asrs r0, 3\n\
- lsls r1, r0, 2\n\
- add r1, sp\n\
- adds r1, 0xC\n\
- lsls r0, 3\n\
- subs r0, r2, r0\n\
- lsls r0, 5\n\
- ldr r1, [r1]\n\
- adds r5, r1, r0\n\
- ldr r4, =0x04000008\n\
- ldr r0, [sp, 0x3C]\n\
- adds r1, r5, 0\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r1, r5, r2\n\
- ldr r0, [sp, 0x40]\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- movs r7, 0x80\n\
- lsls r7, 2\n\
- adds r1, r5, r7\n\
- ldr r0, [sp, 0x40]\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- movs r0, 0xC0\n\
- lsls r0, 2\n\
- adds r1, r5, r0\n\
- ldr r0, [sp, 0x34]\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- ldr r1, [sp, 0x38]\n\
- lsrs r0, r1, 24\n\
- bl RemoveWindow\n\
- ldr r2, [sp, 0x30]\n\
- lsls r1, r2, 3\n\
- movs r0, 0xF0\n\
- subs r0, r1\n\
- asrs r0, 1\n\
- add sp, 0x44\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool");
-}
-#endif // NONMATCHING
-
static void LoadContestResultSprites(void)
{
int i;
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 3e7fecb48..38eaa3713 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -2486,7 +2486,6 @@ void SetFrontierBrainObjEventGfx_2(void)
#define FRONTIER_BRAIN_OTID 61226
-#ifdef NONMATCHING
void CreateFrontierBrainPokemon(void)
{
s32 i, j;
@@ -2509,11 +2508,13 @@ void CreateFrontierBrainPokemon(void)
{
if (!(selectedMonBits & 1))
continue;
-
do
{
- j = Random32();
- } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j) || sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j));
+ do
+ {
+ j = Random32(); //Should be one while loop, but that doesn't match
+ } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j)); //See above comment
+ } while (sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j));
CreateMon(&gEnemyParty[monPartyId],
sFrontierBrainsMons[facility][symbol][i].species,
monLevel,
@@ -2535,242 +2536,6 @@ void CreateFrontierBrainPokemon(void)
monPartyId++;
}
}
-#else
-NAKED
-void CreateFrontierBrainPokemon(void)
-{
- asm_unified(
- "push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x44\n\
- ldr r0, =0x000040cf\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x20]\n\
- bl GetFronterBrainSymbol\n\
- str r0, [sp, 0x24]\n\
- ldr r0, [sp, 0x20]\n\
- cmp r0, 0x1\n\
- bne _081A4E44\n\
- ldr r0, =0x000003fe\n\
- bl TrainerIdToDomeTournamentId\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl GetDomeTrainerSelectedMons\n\
- adds r4, r0, 0\n\
- b _081A4E46\n\
- .pool\n\
-_081A4E44:\n\
- movs r4, 0x7\n\
-_081A4E46:\n\
- bl ZeroEnemyPartyMons\n\
- movs r1, 0\n\
- str r1, [sp, 0x18]\n\
- bl SetFacilityPtrsGetLevel\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- movs r2, 0\n\
- str r2, [sp, 0x14]\n\
-_081A4E5C:\n\
- movs r0, 0x1\n\
- ands r0, r4\n\
- asrs r4, 1\n\
- str r4, [sp, 0x30]\n\
- ldr r3, [sp, 0x14]\n\
- adds r3, 0x1\n\
- str r3, [sp, 0x28]\n\
- cmp r0, 0\n\
- bne _081A4E70\n\
- b _081A4FC4\n\
-_081A4E70:\n\
- ldr r4, [sp, 0x14]\n\
- lsls r4, 2\n\
- mov r9, r4\n\
- ldr r0, [sp, 0x24]\n\
- lsls r0, 4\n\
- str r0, [sp, 0x38]\n\
- ldr r1, [sp, 0x20]\n\
- lsls r1, 4\n\
- str r1, [sp, 0x34]\n\
- ldr r2, [sp, 0x1C]\n\
- lsls r2, 24\n\
- str r2, [sp, 0x3C]\n\
- ldr r3, [sp, 0x18]\n\
- adds r3, 0x1\n\
- str r3, [sp, 0x2C]\n\
- ldr r0, [sp, 0x14]\n\
- add r0, r9\n\
- lsls r0, 2\n\
- mov r8, r0\n\
-_081A4E96:\n\
- bl Random\n\
- adds r4, r0, 0\n\
- bl Random\n\
- lsls r4, 16\n\
- lsrs r7, r4, 16\n\
- lsls r0, 16\n\
- orrs r7, r0\n\
- ldr r0, =0x0000ef2a\n\
- adds r1, r7, 0\n\
- bl IsShinyOtIdPersonality\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _081A4E96\n\
- ldr r4, [sp, 0x38]\n\
- ldr r1, [sp, 0x24]\n\
- subs r0, r4, r1\n\
- lsls r5, r0, 2\n\
- mov r2, r8\n\
- adds r4, r2, r5\n\
- ldr r3, [sp, 0x34]\n\
- ldr r1, [sp, 0x20]\n\
- subs r0, r3, r1\n\
- lsls r6, r0, 3\n\
- adds r4, r6\n\
- ldr r2, =sFrontierBrainsMons\n\
- adds r4, r2\n\
- adds r0, r7, 0\n\
- bl GetNatureFromPersonality\n\
- ldrb r1, [r4, 0x5]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r1, r0\n\
- bne _081A4E96\n\
- ldr r4, [sp, 0x18]\n\
- movs r0, 0x64\n\
- adds r3, r4, 0\n\
- muls r3, r0\n\
- mov r8, r3\n\
- ldr r1, =gEnemyParty\n\
- add r1, r8\n\
- mov r10, r1\n\
- ldr r4, [sp, 0x14]\n\
- add r4, r9\n\
- lsls r4, 2\n\
- adds r0, r4, r5\n\
- adds r0, r6\n\
- ldr r2, =sFrontierBrainsMons\n\
- adds r0, r2\n\
- ldrh r1, [r0]\n\
- ldr r3, [sp, 0x3C]\n\
- lsrs r2, r3, 24\n\
- ldrb r3, [r0, 0x4]\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- str r7, [sp, 0x4]\n\
- str r0, [sp, 0x8]\n\
- ldr r0, =0x0000ef2a\n\
- str r0, [sp, 0xC]\n\
- mov r0, r10\n\
- bl CreateMon\n\
- ldr r0, =sFrontierBrainsMons\n\
- adds r5, r0\n\
- adds r5, r6, r5\n\
- adds r4, r5, r4\n\
- adds r4, 0x2\n\
- mov r0, r10\n\
- movs r1, 0xC\n\
- adds r2, r4, 0\n\
- bl SetMonData\n\
- movs r7, 0\n\
- mov r6, r8\n\
- ldr r3, =gEnemyParty\n\
-_081A4F32:\n\
- adds r1, r7, 0\n\
- adds r1, 0x1A\n\
- ldr r0, [sp, 0x14]\n\
- add r0, r9\n\
- lsls r4, r0, 2\n\
- adds r2, r5, r4\n\
- adds r0, r7, 0x6\n\
- adds r2, r0\n\
- adds r0, r6, r3\n\
- str r3, [sp, 0x40]\n\
- bl SetMonData\n\
- adds r7, 0x1\n\
- ldr r3, [sp, 0x40]\n\
- cmp r7, 0x5\n\
- ble _081A4F32\n\
- movs r1, 0xFF\n\
- add r0, sp, 0x10\n\
- strb r1, [r0]\n\
- movs r7, 0\n\
- ldr r1, [sp, 0x18]\n\
- movs r2, 0x64\n\
- adds r6, r1, 0\n\
- muls r6, r2\n\
- ldr r3, =sFrontierBrainsMons + 0xC\n\
- mov r8, r3\n\
- ldr r3, =gEnemyParty\n\
- adds r5, r4, 0\n\
-_081A4F6A:\n\
- ldr r4, [sp, 0x38]\n\
- ldr r0, [sp, 0x24]\n\
- subs r1, r4, r0\n\
- lsls r1, 2\n\
- adds r1, r5, r1\n\
- ldr r2, [sp, 0x34]\n\
- ldr r4, [sp, 0x20]\n\
- subs r0, r2, r4\n\
- lsls r0, 3\n\
- adds r1, r0\n\
- add r1, r8\n\
- ldrh r4, [r1]\n\
- lsls r2, r7, 24\n\
- lsrs r2, 24\n\
- adds r0, r6, r3\n\
- adds r1, r4, 0\n\
- str r3, [sp, 0x40]\n\
- bl SetMonMoveSlot\n\
- ldr r3, [sp, 0x40]\n\
- cmp r4, 0xDA\n\
- bne _081A4F9C\n\
- movs r1, 0\n\
- add r0, sp, 0x10\n\
- strb r1, [r0]\n\
-_081A4F9C:\n\
- adds r5, 0x2\n\
- adds r7, 0x1\n\
- cmp r7, 0x3\n\
- ble _081A4F6A\n\
- ldr r0, [sp, 0x18]\n\
- movs r1, 0x64\n\
- adds r4, r0, 0\n\
- muls r4, r1\n\
- ldr r0, =gEnemyParty\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0x20\n\
- add r2, sp, 0x10\n\
- bl SetMonData\n\
- adds r0, r4, 0\n\
- bl CalculateMonStats\n\
- ldr r2, [sp, 0x2C]\n\
- str r2, [sp, 0x18]\n\
-_081A4FC4:\n\
- ldr r4, [sp, 0x30]\n\
- ldr r3, [sp, 0x28]\n\
- str r3, [sp, 0x14]\n\
- cmp r3, 0x2\n\
- bgt _081A4FD0\n\
- b _081A4E5C\n\
-_081A4FD0:\n\
- add sp, 0x44\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\
- .pool");
-}
-#endif
u16 GetFrontierBrainMonSpecies(u8 monId)
{
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index 04e2216f6..45cc24e5c 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -824,7 +824,7 @@ void sub_817B1C8(u8 a)
LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
- LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
+ LZ77UnCompVram(gUnknown_085F16A8, (void *)(OBJ_VRAM0));
LoadPalette(&gUnknown_085F1668, 256, 32);
sub_817B76C();
break;
@@ -834,7 +834,7 @@ void sub_817B1C8(u8 a)
LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0D5C, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
- LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
+ LZ77UnCompVram(gUnknown_085F16A8, (void *)(OBJ_VRAM0));
LoadPalette(&gUnknown_085F1688, 256, 32);
sub_817B76C();
break;
diff --git a/src/pokedex.c b/src/pokedex.c
index 606642221..6146bcc05 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -5238,22 +5238,20 @@ static void Task_ExitSearchWaitForFade(u8 taskId)
void SetSearchRectHighlight(u8 flags, u8 x, u8 y, u8 width)
{
- u16 i;
+ u16 i, temp; //This would have been better as a pointer but here we are
u32 ptr = (u32)GetBgTilemapBuffer(3); //this should be a pointer, but this only matches as a u32.
- u16 temp; //This would have been better as a pointer but here we are
for (i = 0; i < width; i++)
{
- temp = *(u16 *)(ptr + y * 64 + (x + i) * 2);
-
- temp &= 0xFFF;
- temp |= (flags << 12);
- *(u16 *)(ptr + (y*64 + (x + i)*2)) = temp;
-
- temp = *(u16 *)(ptr + (y + 1)*64 + (x + i)*2);
- temp &= 0xFFF;
- temp |= (flags << 12);
- *(u16 *)(ptr + (y + 1)*64 + (x + i)*2)) = temp;
+ temp = *(u16 *)(ptr + (y+0)*64 + (x+i)*2);
+ temp &= 0x0fff;
+ temp |= (flags << 12);
+ *(u16 *)(ptr + (y+0)*64 + (x+i)*2) = temp;
+
+ temp = *(u16 *)(ptr + (y+1)*64 + (x+i)*2);
+ temp &= 0x0fff;
+ temp |= (flags << 12);
+ *(u16 *)(ptr + (y+1)*64 + (x+i)*2) = temp;
}
}
diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c
index 0e2425d4e..55d310a7b 100644
--- a/src/pokenav_main_menu.c
+++ b/src/pokenav_main_menu.c
@@ -471,139 +471,42 @@ void sub_81C7990(u32 a0, u16 a1)
CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
}
-NAKED
-void sub_81C79BC(const u16 *a0, const u16 *a1, u32 a2, u32 a3, u32 a4, u16 *a5)
-{
- asm_unified(
- "push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- mov r10, r2\n\
- str r3, [sp, 0x8]\n\
- ldr r0, [sp, 0x2C]\n\
- cmp r0, 0\n\
- bne _081C79E4\n\
- ldr r2, =0x001fffff\n\
- mov r1, r10\n\
- ands r2, r1\n\
- ldr r0, [sp]\n\
- b _081C79F4\n\
- .pool\n\
-_081C79E4:\n\
- ldr r2, [sp, 0x2C]\n\
- ldr r0, [sp, 0x8]\n\
- cmp r2, r0\n\
- blt _081C7A00\n\
- ldr r2, =0x001fffff\n\
- mov r1, r10\n\
- ands r2, r1\n\
- ldr r0, [sp, 0x4]\n\
-_081C79F4:\n\
- ldr r1, [sp, 0x30]\n\
- bl CpuSet\n\
- b _081C7AAE\n\
- .pool\n\
-_081C7A00:\n\
- movs r2, 0x1\n\
- negs r2, r2\n\
- add r10, r2\n\
- b _081C7AA6\n\
-_081C7A08:\n\
- ldr r1, [sp]\n\
- ldrh r0, [r1]\n\
- movs r2, 0x1F\n\
- mov r9, r2\n\
- mov r1, r9\n\
- ands r1, r0\n\
- mov r9, r1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 21\n\
- movs r1, 0x1F\n\
- ands r1, r2\n\
- mov r8, r1\n\
- lsrs r7, r0, 26\n\
- movs r2, 0x1F\n\
- ands r7, r2\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r4, [r0]\n\
- movs r0, 0x1F\n\
- ands r0, r4\n\
- mov r1, r9\n\
- subs r0, r1\n\
- lsls r0, 8\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r2, [sp, 0x2C]\n\
- adds r6, r0, 0\n\
- muls r6, r2\n\
- asrs r6, 8\n\
- lsls r4, 16\n\
- lsrs r0, r4, 21\n\
- movs r1, 0x1F\n\
- ands r0, r1\n\
- mov r2, r8\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r1, [sp, 0x2C]\n\
- adds r5, r0, 0\n\
- muls r5, r1\n\
- asrs r5, 8\n\
- lsrs r4, 26\n\
- movs r2, 0x1F\n\
- ands r4, r2\n\
- subs r4, r7\n\
- lsls r4, 8\n\
- adds r0, r4, 0\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r1, [sp, 0x2C]\n\
- muls r0, r1\n\
- asrs r0, 8\n\
- add r6, r9\n\
- movs r2, 0x1F\n\
- ands r6, r2\n\
- add r5, r8\n\
- ands r5, r2\n\
- adds r0, r7, r0\n\
- ands r0, r2\n\
- lsls r0, 10\n\
- lsls r5, 5\n\
- orrs r0, r5\n\
- orrs r0, r6\n\
- ldr r1, [sp, 0x30]\n\
- strh r0, [r1]\n\
- ldr r2, [sp]\n\
- adds r2, 0x2\n\
- str r2, [sp]\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x2\n\
- str r0, [sp, 0x4]\n\
- adds r1, 0x2\n\
- str r1, [sp, 0x30]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- add r10, r1\n\
-_081C7AA6:\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- cmp r10, r0\n\
- bne _081C7A08\n\
-_081C7AAE:\n\
- add sp, 0xC\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");
+void sub_81C79BC(const u16 *a0, const u16 *a1, int a2, int a3, int a4, u16 *palette)
+{
+
+ if (a4 == 0)
+ {
+ CpuCopy16(a0, palette, a2 * 2);
+ }
+ else if (a4 >= a3)
+ {
+ CpuCopy16(a1, palette, a2 * 2);
+ }
+ else
+ {
+ int r, g, b;
+ int r1, g1, b1;
+ while (a2--)
+ {
+
+ r = R(*a0);
+ g = G(*a0);
+ b = B(*a0);
+
+ r1 = ((((R(*a1) << 8) - (r << 8)) / a3) * a4) >> 8;
+ g1 = ((((G(*a1) << 8) - (g << 8)) / a3) * a4) >> 8;
+ b1 = ((((B(*a1) << 8) - (b << 8)) / a3) * a4) >> 8;
+
+ r = (r + r1) & 0x1F; //_RGB(r + r1, g + g1, b + b1); doesn't match; I have to assign the value of (r + r1 & 0x1F)
+ g = (g + g1) & 0x1F; //See above
+ b = (b + b1) & 0x1F; //See above
+
+ *palette = RGB2(r, g, b); //See above comment
+
+ a0++, a1++;
+ palette++;
+ }
+ }
}
void PokenavFadeScreen(s32 fadeType)
@@ -780,7 +683,7 @@ static void LoadLeftHeaderGfxForMenu(u32 menuGfxId)
size = GetDecompressedDataSize(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data);
LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
LZ77UnCompWram(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data, gDecompressionBuffer);
- RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+ RequestDma3Copy(gDecompressionBuffer, (void *)OBJ_VRAM0 + (GetSpriteTileStartByTag(2) * 32), size, 1);
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].size;
if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT || menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_IN)
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 4b617e3b8..2b11add76 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -118,8 +118,8 @@ static u8 GetLetterTableId(u8 letter)
static bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase)
{
s32 i;
- ALIGNED(2) u8 array[12];
- u8 charsByTableId[16];
+ u8 array[9];
+ u8 charsByTableId[15];
u16 *ptr;
if (StringLength(phrase) != 15)