summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/contest_painting.c116
-rw-r--r--src/list_menu.c2
-rw-r--r--src/trainer_hill.c73
3 files changed, 19 insertions, 172 deletions
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 5dd4a70a5..a0c39dfc7 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -384,8 +384,6 @@ static void InitContestMonPixels(u16 species, u8 whichSprite)
}
}
-#ifdef NONMATCHING
-// functionally equivalent.
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
{
u16 tileY, tileX, pixelY, pixelX;
@@ -399,125 +397,21 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
{
for (pixelX = 0; pixelX < 8; pixelX++)
{
- int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2);
- colorIndex = spriteGfx[offset];
+ colorIndex = spriteGfx[((tileY * 8) + tileX) * 32 + (pixelY << 2) + (pixelX >> 1)];
if (pixelX & 1)
colorIndex >>= 4;
else
- colorIndex &= 0xF;
+ colorIndex &= 0xF; // %=16 works here too. Both match
- if (colorIndex == 0) // transparent pixel
- (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000;
+ if (colorIndex == 0) // transparent pixel
+ (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = 0x8000;
else
- (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
+ (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
}
}
}
}
}
-#else
-NAKED
-static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64])
-{
- asm_unified("\n\
- 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\
- mov r10, r0\n\
- mov r9, r1\n\
- str r2, [sp]\n\
- movs r0, 0\n\
-_08130394:\n\
- movs r3, 0\n\
- adds r1, r0, 0x1\n\
- str r1, [sp, 0x4]\n\
- lsls r0, 3\n\
- str r0, [sp, 0x8]\n\
-_0813039E:\n\
- movs r1, 0\n\
- adds r2, r3, 0x1\n\
- mov r8, r2\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r3\n\
- lsls r0, 5\n\
- mov r12, r0\n\
- lsls r4, r3, 3\n\
-_081303AE:\n\
- movs r3, 0\n\
- lsls r0, r1, 2\n\
- adds r6, r1, 0x1\n\
- mov r2, r12\n\
- adds r5, r2, r0\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r1\n\
- lsls r0, 7\n\
- ldr r1, [sp]\n\
- adds r2, r0, r1\n\
-_081303C2:\n\
- lsrs r0, r3, 1\n\
- adds r0, r5, r0\n\
- add r0, r10\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _081303D6\n\
- lsrs r1, 4\n\
- b _081303DA\n\
-_081303D6:\n\
- movs r0, 0xF\n\
- ands r1, r0\n\
-_081303DA:\n\
- cmp r1, 0\n\
- bne _081303EC\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- movs r7, 0x80\n\
- lsls r7, 8\n\
- adds r1, r7, 0\n\
- b _081303F8\n\
-_081303EC:\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- lsls r1, 1\n\
- add r1, r9\n\
- ldrh r1, [r1]\n\
-_081303F8:\n\
- strh r1, [r0]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _081303C2\n\
- lsls r0, r6, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0x7\n\
- bls _081303AE\n\
- mov r1, r8\n\
- lsls r0, r1, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _0813039E\n\
- ldr r2, [sp, 0x4]\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x7\n\
- bls _08130394\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");
-}
-#endif
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
diff --git a/src/list_menu.c b/src/list_menu.c
index ebf02bab6..ef55f5872 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -1282,7 +1282,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
{
subsprites[id] = sSubsprite_RedOutline3;
subsprites[id].x = i - 120;
- subsprites[id].y = 136;
+ subsprites[id].y = -120;
id++;
subsprites[id] = sSubsprite_RedOutline6;
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index c5aea14d9..bed8df2e0 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -356,7 +356,7 @@ static void SetUpDataStruct(void)
{
if (sHillData == NULL)
{
- sHillData = AllocZeroed(sizeof(*sHillData));
+ sHillData = AllocZeroed(sizeof(struct TrHillStruct2));
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
nullsub_2();
@@ -672,70 +672,23 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void)
return TRUE;
}
-// Functionally equivalent.
-#ifdef NONMATCHING
static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
{
- u32 var0, var1, var2, var3;
+ u16 var0, var1;
+ #ifndef NONMATCHING
+ register u16 var2 asm("r3"); //compiler keeps wanting to "mov r3, 0x80" instead of "mov r2 0x80" and then later "add r3, r2, 0"
+ #else
+ u16 var2;
+ #endif
+ u16 var3;
- var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit)) & 1;
- var1 = sHillData->floors[floorId].display.data[arg2 * arg3 + bit];
- var3 = 0x200;
- var2 = 0x3000;
+ var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit) & 1);
+ var1 = sHillData->floors[floorId].display.data[arg3 * arg2 + bit];
+ var2 = 0x200;
+ var3 = 0x3000;
- return ((var0 << 10) | var2) | (var1 | var3);
+ return ((var0 << 10) | var3) | (var1 | var2);
}
-#else
-NAKED
-static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
-{
- asm_unified("\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r4, =sHillData\n\
- ldr r4, [r4]\n\
- mov r12, r4\n\
- lsls r4, r2, 1\n\
- lsls r5, r0, 4\n\
- subs r5, r0\n\
- lsls r5, 3\n\
- subs r5, r0\n\
- lsls r5, 3\n\
- adds r4, r5\n\
- movs r0, 0xE8\n\
- lsls r0, 2\n\
- add r0, r12\n\
- adds r0, r4\n\
- ldrh r0, [r0]\n\
- movs r4, 0xF\n\
- subs r4, r1\n\
- asrs r0, r4\n\
- movs r4, 0x1\n\
- ands r0, r4\n\
- muls r2, r3\n\
- adds r2, r1\n\
- adds r2, r5\n\
- movs r1, 0xA8\n\
- lsls r1, 2\n\
- add r1, r12\n\
- adds r1, r2\n\
- ldrb r1, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 2\n\
- adds r3, r2, 0\n\
- movs r2, 0xC0\n\
- lsls r2, 6\n\
- lsls r0, 10\n\
- orrs r0, r2\n\
- orrs r1, r3\n\
- orrs r0, r1\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .pool");
-}
-#endif // NONMATCHING
void GenerateTrainerHillFloorLayout(u16 *mapArg)
{