diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2016-10-27 01:32:53 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2016-10-26 23:32:53 -0700 |
commit | c027821c09ca6cf3470f13d31eaea2548bec5672 (patch) | |
tree | 345fc9060b131d91411da3d17f1db77634b45448 /src | |
parent | 97aff6e40ee6ebcb0361933275de9bad403910e1 (diff) |
decompile more pokedex functions (#72)
* decompile more pokedex functions
* use spaces instead of tabs
* mostly fix up sub_808D690
* fix sub_808DBE8
* decompile sub_808E398
* decompile more pokedex functions
* decompile sub_808E978
* decompile more functions
Diffstat (limited to 'src')
-rw-r--r-- | src/pokedex.c | 716 |
1 files changed, 710 insertions, 6 deletions
diff --git a/src/pokedex.c b/src/pokedex.c index b45a123d5..b67deb84d 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -77,6 +77,16 @@ extern u8 gUnknown_0839FA7C[]; extern u8 gUnknown_0839F67C[]; extern u8 gPokedexMenu_Pal[]; extern u8 gUnknown_0839F73C[]; +extern u8 gUnknown_083A05EC[]; +extern u8 gUnknown_083A05F1[]; +extern struct SpriteTemplate gSpriteTemplate_83A053C; +extern struct SpriteTemplate gSpriteTemplate_83A0524; +extern struct SpriteTemplate gSpriteTemplate_83A0554; +extern struct SpriteTemplate gSpriteTemplate_83A056C; +extern struct SpriteTemplate gSpriteTemplate_83A0584; +extern struct SpriteTemplate gSpriteTemplate_83A059C; +extern struct SpriteTemplate gSpriteTemplate_83A05B4; +extern s16 gSineTable[]; extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); @@ -113,7 +123,7 @@ void sub_8091060(u16); void sub_808CAE4(u8 taskId); void sub_808D198(u8 taskId); bool8 sub_808E208(u8, u8, u8); -bool32 sub_808E82C(void); //Not sure about return type +u8 sub_808E82C(void); void sub_808E0CC(u16, u16); u8 sub_808F210(struct PokedexListItem *, u8); void sub_808F284(struct PokedexListItem *, u8); @@ -139,6 +149,7 @@ u16 sub_808E888(u16); u32 sub_808E8C8(u16, u16, u16); void sub_808EE28(struct Sprite *sprite); u16 sub_8091818(u8, u16, u16, u16); +u8 sub_80918EC(u16 a, s16 b, s16 c, u16 d); void sub_808C02C(void) { @@ -1366,27 +1377,720 @@ void sub_808E398(u8 a, u16 b) } } } - -/* +#ifdef NONMATCHING +//This one's ridiculous. Fix later u16 sub_808E48C(u16 a, u16 b) { - if((gMain.heldKeys & 0x40) || a == 0) + u8 r3; + u8 r5; + u32 r10 = 0; + if(!(gMain.heldKeys & 0x40) || a == 0) { + u8 i; + u16 r6; + //_0808E4B6 if(gMain.heldKeys & 0x80) { - + if(a < gUnknown_0202FFB4->unk60C - 1) + goto _0808E5C4; } //_0808E4CE + + if((gMain.newKeys & 0x20) && a != 0) + { + r6 = a; + //_0808E4E0 + for(i = 0; i < 7; i++) + { + a = sub_8091818(1, a, 0, gUnknown_0202FFB4->unk60C - 1); + } + + gUnknown_0202FFB4->unk62C += (a - r6) * 16; + sub_808E82C(); + sub_808E0CC(a, 0xE); + PlaySE(0x6D); + goto _0808E5A2; + } + //_0808E53C + if(!(gMain.newKeys & 0x10) || a >= gUnknown_0202FFB4->unk60C - 1) + goto _0808E5A2; + + r6 = a; + for(i = 0; i < 7; i++) + { + a = sub_8091818(0, a, 0, gUnknown_0202FFB4->unk60C - 1); + } + + gUnknown_0202FFB4->unk62C += (a - r6) * 16; + sub_808E82C(); + sub_808E0CC(a, 0xE); + PlaySE(0x6D); + goto _0808E5A2; + + _0808E5A2: + if(r10 != 0) + goto _0808E628; + gUnknown_0202FFB4->unk638 = r10; + return a; + + _0808E5C4: + r10 = 2; + a = sub_8091818(0, a, 0, gUnknown_0202FFB4->unk60C - 1); + sub_808E398(2, a); + //goto _0808E60E + sub_808DBE8(2, a, b); + PlaySE(0x6C); } //_0808E5E4 else { - sub_8091818(1, a, 0, gUnknown_0202FFB4->unk60C - 1); + r10 = 1; + a = sub_8091818(1, a, 0, gUnknown_0202FFB4->unk60C - 1); sub_808E398(1, a); + //_0808E60E sub_808DBE8(1, a, b); PlaySE(0x6C); } + //_0808E60E + goto _0808E5A2; + + _0808E628: + r5 = gUnknown_083A05EC[gUnknown_0202FFB4->unk638 / 4]; + r3 = gUnknown_083A05F1[gUnknown_0202FFB4->unk638 / 4]; + gUnknown_0202FFB4->unk62E = r3; + gUnknown_0202FFB4->unk636 = r3; + gUnknown_0202FFB4->unk634 = r5; + gUnknown_0202FFB4->unk62F = r10; + gUnknown_0202FFB4->unk628 = r5; + sub_808E208(gUnknown_0202FFB4->unk62F, gUnknown_0202FFB4->unk634, gUnknown_0202FFB4->unk636); + if(gUnknown_0202FFB4->unk638 <= 0xB) + gUnknown_0202FFB4->unk638++; + return a; +} +#else +__attribute__((naked)) +u16 sub_808E48C(u16 a, u16 b) +{ + 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\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + lsls r1, 16\n\ + lsrs r4, r1, 16\n\ + movs r0, 0\n\ + mov r10, r0\n\ + ldr r1, _0808E52C\n\ + ldrh r2, [r1, 0x2C]\n\ + movs r0, 0x40\n\ + ands r0, r2\n\ + adds r3, r1, 0\n\ + cmp r0, 0\n\ + beq _0808E4B6\n\ + cmp r7, 0\n\ + beq _0808E4B6\n\ + b _0808E5E4\n\ +_0808E4B6:\n\ + movs r0, 0x80\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0808E4CE\n\ + ldr r0, _0808E530\n\ + ldr r0, [r0]\n\ + ldr r1, _0808E534\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r7, r0\n\ + blt _0808E5C4\n\ +_0808E4CE:\n\ + ldrh r1, [r3, 0x2E]\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0808E53C\n\ + cmp r7, 0\n\ + beq _0808E53C\n\ + adds r6, r7, 0\n\ + movs r4, 0\n\ +_0808E4E0:\n\ + ldr r5, _0808E530\n\ + ldr r0, [r5]\n\ + ldr r2, _0808E534\n\ + adds r0, r2\n\ + ldrh r3, [r0]\n\ + subs r3, 0x1\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + movs r0, 0x1\n\ + adds r1, r7, 0\n\ + movs r2, 0\n\ + bl sub_8091818\n\ + adds r7, r0, 0\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x6\n\ + bls _0808E4E0\n\ + ldr r1, [r5]\n\ + ldr r3, _0808E538\n\ + adds r1, r3\n\ + subs r0, r7, r6\n\ + lsls r0, 4\n\ + ldrb r2, [r1]\n\ + adds r0, r2\n\ + strb r0, [r1]\n\ + bl sub_808E82C\n\ + adds r0, r7, 0\n\ + movs r1, 0xE\n\ + bl sub_808E0CC\n\ + movs r0, 0x6D\n\ + bl PlaySE\n\ + b _0808E5A2\n\ + .align 2, 0\n\ +_0808E52C: .4byte gMain\n\ +_0808E530: .4byte gUnknown_0202FFB4\n\ +_0808E534: .4byte 0x0000060c\n\ +_0808E538: .4byte 0x0000062c\n\ +_0808E53C:\n\ + ldrh r1, [r3, 0x2E]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0808E5A2\n\ + ldr r0, _0808E5B8\n\ + ldr r0, [r0]\n\ + ldr r3, _0808E5BC\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r7, r0\n\ + bge _0808E5A2\n\ + adds r6, r7, 0\n\ + movs r4, 0\n\ +_0808E55A:\n\ + ldr r5, _0808E5B8\n\ + ldr r0, [r5]\n\ + ldr r1, _0808E5BC\n\ + adds r0, r1\n\ + ldrh r3, [r0]\n\ + subs r3, 0x1\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + movs r0, 0\n\ + adds r1, r7, 0\n\ + movs r2, 0\n\ + bl sub_8091818\n\ + adds r7, r0, 0\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x6\n\ + bls _0808E55A\n\ + ldr r1, [r5]\n\ + ldr r2, _0808E5C0\n\ + adds r1, r2\n\ + subs r0, r7, r6\n\ + lsls r0, 4\n\ + ldrb r3, [r1]\n\ + adds r0, r3\n\ + strb r0, [r1]\n\ + bl sub_808E82C\n\ + adds r0, r7, 0\n\ + movs r1, 0xE\n\ + bl sub_808E0CC\n\ + movs r0, 0x6D\n\ + bl PlaySE\n\ +_0808E5A2:\n\ + mov r0, r10\n\ + cmp r0, 0\n\ + bne _0808E628\n\ + ldr r0, _0808E5B8\n\ + ldr r0, [r0]\n\ + movs r1, 0xC7\n\ + lsls r1, 3\n\ + adds r0, r1\n\ + mov r2, r10\n\ + strh r2, [r0]\n\ + b _0808E68E\n\ + .align 2, 0\n\ +_0808E5B8: .4byte gUnknown_0202FFB4\n\ +_0808E5BC: .4byte 0x0000060c\n\ +_0808E5C0: .4byte 0x0000062c\n\ +_0808E5C4:\n\ + movs r3, 0x2\n\ + mov r10, r3\n\ + lsls r3, r0, 16\n\ + lsrs r3, 16\n\ + movs r0, 0\n\ + adds r1, r7, 0\n\ + movs r2, 0\n\ + bl sub_8091818\n\ + adds r7, r0, 0\n\ + movs r0, 0x2\n\ + adds r1, r7, 0\n\ + bl sub_808E398\n\ + movs r0, 0x2\n\ + b _0808E60E\n\ +_0808E5E4:\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ + ldr r0, _0808E620\n\ + ldr r0, [r0]\n\ + ldr r1, _0808E624\n\ + adds r0, r1\n\ + ldrh r3, [r0]\n\ + subs r3, 0x1\n\ + lsls r3, 16\n\ + lsrs r3, 16\n\ + movs r0, 0x1\n\ + adds r1, r7, 0\n\ + movs r2, 0\n\ + bl sub_8091818\n\ + adds r7, r0, 0\n\ + movs r0, 0x1\n\ + adds r1, r7, 0\n\ + bl sub_808E398\n\ + movs r0, 0x1\n\ +_0808E60E:\n\ + adds r1, r7, 0\n\ + adds r2, r4, 0\n\ + bl sub_808DBE8\n\ + movs r0, 0x6C\n\ + bl PlaySE\n\ + b _0808E5A2\n\ + .align 2, 0\n\ +_0808E620: .4byte gUnknown_0202FFB4\n\ +_0808E624: .4byte 0x0000060c\n\ +_0808E628:\n\ + ldr r1, _0808E6A0\n\ + ldr r6, _0808E6A4\n\ + ldr r2, [r6]\n\ + movs r3, 0xC7\n\ + lsls r3, 3\n\ + mov r9, r3\n\ + adds r0, r2, r3\n\ + ldrh r0, [r0]\n\ + lsrs r0, 2\n\ + adds r1, r0, r1\n\ + ldrb r5, [r1]\n\ + ldr r1, _0808E6A8\n\ + adds r0, r1\n\ + ldrb r3, [r0]\n\ + ldr r0, _0808E6AC\n\ + adds r2, r0\n\ + strb r3, [r2]\n\ + ldr r1, [r6]\n\ + ldr r2, _0808E6B0\n\ + mov r8, r2\n\ + adds r0, r1, r2\n\ + strh r3, [r0]\n\ + ldr r4, _0808E6B4\n\ + adds r0, r1, r4\n\ + strh r5, [r0]\n\ + ldr r3, _0808E6B8\n\ + adds r1, r3\n\ + mov r0, r10\n\ + strb r0, [r1]\n\ + ldr r2, [r6]\n\ + lsrs r5, 1\n\ + movs r1, 0xC5\n\ + lsls r1, 3\n\ + adds r0, r2, r1\n\ + strh r5, [r0]\n\ + adds r3, r2, r3\n\ + ldrb r0, [r3]\n\ + adds r4, r2, r4\n\ + ldrb r1, [r4]\n\ + add r2, r8\n\ + ldrb r2, [r2]\n\ + bl sub_808E208\n\ + ldr r0, [r6]\n\ + mov r2, r9\n\ + adds r1, r0, r2\n\ + ldrh r0, [r1]\n\ + cmp r0, 0xB\n\ + bhi _0808E68E\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ +_0808E68E:\n\ + adds r0, r7, 0\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\ +_0808E6A0: .4byte gUnknown_083A05EC\n\ +_0808E6A4: .4byte gUnknown_0202FFB4\n\ +_0808E6A8: .4byte gUnknown_083A05F1\n\ +_0808E6AC: .4byte 0x0000062e\n\ +_0808E6B0: .4byte 0x00000636\n\ +_0808E6B4: .4byte 0x00000634\n\ +_0808E6B8: .4byte 0x0000062f\n\ + .syntax divided\n"); +} +#endif + +void sub_808E6BC(void) +{ + u16 i; + + for(i = 0; i < 4; i++) + { + u16 spriteId = gUnknown_0202FFB4->unk61E[i]; + + if(gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF) + gUnknown_0202FFB4->unk626 = spriteId; + } +} + +u8 sub_808E71C(void) +{ + u16 r2; + u16 r3; + u16 r4 = gUnknown_0202FFB4->unk60E; + + if((gMain.newKeys & 0x40) && r4) + { + r2 = r4; + while(r2 != 0) + { + r2 = sub_8091818(1, r2, 0, gUnknown_0202FFB4->unk60C - 1); + + if(gUnknown_0202FFB4->unk0[r2].seen) + { + //goto _0808E78C; + r4 = r2; + break; + } + } + + if(gUnknown_0202FFB4->unk60E == r4) + return 0; + else + { + gUnknown_0202FFB4->unk60E = r4; + //goto _0808E80C + gUnknown_0202FFB4->unk62C -= 16; + return 1; + } + } + //_0808E7A4 + else if((gMain.newKeys & 0x80) && r4 < gUnknown_0202FFB4->unk60C - 1) + { + r2 = r4; + while(r2 < gUnknown_0202FFB4->unk60C - 1) + { + r2 = sub_8091818(0, r2, 0, gUnknown_0202FFB4->unk60C - 1); + + if(gUnknown_0202FFB4->unk0[r2].seen) + { + r4 = r2; + break; + } + } + + if(gUnknown_0202FFB4->unk60E == r4) + return 0; + else + { + gUnknown_0202FFB4->unk60E = r4; + gUnknown_0202FFB4->unk62C += 16; + return 1; + } + } + return 0; +} + +u8 sub_808E82C(void) +{ + u16 i; + + for(i = 0; i < 4; i++) + { + if(gUnknown_0202FFB4->unk61E[i] != 0xFFFF) + { + DestroySprite(&gSprites[gUnknown_0202FFB4->unk61E[i]]); + gUnknown_0202FFB4->unk61E[i] |= 0xFFFF; + } + } + return 0; +} + +u16 sub_808E888(u16 a1) +{ + if(a1 > 385 || gUnknown_0202FFB4->unk0[a1].a == 0xFFFF) + return 0xFFFF; + else if(gUnknown_0202FFB4->unk0[a1].seen) + return gUnknown_0202FFB4->unk0[a1].a; + else + return 0; +} + +u32 sub_808E8C8(u16 a, u16 b, u16 c) +{ + u8 i; + + for(i = 0; i < 4; i++) + { + if(gUnknown_0202FFB4->unk61E[i] == 0xFFFF) + { + u8 spriteId = sub_80918EC(a, (s16)b, (s16)c, i); + + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.priority = 3; + gSprites[spriteId].data0 = 0; + gSprites[spriteId].data1 = i; + gSprites[spriteId].data2 = NationalPokedexNumToSpecies(a); + gUnknown_0202FFB4->unk61E[i] = spriteId; + return spriteId; + } + } + return 0xFFFF; +} + +void sub_808E978(u8 a) +{ + u8 spriteId; + u16 r5; + + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 0xB8, 4, 0); + gSprites[spriteId].data1 = 0; + + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 0xB8, 0x9C, 0); + gSprites[spriteId].data1 = 1; + gSprites[spriteId].vFlip = 1; + + CreateSprite(&gSpriteTemplate_83A0524, 0xEA, 0x14, 0); + CreateSprite(&gSpriteTemplate_83A0554, 0x10, 0x8A, 0); + + spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x30, 0x8A, 0); + StartSpriteAnim(&gSprites[spriteId], 3); + + spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x10, 0x9E, 0); + StartSpriteAnim(&gSprites[spriteId], 2); + gSprites[spriteId].data2 = 0x80; + + spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x30, 0x9E, 0); + StartSpriteAnim(&gSprites[spriteId], 1); + + spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 0x50, 2); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 30; + gSprites[spriteId].data0 = 0x1E; + gSprites[spriteId].data1 = 0; + + spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 0x50, 2); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 31; + gSprites[spriteId].data0 = 0x1F; + gSprites[spriteId].data1 = 0x80; + + if(a == 0) + { + u32 _a; + + CreateSprite(&gSpriteTemplate_83A0584, 0x20, 0x28, 1); + + spriteId = CreateSprite(&gSpriteTemplate_83A0584, 0x20, 0x48, 1); + StartSpriteAnim(&gSprites[spriteId], 1); + _a = 0; + + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x30, 1); + r5 = gUnknown_0202FFB4->unk61A / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if(r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = 1; + + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x30, 1); + r5 = (gUnknown_0202FFB4->unk61A % 100) / 10; + if(r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = 1; + + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x30, 1); + r5 = (gUnknown_0202FFB4->unk61A % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + _a = 0; + + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x50, 1); + r5 = gUnknown_0202FFB4->unk61C / 100; + StartSpriteAnim(&gSprites[spriteId], r5); + if(r5 != 0) + _a = 1; + else + gSprites[spriteId].invisible = 1; + + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x50, 1); + r5 = (gUnknown_0202FFB4->unk61C % 100) / 10; + if(r5 != 0 || _a != 0) + StartSpriteAnim(&gSprites[spriteId], r5); + else + gSprites[spriteId].invisible = 1; + + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x50, 1); + r5 = (gUnknown_0202FFB4->unk61C % 100) % 10; + StartSpriteAnim(&gSprites[spriteId], r5); + + spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 0x8C, 0x60, 1); + gSprites[spriteId].invisible = 1; + } + else + { + spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 0x8C, 0x50, 1); + gSprites[spriteId].invisible = 1; + } +} + +void nullsub_58(struct Sprite *sprite) +{ +} + +void sub_808ED94(struct Sprite *sprite) +{ + if(gUnknown_0202FFB4->unk64A != 0) + DestroySprite(sprite); +} + +void sub_808EDB8(struct Sprite *sprite) +{ + sprite->oam.priority = 0; + sprite->oam.affineMode = 0; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + if(sprite->pos1.x != 0x30 || sprite->pos1.y != 0x38) + { + if(sprite->pos1.x > 0x30) + sprite->pos1.x--; + if(sprite->pos1.x < 0x30) + sprite->pos1.x++; + if(sprite->pos1.y > 0x38) + sprite->pos1.y--; + if(sprite->pos1.y <0x38) + sprite->pos1.y++; + } + //_0808EE1C + else + sprite->callback = nullsub_58; +} + +void sub_808EE28(struct Sprite *sprite) +{ + u8 data1 = sprite->data1; + if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3) + { + DestroySprite(sprite); + gUnknown_0202FFB4->unk61E[data1] = 0xFFFF; + } + else + { + //_0808EE58 + s32 var; + + sprite->pos2.y = gSineTable[(u8)sprite->data5] * 76 / 256; + var = 0x10000 / gSineTable[sprite->data5 + 0x40]; + if((u32)var > 0xFFFF) + var = 0xFFFF; + SetOamMatrix(sprite->data1 + 1, 0x100, 0, 0, var); + sprite->oam.matrixNum = data1 + 1; + + //ToDo: clean up these inequalities + if((u16)(sprite->data5 + 0x3F) <= 0x7E) + { + sprite->invisible = 0; + sprite->data0 = 1; + } + else + { + sprite->invisible = 1; + } + //_0808EEF8 + if((u16)(sprite->data5 + 0x3F) > 0x7E && sprite->data0 != 0) + { + DestroySprite(sprite); + gUnknown_0202FFB4->unk61E[data1] = 0xFFFF; + } + } + //_0808EF16 +} + +void sub_808EF38(struct Sprite *sprite) +{ + if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3) + DestroySprite(sprite); + else + sprite->pos2.y = gUnknown_0202FFB4->unk60E * 120 / (gUnknown_0202FFB4->unk60C - 1); +} + +void sub_808EF8C(struct Sprite *sprite) +{ + if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3) + DestroySprite(sprite); + else + { + u8 r0; + + if(sprite->data1 != 0) + { + if(gUnknown_0202FFB4->unk60E == gUnknown_0202FFB4->unk60C - 1) + sprite->invisible = 1; + else + sprite->invisible = 0; + r0 = sprite->data2; + } + else + { + if(gUnknown_0202FFB4->unk60E == 0) + sprite->invisible = 1; + else + sprite->invisible = 0; + r0 = sprite->data2 - 0x80; + } + sprite->pos2.y = gSineTable[r0] / 64; + sprite->data2 = sprite->data2 + 8; + if(gUnknown_0202FFB4->unk650 == 0 && gUnknown_0202FFB4->unk654 == 0 && sprite->invisible == 0) + sprite->invisible = 0; + else + sprite->invisible = 1; + } +} + +void sub_808F08C(struct Sprite *sprite) +{ + if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3) + DestroySprite(sprite); +} + +/* +//FixMe +void sub_808F0B4(struct Sprite *sprite) +{ + if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3) + DestroySprite(sprite); + else + { + s16 r3; + u8 unk = gUnknown_0202FFB4->unk62C + sprite->data1; + u16 foo = gSineTable[unk]; + u16 bar = gSineTable[unk + 0x40]; + u8 unk2 = sprite->data0; + + SetOamMatrix(unk2, foo, bar, -foo, bar); + + r3 = gSineTable[sprite->data1 + gUnknown_0202FFB4->unk62C]; + sprite->pos2.x = gSineTable[sprite->data1 + gUnknown_0202FFB4->unk62C + 0x40] * 5 / 256; + sprite->pos2.y = r3 / 8; + } } */ |