summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex.s1538
-rw-r--r--include/sprite.h76
-rw-r--r--src/pokedex.c716
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;
+ }
}
*/