diff options
-rw-r--r-- | asm/pokedex.s | 1538 | ||||
-rw-r--r-- | include/sprite.h | 76 | ||||
-rw-r--r-- | src/pokedex.c | 716 |
3 files changed, 748 insertions, 1582 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s index 439ffd35d..0c9f97432 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -6,1544 +6,6 @@ .text - thumb_func_start sub_808E48C -sub_808E48C: @ 808E48C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - movs r0, 0 - mov r10, r0 - ldr r1, _0808E52C @ =gMain - ldrh r2, [r1, 0x2C] - movs r0, 0x40 - ands r0, r2 - adds r3, r1, 0 - cmp r0, 0 - beq _0808E4B6 - cmp r7, 0 - beq _0808E4B6 - b _0808E5E4 -_0808E4B6: - movs r0, 0x80 - ands r0, r2 - cmp r0, 0 - beq _0808E4CE - ldr r0, _0808E530 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r1, _0808E534 @ =0x0000060c - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r7, r0 - blt _0808E5C4 -_0808E4CE: - ldrh r1, [r3, 0x2E] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0808E53C - cmp r7, 0 - beq _0808E53C - adds r6, r7, 0 - movs r4, 0 -_0808E4E0: - ldr r5, _0808E530 @ =gUnknown_0202FFB4 - ldr r0, [r5] - ldr r2, _0808E534 @ =0x0000060c - adds r0, r2 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0 - bl sub_8091818 - adds r7, r0, 0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _0808E4E0 - ldr r1, [r5] - ldr r3, _0808E538 @ =0x0000062c - adds r1, r3 - subs r0, r7, r6 - lsls r0, 4 - ldrb r2, [r1] - adds r0, r2 - strb r0, [r1] - bl sub_808E82C - adds r0, r7, 0 - movs r1, 0xE - bl sub_808E0CC - movs r0, 0x6D - bl PlaySE - b _0808E5A2 - .align 2, 0 -_0808E52C: .4byte gMain -_0808E530: .4byte gUnknown_0202FFB4 -_0808E534: .4byte 0x0000060c -_0808E538: .4byte 0x0000062c -_0808E53C: - ldrh r1, [r3, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0808E5A2 - ldr r0, _0808E5B8 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r3, _0808E5BC @ =0x0000060c - adds r0, r3 - ldrh r0, [r0] - subs r0, 0x1 - cmp r7, r0 - bge _0808E5A2 - adds r6, r7, 0 - movs r4, 0 -_0808E55A: - ldr r5, _0808E5B8 @ =gUnknown_0202FFB4 - ldr r0, [r5] - ldr r1, _0808E5BC @ =0x0000060c - adds r0, r1 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0 - adds r1, r7, 0 - movs r2, 0 - bl sub_8091818 - adds r7, r0, 0 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _0808E55A - ldr r1, [r5] - ldr r2, _0808E5C0 @ =0x0000062c - adds r1, r2 - subs r0, r7, r6 - lsls r0, 4 - ldrb r3, [r1] - adds r0, r3 - strb r0, [r1] - bl sub_808E82C - adds r0, r7, 0 - movs r1, 0xE - bl sub_808E0CC - movs r0, 0x6D - bl PlaySE -_0808E5A2: - mov r0, r10 - cmp r0, 0 - bne _0808E628 - ldr r0, _0808E5B8 @ =gUnknown_0202FFB4 - ldr r0, [r0] - movs r1, 0xC7 - lsls r1, 3 - adds r0, r1 - mov r2, r10 - strh r2, [r0] - b _0808E68E - .align 2, 0 -_0808E5B8: .4byte gUnknown_0202FFB4 -_0808E5BC: .4byte 0x0000060c -_0808E5C0: .4byte 0x0000062c -_0808E5C4: - movs r3, 0x2 - mov r10, r3 - lsls r3, r0, 16 - lsrs r3, 16 - movs r0, 0 - adds r1, r7, 0 - movs r2, 0 - bl sub_8091818 - adds r7, r0, 0 - movs r0, 0x2 - adds r1, r7, 0 - bl sub_808E398 - movs r0, 0x2 - b _0808E60E -_0808E5E4: - movs r0, 0x1 - mov r10, r0 - ldr r0, _0808E620 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r1, _0808E624 @ =0x0000060c - adds r0, r1 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0x1 - adds r1, r7, 0 - movs r2, 0 - bl sub_8091818 - adds r7, r0, 0 - movs r0, 0x1 - adds r1, r7, 0 - bl sub_808E398 - movs r0, 0x1 -_0808E60E: - adds r1, r7, 0 - adds r2, r4, 0 - bl sub_808DBE8 - movs r0, 0x6C - bl PlaySE - b _0808E5A2 - .align 2, 0 -_0808E620: .4byte gUnknown_0202FFB4 -_0808E624: .4byte 0x0000060c -_0808E628: - ldr r1, _0808E6A0 @ =gUnknown_083A05EC - ldr r6, _0808E6A4 @ =gUnknown_0202FFB4 - ldr r2, [r6] - movs r3, 0xC7 - lsls r3, 3 - mov r9, r3 - adds r0, r2, r3 - ldrh r0, [r0] - lsrs r0, 2 - adds r1, r0, r1 - ldrb r5, [r1] - ldr r1, _0808E6A8 @ =gUnknown_083A05F1 - adds r0, r1 - ldrb r3, [r0] - ldr r0, _0808E6AC @ =0x0000062e - adds r2, r0 - strb r3, [r2] - ldr r1, [r6] - ldr r2, _0808E6B0 @ =0x00000636 - mov r8, r2 - adds r0, r1, r2 - strh r3, [r0] - ldr r4, _0808E6B4 @ =0x00000634 - adds r0, r1, r4 - strh r5, [r0] - ldr r3, _0808E6B8 @ =0x0000062f - adds r1, r3 - mov r0, r10 - strb r0, [r1] - ldr r2, [r6] - lsrs r5, 1 - movs r1, 0xC5 - lsls r1, 3 - adds r0, r2, r1 - strh r5, [r0] - adds r3, r2, r3 - ldrb r0, [r3] - adds r4, r2, r4 - ldrb r1, [r4] - add r2, r8 - ldrb r2, [r2] - bl sub_808E208 - ldr r0, [r6] - mov r2, r9 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, 0xB - bhi _0808E68E - adds r0, 0x1 - strh r0, [r1] -_0808E68E: - adds r0, r7, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808E6A0: .4byte gUnknown_083A05EC -_0808E6A4: .4byte gUnknown_0202FFB4 -_0808E6A8: .4byte gUnknown_083A05F1 -_0808E6AC: .4byte 0x0000062e -_0808E6B0: .4byte 0x00000636 -_0808E6B4: .4byte 0x00000634 -_0808E6B8: .4byte 0x0000062f - thumb_func_end sub_808E48C - - thumb_func_start sub_808E6BC -sub_808E6BC: @ 808E6BC - push {r4-r7,lr} - movs r4, 0 - ldr r0, _0808E708 @ =gUnknown_0202FFB4 - mov r12, r0 - ldr r6, _0808E70C @ =gSprites - ldr r5, _0808E710 @ =0x0000ffff -_0808E6C8: - mov r1, r12 - ldr r3, [r1] - lsls r1, r4, 1 - ldr r2, _0808E714 @ =0x0000061e - adds r0, r3, r2 - adds r0, r1 - ldrh r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r6 - movs r7, 0x24 - ldrsh r0, [r1, r7] - cmp r0, 0 - bne _0808E6F8 - movs r7, 0x26 - ldrsh r0, [r1, r7] - cmp r0, 0 - bne _0808E6F8 - cmp r2, r5 - beq _0808E6F8 - ldr r1, _0808E718 @ =0x00000626 - adds r0, r3, r1 - strh r2, [r0] -_0808E6F8: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _0808E6C8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808E708: .4byte gUnknown_0202FFB4 -_0808E70C: .4byte gSprites -_0808E710: .4byte 0x0000ffff -_0808E714: .4byte 0x0000061e -_0808E718: .4byte 0x00000626 - thumb_func_end sub_808E6BC - - thumb_func_start sub_808E71C -sub_808E71C: @ 808E71C - push {r4-r6,lr} - ldr r3, _0808E77C @ =gUnknown_0202FFB4 - ldr r0, [r3] - ldr r1, _0808E780 @ =0x0000060e - adds r0, r1 - ldrh r4, [r0] - ldr r2, _0808E784 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0808E7A4 - cmp r4, 0 - beq _0808E7A4 - adds r2, r4, 0 - adds r5, r3, 0 -_0808E73C: - ldr r0, [r5] - ldr r1, _0808E788 @ =0x0000060c - adds r0, r1 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0x1 - adds r1, r2, 0 - movs r2, 0 - bl sub_8091818 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, [r5] - lsls r1, r2, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - bne _0808E78C - cmp r2, 0 - bne _0808E73C -_0808E76A: - ldr r0, _0808E77C @ =gUnknown_0202FFB4 - ldr r1, [r0] - ldr r0, _0808E780 @ =0x0000060e - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r4 - bne _0808E790 - b _0808E824 - .align 2, 0 -_0808E77C: .4byte gUnknown_0202FFB4 -_0808E780: .4byte 0x0000060e -_0808E784: .4byte gMain -_0808E788: .4byte 0x0000060c -_0808E78C: - adds r4, r2, 0 - b _0808E76A -_0808E790: - strh r4, [r2] - ldr r0, _0808E79C @ =0x0000062c - adds r1, r0 - ldrb r0, [r1] - subs r0, 0x10 - b _0808E80C - .align 2, 0 -_0808E79C: .4byte 0x0000062c -_0808E7A0: - adds r4, r2, 0 - b _0808E7F4 -_0808E7A4: - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0808E824 - ldr r0, [r3] - ldr r1, _0808E814 @ =0x0000060c - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r4, r0 - bge _0808E824 - adds r2, r4, 0 - adds r6, r3, 0 - adds r5, r1, 0 -_0808E7C2: - ldr r0, [r6] - adds r0, r5 - ldrh r3, [r0] - subs r3, 0x1 - lsls r3, 16 - lsrs r3, 16 - movs r0, 0 - adds r1, r2, 0 - movs r2, 0 - bl sub_8091818 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r1, [r6] - lsls r0, r2, 2 - adds r0, r1, r0 - ldrb r0, [r0, 0x2] - lsls r0, 31 - cmp r0, 0 - bne _0808E7A0 - adds r0, r1, r5 - ldrh r0, [r0] - subs r0, 0x1 - cmp r2, r0 - blt _0808E7C2 -_0808E7F4: - ldr r0, _0808E818 @ =gUnknown_0202FFB4 - ldr r1, [r0] - ldr r0, _0808E81C @ =0x0000060e - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r4 - beq _0808E824 - strh r4, [r2] - ldr r0, _0808E820 @ =0x0000062c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x10 -_0808E80C: - strb r0, [r1] - movs r0, 0x1 - b _0808E826 - .align 2, 0 -_0808E814: .4byte 0x0000060c -_0808E818: .4byte gUnknown_0202FFB4 -_0808E81C: .4byte 0x0000060e -_0808E820: .4byte 0x0000062c -_0808E824: - movs r0, 0 -_0808E826: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_808E71C - - thumb_func_start sub_808E82C -sub_808E82C: @ 808E82C - push {r4-r7,lr} - movs r5, 0 - ldr r6, _0808E878 @ =gUnknown_0202FFB4 - ldr r7, _0808E87C @ =0x0000ffff -_0808E834: - ldr r0, [r6] - lsls r4, r5, 1 - ldr r1, _0808E880 @ =0x0000061e - adds r0, r1 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, r7 - beq _0808E864 - adds r1, r0, 0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0808E884 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r1, [r6] - ldr r0, _0808E880 @ =0x0000061e - adds r1, r0 - adds r1, r4 - ldrh r2, [r1] - adds r0, r7, 0 - orrs r0, r2 - strh r0, [r1] -_0808E864: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _0808E834 - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808E878: .4byte gUnknown_0202FFB4 -_0808E87C: .4byte 0x0000ffff -_0808E880: .4byte 0x0000061e -_0808E884: .4byte gSprites - thumb_func_end sub_808E82C - - thumb_func_start sub_808E888 -sub_808E888: @ 808E888 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _0808E8A8 @ =0x00000181 - cmp r2, r0 - bhi _0808E8A4 - ldr r0, _0808E8AC @ =gUnknown_0202FFB4 - ldr r1, [r0] - lsls r0, r2, 2 - adds r2, r1, r0 - ldrh r1, [r2] - ldr r0, _0808E8B0 @ =0x0000ffff - cmp r1, r0 - bne _0808E8B4 -_0808E8A4: - ldr r0, _0808E8B0 @ =0x0000ffff - b _0808E8C2 - .align 2, 0 -_0808E8A8: .4byte 0x00000181 -_0808E8AC: .4byte gUnknown_0202FFB4 -_0808E8B0: .4byte 0x0000ffff -_0808E8B4: - ldrb r0, [r2, 0x2] - lsls r0, 31 - cmp r0, 0 - bne _0808E8C0 - movs r0, 0 - b _0808E8C2 -_0808E8C0: - ldrh r0, [r2] -_0808E8C2: - pop {r1} - bx r1 - thumb_func_end sub_808E888 - - thumb_func_start sub_808E8C8 -sub_808E8C8: @ 808E8C8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r2, 16 - lsrs r2, 16 - movs r6, 0 - ldr r0, _0808E94C @ =gUnknown_0202FFB4 - mov r9, r0 - ldr r3, _0808E950 @ =0x0000ffff - lsls r1, 16 -_0808E8E4: - mov r4, r9 - ldr r0, [r4] - lsls r7, r6, 1 - ldr r4, _0808E954 @ =0x0000061e - adds r0, r4 - adds r0, r7 - ldrh r0, [r0] - cmp r0, r3 - bne _0808E95C - lsls r2, 16 - mov r0, r8 - asrs r1, 16 - asrs r2, 16 - adds r3, r6, 0 - bl sub_80918EC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0808E958 @ =gSprites - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - adds r4, r0 - ldrb r1, [r4, 0x1] - movs r2, 0x4 - negs r2, r2 - adds r0, r2, 0 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strb r1, [r4, 0x1] - ldrb r0, [r4, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r4, 0x5] - movs r0, 0 - strh r0, [r4, 0x2E] - strh r6, [r4, 0x30] - mov r0, r8 - bl NationalPokedexNumToSpecies - strh r0, [r4, 0x32] - mov r4, r9 - ldr r0, [r4] - ldr r1, _0808E954 @ =0x0000061e - adds r0, r1 - adds r0, r7 - strh r5, [r0] - adds r0, r5, 0 - b _0808E968 - .align 2, 0 -_0808E94C: .4byte gUnknown_0202FFB4 -_0808E950: .4byte 0x0000ffff -_0808E954: .4byte 0x0000061e -_0808E958: .4byte gSprites -_0808E95C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _0808E8E4 - ldr r0, _0808E974 @ =0x0000ffff -_0808E968: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808E974: .4byte 0x0000ffff - thumb_func_end sub_808E8C8 - - thumb_func_start sub_808E978 -sub_808E978: @ 808E978 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r4, _0808EB3C @ =gSpriteTemplate_83A053C - adds r0, r4, 0 - movs r1, 0xB8 - movs r2, 0x4 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r1, _0808EB40 @ =gSprites - mov r10, r1 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0 - strh r1, [r0, 0x30] - adds r0, r4, 0 - movs r1, 0xB8 - movs r2, 0x9C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - strh r1, [r0, 0x30] - adds r0, 0x3F - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r0, _0808EB44 @ =gSpriteTemplate_83A0524 - movs r1, 0xEA - movs r2, 0x14 - movs r3, 0 - bl CreateSprite - ldr r5, _0808EB48 @ =gSpriteTemplate_83A0554 - adds r0, r5, 0 - movs r1, 0x10 - movs r2, 0x8A - movs r3, 0 - bl CreateSprite - adds r0, r5, 0 - movs r1, 0x30 - movs r2, 0x8A - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x3 - bl StartSpriteAnim - adds r0, r5, 0 - movs r1, 0x10 - movs r2, 0x9E - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - add r4, r10 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r0, 0x80 - mov r9, r0 - mov r1, r9 - strh r1, [r4, 0x32] - adds r0, r5, 0 - movs r1, 0x30 - movs r2, 0x9E - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - ldr r6, _0808EB4C @ =gSpriteTemplate_83A056C - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - add r1, r10 - ldrb r2, [r1, 0x1] - movs r4, 0x4 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - movs r5, 0x1 - orrs r0, r5 - strb r0, [r1, 0x1] - ldrb r2, [r1, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - movs r2, 0x3C - orrs r0, r2 - strb r0, [r1, 0x3] - movs r0, 0x1E - strh r0, [r1, 0x2E] - movs r0, 0 - strh r0, [r1, 0x30] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x50 - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r1, r7, 4 - adds r1, r7 - lsls r1, 2 - add r1, r10 - ldrb r0, [r1, 0x1] - ands r4, r0 - orrs r4, r5 - strb r4, [r1, 0x1] - ldrb r0, [r1, 0x3] - movs r2, 0x3E - orrs r0, r2 - strb r0, [r1, 0x3] - movs r0, 0x1F - strh r0, [r1, 0x2E] - mov r0, r9 - strh r0, [r1, 0x30] - mov r1, r8 - cmp r1, 0 - beq _0808EAC8 - b _0808ED5C -_0808EAC8: - ldr r4, _0808EB50 @ =gSpriteTemplate_83A0584 - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x28 - movs r3, 0x1 - bl CreateSprite - adds r0, r4, 0 - movs r1, 0x20 - movs r2, 0x48 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0 - mov r8, r0 - ldr r0, _0808EB54 @ =gSpriteTemplate_83A059C - movs r1, 0x1C - movs r2, 0x30 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808EB58 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r1, _0808EB5C @ =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - mov r1, r10 - adds r4, r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _0808EB60 - movs r0, 0x1 - mov r8, r0 - b _0808EB6C - .align 2, 0 -_0808EB3C: .4byte gSpriteTemplate_83A053C -_0808EB40: .4byte gSprites -_0808EB44: .4byte gSpriteTemplate_83A0524 -_0808EB48: .4byte gSpriteTemplate_83A0554 -_0808EB4C: .4byte gSpriteTemplate_83A056C -_0808EB50: .4byte gSpriteTemplate_83A0584 -_0808EB54: .4byte gSpriteTemplate_83A059C -_0808EB58: .4byte gUnknown_0202FFB4 -_0808EB5C: .4byte 0x0000061a -_0808EB60: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0808EB6C: - ldr r0, _0808EBB8 @ =gSpriteTemplate_83A059C - movs r1, 0x22 - movs r2, 0x30 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808EBBC @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r1, _0808EBC0 @ =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0808EBA4 - mov r0, r8 - cmp r0, 0 - beq _0808EBC8 -_0808EBA4: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _0808EBC4 @ =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _0808EBDC - .align 2, 0 -_0808EBB8: .4byte gSpriteTemplate_83A059C -_0808EBBC: .4byte gUnknown_0202FFB4 -_0808EBC0: .4byte 0x0000061a -_0808EBC4: .4byte gSprites -_0808EBC8: - ldr r1, _0808EC60 @ =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0808EBDC: - ldr r6, _0808EC64 @ =gSpriteTemplate_83A059C - adds r0, r6, 0 - movs r1, 0x28 - movs r2, 0x30 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _0808EC68 @ =gUnknown_0202FFB4 - ldr r0, [r5] - ldr r1, _0808EC6C @ =0x0000061a - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r4, _0808EC60 @ =gSprites - adds r0, r4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - movs r0, 0 - mov r8, r0 - adds r0, r6, 0 - movs r1, 0x1C - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, [r5] - ldr r1, _0808EC70 @ =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r4, r0, r4 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - beq _0808EC74 - movs r0, 0x1 - mov r8, r0 - b _0808EC80 - .align 2, 0 -_0808EC60: .4byte gSprites -_0808EC64: .4byte gSpriteTemplate_83A059C -_0808EC68: .4byte gUnknown_0202FFB4 -_0808EC6C: .4byte 0x0000061a -_0808EC70: .4byte 0x0000061c -_0808EC74: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0808EC80: - ldr r0, _0808ECCC @ =gSpriteTemplate_83A059C - movs r1, 0x22 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808ECD0 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r1, _0808ECD4 @ =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0808ECB8 - mov r0, r8 - cmp r0, 0 - beq _0808ECDC -_0808ECB8: - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _0808ECD8 @ =gSprites - adds r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - bl StartSpriteAnim - b _0808ECF0 - .align 2, 0 -_0808ECCC: .4byte gSpriteTemplate_83A059C -_0808ECD0: .4byte gUnknown_0202FFB4 -_0808ECD4: .4byte 0x0000061c -_0808ECD8: .4byte gSprites -_0808ECDC: - ldr r1, _0808ED48 @ =gSprites - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0808ECF0: - ldr r0, _0808ED4C @ =gSpriteTemplate_83A059C - movs r1, 0x28 - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808ED50 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r1, _0808ED54 @ =0x0000061c - adds r0, r1 - ldrh r0, [r0] - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r1, r0, 0 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r4, _0808ED48 @ =gSprites - adds r0, r4 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldr r0, _0808ED58 @ =gSpriteTemplate_83A05B4 - movs r1, 0x8C - movs r2, 0x60 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r4 - b _0808ED74 - .align 2, 0 -_0808ED48: .4byte gSprites -_0808ED4C: .4byte gSpriteTemplate_83A059C -_0808ED50: .4byte gUnknown_0202FFB4 -_0808ED54: .4byte 0x0000061c -_0808ED58: .4byte gSpriteTemplate_83A05B4 -_0808ED5C: - ldr r0, _0808ED8C @ =gSpriteTemplate_83A05B4 - movs r1, 0x8C - movs r2, 0x50 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - add r0, r10 -_0808ED74: - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808ED8C: .4byte gSpriteTemplate_83A05B4 - thumb_func_end sub_808E978 - - thumb_func_start nullsub_58 -nullsub_58: @ 808ED90 - bx lr - thumb_func_end nullsub_58 - - thumb_func_start sub_808ED94 -sub_808ED94: @ 808ED94 - push {lr} - adds r1, r0, 0 - ldr r0, _0808EDB0 @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r2, _0808EDB4 @ =0x0000064a - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808EDAC - adds r0, r1, 0 - bl DestroySprite -_0808EDAC: - pop {r0} - bx r0 - .align 2, 0 -_0808EDB0: .4byte gUnknown_0202FFB4 -_0808EDB4: .4byte 0x0000064a - thumb_func_end sub_808ED94 - - thumb_func_start sub_808EDB8 -sub_808EDB8: @ 808EDB8 - push {lr} - adds r2, r0, 0 - ldrb r1, [r2, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x5] - ldrb r1, [r2, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x1] - movs r0, 0 - strh r0, [r2, 0x24] - strh r0, [r2, 0x26] - ldr r1, [r2, 0x20] - ldr r0, _0808EE18 @ =0x00380030 - cmp r1, r0 - beq _0808EE1C - ldrh r1, [r2, 0x20] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r0, 0x30 - ble _0808EDEC - subs r0, r1, 0x1 - strh r0, [r2, 0x20] -_0808EDEC: - ldrh r1, [r2, 0x20] - movs r3, 0x20 - ldrsh r0, [r2, r3] - cmp r0, 0x2F - bgt _0808EDFA - adds r0, r1, 0x1 - strh r0, [r2, 0x20] -_0808EDFA: - ldrh r1, [r2, 0x22] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r0, 0x38 - ble _0808EE08 - subs r0, r1, 0x1 - strh r0, [r2, 0x22] -_0808EE08: - ldrh r1, [r2, 0x22] - movs r3, 0x22 - ldrsh r0, [r2, r3] - cmp r0, 0x37 - bgt _0808EE20 - adds r0, r1, 0x1 - strh r0, [r2, 0x22] - b _0808EE20 - .align 2, 0 -_0808EE18: .4byte 0x00380030 -_0808EE1C: - ldr r0, _0808EE24 @ =nullsub_58 - str r0, [r2, 0x1C] -_0808EE20: - pop {r0} - bx r0 - .align 2, 0 -_0808EE24: .4byte nullsub_58 - thumb_func_end sub_808EDB8 - - thumb_func_start sub_808EE28 -sub_808EE28: @ 808EE28 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _0808EE50 @ =gUnknown_0202FFB4 - ldr r0, [r5] - ldr r1, _0808EE54 @ =0x0000064a - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808EE58 - cmp r0, 0x3 - beq _0808EE58 - adds r0, r4, 0 - bl DestroySprite - ldr r0, [r5] - b _0808EF16 - .align 2, 0 -_0808EE50: .4byte gUnknown_0202FFB4 -_0808EE54: .4byte 0x0000064a -_0808EE58: - ldr r2, _0808EEE4 @ =gSineTable - ldrh r0, [r4, 0x38] - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r3, 0 - ldrsh r1, [r0, r3] - movs r0, 0x4C - muls r0, r1 - cmp r0, 0 - bge _0808EE70 - adds r0, 0xFF -_0808EE70: - asrs r0, 8 - strh r0, [r4, 0x26] - movs r1, 0x38 - ldrsh r0, [r4, r1] - adds r0, 0x40 - lsls r0, 1 - adds r0, r2 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x80 - lsls r0, 9 - bl __divsi3 - adds r2, r0, 0 - ldr r0, _0808EEE8 @ =0x0000ffff - cmp r2, r0 - bls _0808EE94 - adds r2, r0, 0 -_0808EE94: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - adds r1, r6, 0x1 - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - ldrh r0, [r4, 0x38] - adds r0, 0x3F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7E - bhi _0808EEEC - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - movs r0, 0x1 - strh r0, [r4, 0x2E] - b _0808EEF8 - .align 2, 0 -_0808EEE4: .4byte gSineTable -_0808EEE8: .4byte 0x0000ffff -_0808EEEC: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_0808EEF8: - ldrh r0, [r4, 0x38] - adds r0, 0x3F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x7E - bls _0808EF22 - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0808EF22 - adds r0, r4, 0 - bl DestroySprite - ldr r0, _0808EF2C @ =gUnknown_0202FFB4 - ldr r0, [r0] -_0808EF16: - lsls r1, r6, 1 - ldr r2, _0808EF30 @ =0x0000061e - adds r0, r2 - adds r0, r1 - ldr r1, _0808EF34 @ =0x0000ffff - strh r1, [r0] -_0808EF22: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808EF2C: .4byte gUnknown_0202FFB4 -_0808EF30: .4byte 0x0000061e -_0808EF34: .4byte 0x0000ffff - thumb_func_end sub_808EE28 - - thumb_func_start sub_808EF38 -sub_808EF38: @ 808EF38 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _0808EF58 @ =gUnknown_0202FFB4 - ldr r0, [r1] - ldr r2, _0808EF5C @ =0x0000064a - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808EF60 - cmp r0, 0x3 - beq _0808EF60 - adds r0, r4, 0 - bl DestroySprite - b _0808EF7C - .align 2, 0 -_0808EF58: .4byte gUnknown_0202FFB4 -_0808EF5C: .4byte 0x0000064a -_0808EF60: - ldr r2, [r1] - ldr r1, _0808EF84 @ =0x0000060e - adds r0, r2, r1 - ldrh r1, [r0] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 3 - ldr r1, _0808EF88 @ =0x0000060c - adds r2, r1 - ldrh r1, [r2] - subs r1, 0x1 - bl __divsi3 - strh r0, [r4, 0x26] -_0808EF7C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808EF84: .4byte 0x0000060e -_0808EF88: .4byte 0x0000060c - thumb_func_end sub_808EF38 - - thumb_func_start sub_808EF8C -sub_808EF8C: @ 808EF8C - push {r4,r5,lr} - adds r3, r0, 0 - ldr r1, _0808EFAC @ =gUnknown_0202FFB4 - ldr r0, [r1] - ldr r2, _0808EFB0 @ =0x0000064a - adds r0, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - beq _0808EFB4 - cmp r0, 0x3 - beq _0808EFB4 - adds r0, r3, 0 - bl DestroySprite - b _0808F084 - .align 2, 0 -_0808EFAC: .4byte gUnknown_0202FFB4 -_0808EFB0: .4byte 0x0000064a -_0808EFB4: - movs r1, 0x30 - ldrsh r0, [r3, r1] - cmp r0, 0 - beq _0808EFF6 - ldr r0, [r5] - ldr r2, _0808EFDC @ =0x0000060e - adds r1, r0, r2 - ldrh r1, [r1] - subs r2, 0x2 - adds r0, r2 - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - bne _0808EFE0 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _0808EFEC - .align 2, 0 -_0808EFDC: .4byte 0x0000060e -_0808EFE0: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_0808EFEC: - strb r1, [r0] - adds r2, r0, 0 - ldrh r1, [r3, 0x32] - lsls r0, r1, 24 - b _0808F02C -_0808EFF6: - ldr r0, [r5] - ldr r1, _0808F010 @ =0x0000060e - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _0808F014 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _0808F020 - .align 2, 0 -_0808F010: .4byte 0x0000060e -_0808F014: - adds r0, r3, 0 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_0808F020: - strb r1, [r0] - adds r2, r0, 0 - ldrh r1, [r3, 0x32] - adds r0, r1, 0 - subs r0, 0x80 - lsls r0, 24 -_0808F02C: - lsrs r0, 24 - adds r4, r1, 0 - ldr r1, _0808F078 @ =gSineTable - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0808F040 - adds r0, 0x3F -_0808F040: - asrs r0, 6 - strh r0, [r3, 0x26] - adds r0, r4, 0 - adds r0, 0x8 - strh r0, [r3, 0x32] - ldr r1, [r5] - movs r3, 0xCA - lsls r3, 3 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - bne _0808F07C - adds r3, 0x4 - adds r0, r1, r3 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0808F07C - ldrb r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0808F07C - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - b _0808F082 - .align 2, 0 -_0808F078: .4byte gSineTable -_0808F07C: - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 -_0808F082: - strb r0, [r2] -_0808F084: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_808EF8C - - thumb_func_start sub_808F08C -sub_808F08C: @ 808F08C - push {lr} - adds r1, r0, 0 - ldr r0, _0808F0AC @ =gUnknown_0202FFB4 - ldr r0, [r0] - ldr r2, _0808F0B0 @ =0x0000064a - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808F0A8 - cmp r0, 0x3 - beq _0808F0A8 - adds r0, r1, 0 - bl DestroySprite -_0808F0A8: - pop {r0} - bx r0 - .align 2, 0 -_0808F0AC: .4byte gUnknown_0202FFB4 -_0808F0B0: .4byte 0x0000064a - thumb_func_end sub_808F08C - thumb_func_start sub_808F0B4 sub_808F0B4: @ 808F0B4 push {r4-r7,lr} diff --git a/include/sprite.h b/include/sprite.h index fe55d18e8..288b88518 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -138,46 +138,46 @@ struct Sprite struct SubspriteTable *subspriteTables; void (*callback)(struct Sprite *); - struct Coords16 pos1; - struct Coords16 pos2; - s8 centerToCornerVecX; - s8 centerToCornerVecY; - - u8 animNum; - u8 animCmdIndex; - u8 animDelayCounter:6; - u8 animPaused:1; - u8 affineAnimPaused:1; - u8 animLoopCounter; + /*0x20*/ struct Coords16 pos1; + /*0x24*/ struct Coords16 pos2; + /*0x28*/ s8 centerToCornerVecX; + /*0x29*/ s8 centerToCornerVecY; + + /*0x2A*/ u8 animNum; + /*0x2B*/ u8 animCmdIndex; + /*0x2C*/ u8 animDelayCounter:6; + u8 animPaused:1; + u8 affineAnimPaused:1; + /*0x2D*/ u8 animLoopCounter; // general purpose data fields - s16 data0; - s16 data1; - s16 data2; - s16 data3; - s16 data4; - s16 data5; - s16 data6; - s16 data7; - - u16 inUse:1; - u16 coordOffsetEnabled:1; - u16 invisible:1; - u16 flags_3:1; - u16 flags_4:1; - u16 flags_5:1; - u16 flags_6:1; - u16 flags_7:1; - u16 hFlip:1; - u16 vFlip:1; - u16 animBeginning:1; - u16 affineAnimBeginning:1; - u16 animEnded:1; - u16 affineAnimEnded:1; - u16 usingSheet:1; - u16 flags_f:1; - - u16 sheetTileStart; + /*0x2E*/ s16 data0; + /*0x30*/ s16 data1; + /*0x32*/ s16 data2; + /*0x34*/ s16 data3; + /*0x36*/ s16 data4; + /*0x38*/ s16 data5; + /*0x3A*/ s16 data6; + /*0x3C*/ s16 data7; + + /*0x3E*/ u16 inUse:1; + u16 coordOffsetEnabled:1; + u16 invisible:1; + u16 flags_3:1; + u16 flags_4:1; + u16 flags_5:1; + u16 flags_6:1; + u16 flags_7:1; + /*0x3F*/ u16 hFlip:1; + u16 vFlip:1; + u16 animBeginning:1; + u16 affineAnimBeginning:1; + u16 animEnded:1; + u16 affineAnimEnded:1; + u16 usingSheet:1; + u16 flags_f:1; + + /*0x40*/ u16 sheetTileStart; u8 subspriteTableNum:6; u8 subspriteMode:2; 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; + } } */ |