diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-07-12 08:52:07 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-07-12 08:52:07 -0400 |
commit | 33c5532c12384c3ebe80b887b06902f72e4db905 (patch) | |
tree | 7c3d087ae7ef3ef667548a02683049b01ca16507 | |
parent | a6e94b011bdbea3550ecae0bd167dd53e005e75a (diff) |
Match sub_80F1BC8
-rw-r--r-- | src/pokenav.c | 323 |
1 files changed, 19 insertions, 304 deletions
diff --git a/src/pokenav.c b/src/pokenav.c index 97d273a9c..924e4774d 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1897,11 +1897,8 @@ void sub_80F1B8C(u8 arg0) while (sub_80F1BC8(arg0)); } -#ifdef NONMATCHING -// very close, but for some reason, (i + 1) is being stored in sp[0x10] bool8 sub_80F1BC8(u8 arg0) { - u16 i, j; u16 animNum; u16 topOffset; u16 height; @@ -1911,12 +1908,19 @@ bool8 sub_80F1BC8(u8 arg0) switch (gPokenavStructPtr->unk306) { case 0: + { sub_80F2458(arg0); break; + } case 1: + { sub_80F2514(arg0); break; + } case 2: + { + u16 i, j; + switch (arg0) { case 0: @@ -1960,20 +1964,22 @@ bool8 sub_80F1BC8(u8 arg0) for (j = 0; j < 4; j++) { spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0); - if (spriteId != MAX_SPRITES) + if (spriteId == MAX_SPRITES) + return FALSE; + gPokenavStructPtr->unk320[i][j] = &gSprites[spriteId]; + gPokenavStructPtr->unk320[i][j]->data[0] = i; + gPokenavStructPtr->unk320[i][j]->data[1] = j; + gPokenavStructPtr->unk320[i][j]->data[2] = j * 32 + 152; + gPokenavStructPtr->unk320[i][j]->data[3] = j * 32 + 256; + StartSpriteAnim(gPokenavStructPtr->unk320[i][j], animNum++); + + if ((arg0 == 2 || arg0 == 0) && i > 2) { - gPokenavStructPtr->unk320[i][j] = &gSprites[spriteId]; - gPokenavStructPtr->unk320[i][j]->data[0] = i; - gPokenavStructPtr->unk320[i][j]->data[1] = j; - gPokenavStructPtr->unk320[i][j]->data[2] = j * 32 + 152; - gPokenavStructPtr->unk320[i][j]->data[3] = j * 32 + 256; - StartSpriteAnim(gPokenavStructPtr->unk320[i][j], animNum++); - - if ((arg0 == 2 || arg0 == 0) && i > 2) - gPokenavStructPtr->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1); + gPokenavStructPtr->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1); } } } + } break; default: return FALSE; @@ -1982,297 +1988,6 @@ bool8 sub_80F1BC8(u8 arg0) gPokenavStructPtr->unk306++; return TRUE; } -#else -NAKED -bool8 sub_80F1BC8(u8 arg0) -{ - asm(".syntax 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\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - ldr r1, _080F1BF4 @ =gPokenavStructPtr\n\ - ldr r2, [r1]\n\ - ldr r3, _080F1BF8 @ =0x00000306\n\ - adds r0, r2, r3\n\ - ldrh r0, [r0]\n\ - adds r3, r1, 0\n\ - cmp r0, 0x1\n\ - beq _080F1C0A\n\ - cmp r0, 0x1\n\ - bgt _080F1BFC\n\ - cmp r0, 0\n\ - beq _080F1C02\n\ - b _080F1DC4\n\ - .align 2, 0\n\ -_080F1BF4: .4byte gPokenavStructPtr\n\ -_080F1BF8: .4byte 0x00000306\n\ -_080F1BFC:\n\ - cmp r0, 0x2\n\ - beq _080F1C12\n\ - b _080F1DC4\n\ -_080F1C02:\n\ - mov r0, r9\n\ - bl sub_80F2458\n\ - b _080F1DC8\n\ -_080F1C0A:\n\ - mov r0, r9\n\ - bl sub_80F2514\n\ - b _080F1DC8\n\ -_080F1C12:\n\ - mov r4, r9\n\ - cmp r4, 0x1\n\ - beq _080F1C40\n\ - cmp r4, 0x1\n\ - bgt _080F1C22\n\ - cmp r4, 0\n\ - beq _080F1C2A\n\ - b _080F1DC4\n\ -_080F1C22:\n\ - mov r5, r9\n\ - cmp r5, 0x2\n\ - beq _080F1C54\n\ - b _080F1DC4\n\ -_080F1C2A:\n\ - movs r0, 0x2A\n\ - str r0, [sp, 0x4]\n\ - movs r1, 0x14\n\ - str r1, [sp, 0x8]\n\ - ldr r4, _080F1C3C @ =0x0000030e\n\ - adds r1, r2, r4\n\ - movs r0, 0x5\n\ - b _080F1C62\n\ - .align 2, 0\n\ -_080F1C3C: .4byte 0x0000030e\n\ -_080F1C40:\n\ - movs r5, 0x38\n\ - str r5, [sp, 0x4]\n\ - movs r0, 0x14\n\ - str r0, [sp, 0x8]\n\ - ldr r4, _080F1C50 @ =0x0000030e\n\ - adds r1, r2, r4\n\ - movs r0, 0x3\n\ - b _080F1C62\n\ - .align 2, 0\n\ -_080F1C50: .4byte 0x0000030e\n\ -_080F1C54:\n\ - movs r5, 0x28\n\ - str r5, [sp, 0x4]\n\ - movs r0, 0x10\n\ - str r0, [sp, 0x8]\n\ - ldr r4, _080F1CDC @ =0x0000030e\n\ - adds r1, r2, r4\n\ - movs r0, 0x6\n\ -_080F1C62:\n\ - strb r0, [r1]\n\ - movs r5, 0\n\ - str r5, [sp]\n\ - mov r8, r5\n\ - adds r1, r3, 0\n\ - ldr r0, [r1]\n\ - ldr r2, _080F1CDC @ =0x0000030e\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r8, r0\n\ - blt _080F1C7E\n\ - b _080F1DC8\n\ -_080F1C7E:\n\ - ldr r4, [sp, 0x8]\n\ - mov r3, r8\n\ - muls r3, r4\n\ - ldr r5, [sp, 0x4]\n\ - adds r0, r5, r3\n\ - subs r0, 0x8\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - ldr r4, [r1]\n\ - mov r2, r8\n\ - lsls r1, r2, 1\n\ - movs r5, 0xC5\n\ - lsls r5, 2\n\ - adds r2, r4, r5\n\ - adds r2, r1\n\ - lsls r1, r0, 8\n\ - adds r0, 0x11\n\ - orrs r1, r0\n\ - strh r1, [r2]\n\ - mov r0, r9\n\ - cmp r0, 0\n\ - bne _080F1CF2\n\ - ldr r1, _080F1CE0 @ =0x00006db2\n\ - adds r0, r4, r1\n\ - mov r2, r8\n\ - adds r1, r0, r2\n\ - ldrb r0, [r1]\n\ - cmp r0, 0\n\ - bne _080F1CE8\n\ - movs r5, 0\n\ - ldr r0, _080F1CE4 @ =gPokenavStructPtr\n\ - ldr r0, [r0]\n\ - lsls r2, 4\n\ - movs r3, 0xC8\n\ - lsls r3, 2\n\ - adds r1, r0, r3\n\ - movs r3, 0\n\ -_080F1CC8:\n\ - lsls r0, r5, 2\n\ - adds r0, r2\n\ - adds r0, r1, r0\n\ - str r3, [r0]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x3\n\ - bls _080F1CC8\n\ - b _080F1D92\n\ - .align 2, 0\n\ -_080F1CDC: .4byte 0x0000030e\n\ -_080F1CE0: .4byte 0x00006db2\n\ -_080F1CE4: .4byte gPokenavStructPtr\n\ -_080F1CE8:\n\ - ldrb r0, [r1]\n\ - subs r0, 0x1\n\ - lsls r0, 18\n\ - lsrs r0, 16\n\ - str r0, [sp]\n\ -_080F1CF2:\n\ - movs r5, 0\n\ - ldr r4, [sp, 0x4]\n\ - adds r0, r4, r3\n\ - lsls r0, 16\n\ - mov r10, r0\n\ -_080F1CFC:\n\ - lsls r6, r5, 5\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - adds r7, r6, r0\n\ - lsls r1, r7, 16\n\ - asrs r1, 16\n\ - ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\ - mov r3, r10\n\ - asrs r2, r3, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - cmp r3, 0x40\n\ - beq _080F1DC4\n\ - ldr r0, _080F1DB8 @ =gPokenavStructPtr\n\ - ldr r2, [r0]\n\ - lsls r1, r5, 2\n\ - mov r4, r8\n\ - lsls r0, r4, 4\n\ - adds r1, r0\n\ - movs r0, 0xC8\n\ - lsls r0, 2\n\ - adds r2, r0\n\ - adds r4, r2, r1\n\ - lsls r0, r3, 4\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - ldr r1, _080F1DBC @ =gSprites\n\ - adds r0, r1\n\ - str r0, [r4]\n\ - mov r1, r8\n\ - strh r1, [r0, 0x2E]\n\ - ldr r0, [r4]\n\ - strh r5, [r0, 0x30]\n\ - ldr r1, [r4]\n\ - adds r0, r6, 0\n\ - adds r0, 0x98\n\ - strh r0, [r1, 0x32]\n\ - ldr r0, [r4]\n\ - strh r7, [r0, 0x34]\n\ - ldr r0, [r4]\n\ - ldr r1, [sp]\n\ - adds r2, r1, 0x1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - str r2, [sp]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - bl StartSpriteAnim\n\ - mov r2, r9\n\ - cmp r2, 0x2\n\ - beq _080F1D6E\n\ - cmp r2, 0\n\ - bne _080F1D88\n\ -_080F1D6E:\n\ - mov r3, r8\n\ - cmp r3, 0x2\n\ - bls _080F1D88\n\ - movs r0, 0x1\n\ - bl IndexOfSpritePaletteTag\n\ - ldr r3, [r4]\n\ - lsls r0, 4\n\ - ldrb r2, [r3, 0x5]\n\ - movs r1, 0xF\n\ - ands r1, r2\n\ - orrs r1, r0\n\ - strb r1, [r3, 0x5]\n\ -_080F1D88:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x3\n\ - bls _080F1CFC\n\ -_080F1D92:\n\ - mov r0, r8\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r8, r0\n\ - ldr r1, _080F1DB8 @ =gPokenavStructPtr\n\ - ldr r0, [r1]\n\ - ldr r4, _080F1DC0 @ =0x0000030e\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r8, r0\n\ - bge _080F1DB0\n\ - b _080F1C7E\n\ -_080F1DB0:\n\ - b _080F1DC8\n\ - .align 2, 0\n\ -_080F1DB4: .4byte gSpriteTemplate_83E4454\n\ -_080F1DB8: .4byte gPokenavStructPtr\n\ -_080F1DBC: .4byte gSprites\n\ -_080F1DC0: .4byte 0x0000030e\n\ -_080F1DC4:\n\ - movs r0, 0\n\ - b _080F1DD8\n\ -_080F1DC8:\n\ - ldr r0, _080F1DE8 @ =gPokenavStructPtr\n\ - ldr r1, [r0]\n\ - ldr r5, _080F1DEC @ =0x00000306\n\ - adds r1, r5\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ - movs r0, 0x1\n\ -_080F1DD8:\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 {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080F1DE8: .4byte gPokenavStructPtr\n\ -_080F1DEC: .4byte 0x00000306\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_80F1DF0(void) { |