summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-25 11:05:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-25 11:05:08 -0400
commit6f912a63443536dcd15114263c0523b67873880f (patch)
tree8f7b0c3f047b9633a225998e19a1b02a9bd02eb0 /src
parentb10a1ff4f80c5416d853f32913d5ceae2e920418 (diff)
Match LoadCryWaveformWindow
Diffstat (limited to 'src')
-rw-r--r--src/pokedex_cry_screen.c253
1 files changed, 38 insertions, 215 deletions
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 59fc6566b..be745ba1d 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -37,7 +37,7 @@ void sub_811A124(void);
void sub_811A15C(u8);
void sub_811A1C8(u8, u8);
void sub_811A324(void);
-void sub_811A350(u8, u16, u8);
+void sub_811A350(u8, s16, u8);
void sub_811A534(struct Sprite *);
void sub_811A6D8(s8);
@@ -202,236 +202,59 @@ struct SpritePalette gCryMeterNeedleSpritePalettes[] = {
#define CRY_METER_MAP_WIDTH 32
#endif
-#ifdef NONMATCHING
-// caused by some switch branch weirdness
u8 LoadCryWaveformWindow(struct CryScreenWindow *cry, u8 arg1)
{
u8 i;
u8 j;
+ u8 i2;
u16 r6;
u16 r7;
u8 r9 = FALSE;
- u32 offset;
switch (gDexCryScreenState)
{
- case 0:
- gPokedexCryScreenPtr->unk0014 = cry->unk0;
- gPokedexCryScreenPtr->unk0016 = cry->yPos;
- gPokedexCryScreenPtr->unk001A = 0;
- gPokedexCryScreenPtr->unk001B = 0;
- gPokedexCryScreenPtr->unk0010 = 0;
- gPokedexCryScreenPtr->unk0012 = 28;
- gPokedexCryScreenPtr->unk0011 = 0;
- sub_811A350(arg1, -8 * cry->xPos, 0);
- for (i = 0; i < 7; i++)
- {
- for (j = 0; j < 32; j++)
- {
- DmaCopy16(3, gUnknown_083FB718, gSharedMem[32 * i + j], 32);
- }
- }
- gDexCryScreenState++;
- break;
- case 1:
- r7 = cry->unk2 << 11;
- r6 = (cry->paletteNo << 12) + ((unsigned)(cry->unk0 << 18) >> 23);
- for (i = 0; i < 7; i++)
+ case 0:
+ gPokedexCryScreenPtr->unk0014 = cry->unk0;
+ gPokedexCryScreenPtr->unk0016 = cry->yPos;
+ gPokedexCryScreenPtr->unk001A = 0;
+ gPokedexCryScreenPtr->unk001B = 0;
+ gPokedexCryScreenPtr->unk0010 = 0;
+ gPokedexCryScreenPtr->unk0012 = 28;
+ gPokedexCryScreenPtr->unk0011 = 0;
+ sub_811A350(arg1, -8 * cry->xPos, 1);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
{
- for (j = 0; j < 32; j++)
- {
- offset = j << 1;
- offset += i << 6;
- offset += r7;
- *((u16 *)(VRAM + offset)) = r6++;
- }
+ DmaCopy16(3, gUnknown_083FB718, &gSharedMem[((32 * i) + j) * 32], 32);
}
- for (i = 0; i < gPokedexCryScreenPtr->unk0016 * 8; i++)
+ }
+ gDexCryScreenState++;
+ break;
+ case 1:
+ r7 = cry->unk2 << 11;
+ r6 = (cry->paletteNo << 12) + ((cry->unk0 >> 5) & 0x1FF);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
{
- sub_811A1C8(i, 0);
+ *((u16 *)(VRAM + (2 * j) + (64 * i) + r7)) = r6++;
}
- gDexCryScreenState++;
- break;
- case 2:
- sub_811A324();
- LoadPalette(gUnknown_083FB6F8, cry->paletteNo * 16, 32);
- r9 = TRUE;
- break;
+ }
+ for (i2 = 0; i2 < gPokedexCryScreenPtr->unk0016 * 8; i2++)
+ {
+ sub_811A1C8(i2, 0);
+ }
+ gDexCryScreenState++;
+ break;
+ case 2:
+ sub_811A324();
+ LoadPalette(gUnknown_083FB6F8, cry->paletteNo * 16, 32);
+ r9 = TRUE;
+ break;
}
return r9;
}
-#else
-NAKED u8 LoadCryWaveformWindow(struct CryScreenWindow *cry, u8 arg1)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r9\n"
- "\tmov r6, r8\n"
- "\tpush {r6,r7}\n"
- "\tadds r5, r0, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r2, r1, 24\n"
- "\tmovs r0, 0\n"
- "\tmov r9, r0\n"
- "\tldr r6, _08119E60 @ =gDexCryScreenState\n"
- "\tldrb r0, [r6]\n"
- "\tcmp r0, 0x1\n"
- "\tbeq _08119EE0\n"
- "\tcmp r0, 0x1\n"
- "\tbgt _08119E64\n"
- "\tcmp r0, 0\n"
- "\tbeq _08119E6A\n"
- "\tb _08119F74\n"
- "\t.align 2, 0\n"
- "_08119E60: .4byte gDexCryScreenState\n"
- "_08119E64:\n"
- "\tcmp r0, 0x2\n"
- "\tbeq _08119F60\n"
- "\tb _08119F74\n"
- "_08119E6A:\n"
- "\tldr r4, _08119ECC @ =gSharedMem + 0x1C000\n"
- "\tldrh r0, [r5]\n"
- "\tmovs r1, 0\n"
- "\tstrh r0, [r4, 0x14]\n"
- "\tldrb r0, [r5, 0x5]\n"
- "\tstrb r0, [r4, 0x16]\n"
- "\tstrb r1, [r4, 0x1A]\n"
- "\tstrb r1, [r4, 0x1B]\n"
- "\tstrb r1, [r4, 0x10]\n"
- "\tmovs r0, 0x1C\n"
- "\tstrb r0, [r4, 0x12]\n"
- "\tstrb r1, [r4, 0x11]\n"
- "\tldrb r1, [r5, 0x4]\n"
- "\tlsls r1, 19\n"
- "\tnegs r1, r1\n"
- "\tasrs r1, 16\n"
- "\tadds r0, r2, 0\n"
- "\tmovs r2, 0x1\n"
- "\tbl sub_811A350\n"
- "\tmovs r0, 0\n"
- "\tmov r12, r6\n"
- "\tldr r1, _08119ED0 @ =0x040000d4\n"
- "\tldr r7, _08119ED4 @ =gUnknown_083FB718\n"
- "\tldr r2, _08119ED8 @ =0xfffe4000\n"
- "\tadds r6, r4, r2\n"
- "\tldr r5, _08119EDC @ =0x80000010\n"
- "_08119EA0:\n"
- "\tmovs r3, 0\n"
- "\tadds r4, r0, 0x1\n"
- "\tlsls r2, r0, 5\n"
- "_08119EA6:\n"
- "\tstr r7, [r1]\n"
- "\tadds r0, r2, r3\n"
- "\tlsls r0, 5\n"
- "\tadds r0, r6\n"
- "\tstr r0, [r1, 0x4]\n"
- "\tstr r5, [r1, 0x8]\n"
- "\tldr r0, [r1, 0x8]\n"
- "\tadds r0, r3, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r3, r0, 24\n"
- "\tcmp r3, 0x1F\n"
- "\tbls _08119EA6\n"
- "\tlsls r0, r4, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x6\n"
- "\tbls _08119EA0\n"
- "\tmov r1, r12\n"
- "\tb _08119F50\n"
- "\t.align 2, 0\n"
- "_08119ECC: .4byte gSharedMem + 0x1C000\n"
- "_08119ED0: .4byte 0x040000d4\n"
- "_08119ED4: .4byte gUnknown_083FB718\n"
- "_08119ED8: .4byte 0xfffe4000\n"
- "_08119EDC: .4byte 0x80000010\n"
- "_08119EE0:\n"
- "\tldrb r0, [r5, 0x2]\n"
- "\tlsls r0, 27\n"
- "\tlsrs r7, r0, 16\n"
- "\tldrb r1, [r5, 0x3]\n"
- "\tlsls r1, 12\n"
- "\tldrh r0, [r5]\n"
- "\tlsls r0, 18\n"
- "\tlsrs r0, 23\n"
- "\tadds r1, r0\n"
- "\tlsls r1, 16\n"
- "\tlsrs r6, r1, 16\n"
- "\tmovs r0, 0\n"
- "\tldr r2, _08119F58 @ =gSharedMem + 0x1C000\n"
- "\tmov r8, r2\n"
- "\tmovs r1, 0xC0\n"
- "\tlsls r1, 19\n"
- "\tmov r12, r1\n"
- "_08119F02:\n"
- "\tmovs r3, 0\n"
- "\tadds r4, r0, 0x1\n"
- "\tlsls r5, r0, 6\n"
- "_08119F08:\n"
- "\tlsls r1, r3, 1\n"
- "\tadds r1, r5\n"
- "\tadds r1, r7\n"
- "\tadd r1, r12\n"
- "\tadds r2, r6, 0\n"
- "\tadds r0, r2, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tstrh r2, [r1]\n"
- "\tadds r0, r3, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r3, r0, 24\n"
- "\tcmp r3, 0x1F\n"
- "\tbls _08119F08\n"
- "\tlsls r0, r4, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x6\n"
- "\tbls _08119F02\n"
- "\tmov r2, r8\n"
- "\tldrb r0, [r2, 0x16]\n"
- "\tmovs r4, 0\n"
- "\tcmp r0, 0\n"
- "\tbeq _08119F4E\n"
- "\tmov r5, r8\n"
- "_08119F38:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0\n"
- "\tbl sub_811A1C8\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tldrb r0, [r5, 0x16]\n"
- "\tlsls r0, 3\n"
- "\tcmp r4, r0\n"
- "\tblt _08119F38\n"
- "_08119F4E:\n"
- "\tldr r1, _08119F5C @ =gDexCryScreenState\n"
- "_08119F50:\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r1]\n"
- "\tb _08119F74\n"
- "\t.align 2, 0\n"
- "_08119F58: .4byte gSharedMem + 0x1C000\n"
- "_08119F5C: .4byte gDexCryScreenState\n"
- "_08119F60:\n"
- "\tbl sub_811A324\n"
- "\tldr r0, _08119F84 @ =gUnknown_083FB6F8\n"
- "\tldrb r1, [r5, 0x3]\n"
- "\tlsls r1, 4\n"
- "\tmovs r2, 0x20\n"
- "\tbl LoadPalette\n"
- "\tmovs r0, 0x1\n"
- "\tmov r9, r0\n"
- "_08119F74:\n"
- "\tmov r0, r9\n"
- "\tpop {r3,r4}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_08119F84: .4byte gUnknown_083FB6F8");
-}
-#endif // NONMATCHING
void UpdateCryWaveformWindow(u8 a0)
{
@@ -796,7 +619,7 @@ void sub_811A324(void)
DmaCopy16(3, gSharedMem, VRAM + gPokedexCryScreenPtr->unk0014, 0x1c00);
}
-void sub_811A350(u8 a0, u16 a1, u8 a2)
+void sub_811A350(u8 a0, s16 a1, u8 a2)
{
switch (a0)
{