summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2016-10-31 02:24:20 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2016-10-31 00:24:20 -0700
commit447b23ff24a4011001a620199fb9ac790052681c (patch)
tree05c23cfce9797d030fb417f2a771d619b9a72137
parent506cb08c794af5511026281a2b806ac351a59997 (diff)
decompile more pokedex functions (#80)
* decompile more pokedex functions * use spaces instead of tabs * mostly fix up sub_808D690 * fix sub_808DBE8 * decompile sub_808E398 * decompile more pokedex functions * decompile sub_808E978 * decompile more functions * decompile sub_808F2B0 * decompile sub_808F8B8
-rw-r--r--asm/pokedex.s1000
-rw-r--r--src/pokedex.c867
2 files changed, 624 insertions, 1243 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 95a692106..ea1c404de 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -6,1006 +6,6 @@
.text
- thumb_func_start sub_808F0B4
-sub_808F0B4: @ 808F0B4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r1, _0808F0D8 @ =gUnknown_0202FFB4
- ldr r0, [r1]
- ldr r2, _0808F0DC @ =0x0000064a
- adds r0, r2
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- beq _0808F0E0
- cmp r0, 0x3
- beq _0808F0E0
- adds r0, r6, 0
- bl DestroySprite
- b _0808F158
- .align 2, 0
-_0808F0D8: .4byte gUnknown_0202FFB4
-_0808F0DC: .4byte 0x0000064a
-_0808F0E0:
- ldr r0, [r7]
- ldr r5, _0808F160 @ =0x0000062c
- adds r0, r5
- ldrb r1, [r0]
- ldrh r0, [r6, 0x30]
- adds r1, r0
- lsls r1, 24
- lsrs r1, 24
- ldr r4, _0808F164 @ =gSineTable
- lsls r0, r1, 1
- adds r0, r4
- ldrh r3, [r0]
- adds r1, 0x40
- lsls r1, 1
- adds r1, r4
- ldrh r0, [r6, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r1]
- lsls r3, 16
- lsrs r2, r3, 16
- negs r3, r3
- lsrs r3, 16
- str r1, [sp]
- bl SetOamMatrix
- ldr r1, [r7]
- adds r1, r5
- ldrh r0, [r6, 0x30]
- adds r0, 0x40
- ldrb r1, [r1]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r4
- ldrh r3, [r1]
- adds r0, 0x40
- lsls r0, 1
- adds r0, r4
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- cmp r0, 0
- bge _0808F140
- adds r0, 0xFF
-_0808F140:
- asrs r0, 8
- strh r0, [r6, 0x24]
- lsls r1, r3, 16
- asrs r1, 16
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- cmp r0, 0
- bge _0808F154
- adds r0, 0xFF
-_0808F154:
- asrs r0, 8
- strh r0, [r6, 0x26]
-_0808F158:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F160: .4byte 0x0000062c
-_0808F164: .4byte gSineTable
- thumb_func_end sub_808F0B4
-
- thumb_func_start sub_808F168
-sub_808F168: @ 808F168
- push {r4,lr}
- adds r3, r0, 0
- ldr r1, _0808F188 @ =gUnknown_0202FFB4
- ldr r0, [r1]
- ldr r2, _0808F18C @ =0x0000064a
- adds r0, r2
- ldrb r2, [r0]
- cmp r2, 0
- beq _0808F190
- cmp r2, 0x3
- beq _0808F190
- adds r0, r3, 0
- bl DestroySprite
- b _0808F208
- .align 2, 0
-_0808F188: .4byte gUnknown_0202FFB4
-_0808F18C: .4byte 0x0000064a
-_0808F190:
- ldr r4, [r1]
- ldr r1, _0808F1F0 @ =0x0000064a
- adds r0, r4, r1
- ldrb r0, [r0]
- movs r1, 0x60
- cmp r0, 0
- bne _0808F1A0
- movs r1, 0x50
-_0808F1A0:
- movs r2, 0xCA
- lsls r2, 3
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808F1FC
- adds r2, 0x4
- adds r0, r4, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, r1
- bne _0808F1FC
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r1, _0808F1F4 @ =0x00000652
- adds r0, r4, r1
- ldrh r0, [r0]
- lsls r0, 4
- strh r0, [r3, 0x26]
- ldr r1, _0808F1F8 @ =gSineTable
- ldrh r2, [r3, 0x32]
- lsls r0, r2, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _0808F1E4
- adds r0, 0x3F
-_0808F1E4:
- asrs r0, 6
- strh r0, [r3, 0x24]
- adds r0, r2, 0
- adds r0, 0x8
- strh r0, [r3, 0x32]
- b _0808F208
- .align 2, 0
-_0808F1F0: .4byte 0x0000064a
-_0808F1F4: .4byte 0x00000652
-_0808F1F8: .4byte gSineTable
-_0808F1FC:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0808F208:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_808F168
-
- thumb_func_start sub_808F210
-sub_808F210: @ 808F210
- push {r4,lr}
- lsls r4, r1, 24
- lsrs r4, 24
- ldr r1, _0808F244 @ =gUnknown_0202FFBC
- str r0, [r1]
- ldr r0, _0808F248 @ =sub_808F2B0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0808F24C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r3, 0
- strh r3, [r1, 0x8]
- movs r2, 0x1
- strh r2, [r1, 0xA]
- strh r3, [r1, 0xC]
- strh r3, [r1, 0xE]
- strh r4, [r1, 0x10]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0808F244: .4byte gUnknown_0202FFBC
-_0808F248: .4byte sub_808F2B0
-_0808F24C: .4byte gTasks
- thumb_func_end sub_808F210
-
- thumb_func_start sub_808F250
-sub_808F250: @ 808F250
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0808F274 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0808F27C
- ldr r1, [r1]
- ldr r0, _0808F278 @ =sub_808F6CC
- cmp r1, r0
- bne _0808F27C
- movs r0, 0
- b _0808F27E
- .align 2, 0
-_0808F274: .4byte gTasks
-_0808F278: .4byte sub_808F6CC
-_0808F27C:
- movs r0, 0x1
-_0808F27E:
- pop {r1}
- bx r1
- thumb_func_end sub_808F250
-
- thumb_func_start sub_808F284
-sub_808F284: @ 808F284
- adds r2, r0, 0
- lsls r0, r1, 24
- lsrs r0, 24
- ldr r1, _0808F2A8 @ =gUnknown_0202FFBC
- str r2, [r1]
- ldr r2, _0808F2AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r3, 0
- movs r2, 0x1
- strh r2, [r1, 0x8]
- strh r3, [r1, 0xA]
- strh r3, [r1, 0xC]
- strh r3, [r1, 0xE]
- bx lr
- .align 2, 0
-_0808F2A8: .4byte gUnknown_0202FFBC
-_0808F2AC: .4byte gTasks
- thumb_func_end sub_808F284
-
- thumb_func_start sub_808F2B0
-sub_808F2B0: @ 808F2B0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0808F2D0 @ =gMain
- ldr r2, _0808F2D4 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0xA
- bhi _0808F308
- lsls r0, 2
- ldr r1, _0808F2D8 @ =_0808F2DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0808F2D0: .4byte gMain
-_0808F2D4: .4byte 0x0000043c
-_0808F2D8: .4byte _0808F2DC
- .align 2, 0
-_0808F2DC:
- .4byte _0808F308
- .4byte _0808F38C
- .4byte _0808F3D0
- .4byte _0808F3F4
- .4byte _0808F418
- .4byte _0808F52C
- .4byte _0808F578
- .4byte _0808F5D4
- .4byte _0808F614
- .4byte _0808F672
- .4byte _0808F694
-_0808F308:
- ldr r0, _0808F370 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0808F31A
- b _0808F6B6
-_0808F31A:
- ldr r1, _0808F374 @ =gUnknown_0202FFB4
- ldr r0, [r1]
- ldr r3, _0808F378 @ =0x0000064a
- adds r0, r3
- movs r6, 0x1
- strb r6, [r0]
- ldr r0, [r1]
- ldr r1, _0808F37C @ =0x0000064e
- adds r0, r1
- strb r2, [r0]
- ldr r1, _0808F380 @ =gUnknown_03005CEC
- ldr r0, [r5, 0xC]
- str r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- movs r2, 0
- ldr r1, _0808F384 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0808F352
- movs r2, 0x80
- lsls r2, 5
-_0808F352:
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0808F362
- movs r1, 0x80
- lsls r1, 2
- adds r0, r1, 0
- orrs r2, r0
-_0808F362:
- adds r0, r2, 0
- bl sub_8091060
- ldr r2, _0808F388 @ =0x0000043c
- adds r0, r5, r2
- strb r6, [r0]
- b _0808F6B6
- .align 2, 0
-_0808F370: .4byte gPaletteFade
-_0808F374: .4byte gUnknown_0202FFB4
-_0808F378: .4byte 0x0000064a
-_0808F37C: .4byte 0x0000064e
-_0808F380: .4byte gUnknown_03005CEC
-_0808F384: .4byte gTasks
-_0808F388: .4byte 0x0000043c
-_0808F38C:
- ldr r0, _0808F3B8 @ =gPokedexMenu_Gfx
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _0808F3BC @ =gUnknown_08E96BD4
- ldr r1, _0808F3C0 @ =0x06007800
- bl LZ77UnCompVram
- ldr r0, _0808F3C4 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- movs r2, 0xFF
- lsls r2, 2
- movs r1, 0x2
- bl sub_8091738
- ldr r1, _0808F3C8 @ =gMain
- ldr r3, _0808F3CC @ =0x0000043c
- adds r1, r3
- b _0808F682
- .align 2, 0
-_0808F3B8: .4byte gPokedexMenu_Gfx
-_0808F3BC: .4byte gUnknown_08E96BD4
-_0808F3C0: .4byte 0x06007800
-_0808F3C4: .4byte gUnknown_0202FFBC
-_0808F3C8: .4byte gMain
-_0808F3CC: .4byte 0x0000043c
-_0808F3D0:
- movs r0, 0xD
- bl sub_80904FC
- ldr r0, _0808F3EC @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808F3F0 @ =0x0000064d
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0xD
- bl sub_8090584
- bl sub_808D640
- b _0808F67C
- .align 2, 0
-_0808F3EC: .4byte gUnknown_0202FFB4
-_0808F3F0: .4byte 0x0000064d
-_0808F3F4:
- ldr r4, _0808F40C @ =gWindowConfig_81E7064
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0808F410 @ =gMain
- ldr r3, _0808F414 @ =0x0000043c
- adds r1, r3
- b _0808F682
- .align 2, 0
-_0808F40C: .4byte gWindowConfig_81E7064
-_0808F410: .4byte gMain
-_0808F414: .4byte 0x0000043c
-_0808F418:
- ldr r0, _0808F440 @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808F444 @ =0x00000612
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _0808F44C
- ldr r0, _0808F448 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- bl NationalToHoennOrder
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xD
- movs r2, 0x3
- bl sub_8091154
- b _0808F45A
- .align 2, 0
-_0808F440: .4byte gUnknown_0202FFB4
-_0808F444: .4byte 0x00000612
-_0808F448: .4byte gUnknown_0202FFBC
-_0808F44C:
- ldr r0, _0808F4F8 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- movs r1, 0xD
- movs r2, 0x3
- bl sub_8091154
-_0808F45A:
- ldr r5, _0808F4F8 @ =gUnknown_0202FFBC
- ldr r0, [r5]
- ldrh r0, [r0]
- movs r1, 0x10
- movs r2, 0x3
- bl sub_80911C8
- ldr r0, _0808F4FC @ =gDexText_UnknownPoke
- movs r1, 0xB
- movs r2, 0x5
- bl MenuPrint
- ldr r0, _0808F500 @ =gDexText_UnknownHeight
- movs r1, 0x10
- movs r2, 0x7
- bl MenuPrint
- ldr r0, _0808F504 @ =gDexText_UnknownWeight
- movs r1, 0x10
- movs r2, 0x9
- bl MenuPrint
- ldr r2, [r5]
- ldrb r1, [r2, 0x2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808F50C
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r4, _0808F508 @ =gPokedexEntries
- adds r0, r4
- movs r1, 0xB
- movs r2, 0x5
- bl sub_8091304
- ldr r0, [r5]
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0xC]
- movs r1, 0x10
- movs r2, 0x7
- bl sub_8091458
- ldr r0, [r5]
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0xE]
- movs r1, 0x10
- movs r2, 0x9
- bl sub_8091564
- ldr r0, [r5]
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r4, 0x10
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- movs r1, 0xFF
- lsls r1, 2
- movs r0, 0xE
- bl sub_80917CC
- b _0808F67C
- .align 2, 0
-_0808F4F8: .4byte gUnknown_0202FFBC
-_0808F4FC: .4byte gDexText_UnknownPoke
-_0808F500: .4byte gDexText_UnknownHeight
-_0808F504: .4byte gDexText_UnknownWeight
-_0808F508: .4byte gPokedexEntries
-_0808F50C:
- ldr r0, _0808F524 @ =gUnknown_083A05F8
- movs r1, 0x2
- movs r2, 0xD
- bl MenuPrint
- ldr r0, _0808F528 @ =gPlttBufferUnfaded + 0x2
- movs r1, 0x31
- movs r2, 0x1E
- bl LoadPalette
- b _0808F67C
- .align 2, 0
-_0808F524: .4byte gUnknown_083A05F8
-_0808F528: .4byte gPlttBufferUnfaded + 0x2
-_0808F52C:
- ldr r0, _0808F56C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r4, r1, r0
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _0808F540
- b _0808F67C
-_0808F540:
- ldr r0, _0808F570 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- movs r1, 0x30
- movs r2, 0x38
- movs r3, 0
- bl sub_80918EC
- strh r0, [r4, 0x10]
- ldr r2, _0808F574 @ =gSprites
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- b _0808F67C
- .align 2, 0
-_0808F56C: .4byte gTasks
-_0808F570: .4byte gUnknown_0202FFBC
-_0808F574: .4byte gSprites
-_0808F578:
- movs r3, 0
- ldr r0, _0808F5C8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0808F58E
- movs r3, 0x14
-_0808F58E:
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0808F5B0
- ldr r2, _0808F5CC @ =gSprites
- movs r0, 0x10
- ldrsh r1, [r1, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- orrs r3, r0
-_0808F5B0:
- mvns r0, r3
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _0808F5D0 @ =gUnknown_03005CEC
- ldr r0, [r0]
- bl SetVBlankCallback
- b _0808F67C
- .align 2, 0
-_0808F5C8: .4byte gTasks
-_0808F5CC: .4byte gSprites
-_0808F5D0: .4byte gUnknown_03005CEC
-_0808F5D4:
- ldr r0, _0808F604 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r1, _0808F608 @ =REG_BG3CNT
- ldr r3, _0808F60C @ =0x00000f03
- adds r0, r3, 0
- strh r0, [r1]
- subs r1, 0x4
- movs r2, 0xD0
- lsls r2, 4
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r3, 0xF2
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _0808F610 @ =0x0000043c
- adds r1, r5, r0
- b _0808F682
- .align 2, 0
-_0808F604: .4byte REG_BLDCNT
-_0808F608: .4byte REG_BG3CNT
-_0808F60C: .4byte 0x00000f03
-_0808F610: .4byte 0x0000043c
-_0808F614:
- ldr r0, _0808F65C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808F6B6
- ldr r1, _0808F660 @ =0x0000043c
- adds r2, r5, r1
- ldrb r0, [r2]
- adds r3, r0, 0x1
- strb r3, [r2]
- ldr r1, _0808F664 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0xE
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0808F66C
- bl StopCryAndClearCrySongs
- ldr r0, _0808F668 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrh r0, [r0]
- bl NationalPokedexNumToSpecies
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl PlayCry2
- b _0808F6B6
- .align 2, 0
-_0808F65C: .4byte gPaletteFade
-_0808F660: .4byte 0x0000043c
-_0808F664: .4byte gTasks
-_0808F668: .4byte gUnknown_0202FFBC
-_0808F66C:
- adds r0, r3, 0x1
- strb r0, [r2]
- b _0808F6B6
-_0808F672:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- bne _0808F6B6
-_0808F67C:
- ldr r1, _0808F68C @ =gMain
- ldr r2, _0808F690 @ =0x0000043c
- adds r1, r2
-_0808F682:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0808F6B6
- .align 2, 0
-_0808F68C: .4byte gMain
-_0808F690: .4byte 0x0000043c
-_0808F694:
- ldr r1, _0808F6C0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0
- strh r1, [r0, 0x8]
- strh r1, [r0, 0xA]
- movs r1, 0x1
- strh r1, [r0, 0xC]
- strh r1, [r0, 0xE]
- ldr r1, _0808F6C4 @ =sub_808F6CC
- str r1, [r0]
- ldr r3, _0808F6C8 @ =0x0000043c
- adds r0, r5, r3
- strb r2, [r0]
-_0808F6B6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F6C0: .4byte gTasks
-_0808F6C4: .4byte sub_808F6CC
-_0808F6C8: .4byte 0x0000043c
- thumb_func_end sub_808F2B0
-
- thumb_func_start sub_808F6CC
-sub_808F6CC: @ 808F6CC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0808F704 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- movs r0, 0x8
- ldrsh r4, [r5, r0]
- cmp r4, 0
- beq _0808F70C
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808F708 @ =sub_808F888
- str r0, [r5]
- movs r0, 0x6C
- bl PlaySE
- b _0808F874
- .align 2, 0
-_0808F704: .4byte gTasks
-_0808F708: .4byte sub_808F888
-_0808F70C:
- ldr r1, _0808F73C @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r6, 0x2
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _0808F744
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808F740 @ =sub_808F8B8
- str r0, [r5]
- movs r0, 0x3
- bl PlaySE
- b _0808F874
- .align 2, 0
-_0808F73C: .4byte gMain
-_0808F740: .4byte sub_808F8B8
-_0808F744:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0808F7E8
- ldr r0, _0808F764 @ =gUnknown_0202FFB4
- ldr r0, [r0]
- ldr r1, _0808F768 @ =0x0000064d
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808F77C
- cmp r0, 0x1
- bgt _0808F76C
- cmp r0, 0
- beq _0808F776
- b _0808F874
- .align 2, 0
-_0808F764: .4byte gUnknown_0202FFB4
-_0808F768: .4byte 0x0000064d
-_0808F76C:
- cmp r0, 0x2
- beq _0808F794
- cmp r0, 0x3
- beq _0808F7AC
- b _0808F874
-_0808F776:
- bl sub_8090C68
- b _0808F874
-_0808F77C:
- movs r0, 0x15
- negs r0, r0
- str r3, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808F790 @ =sub_808F8D8
- b _0808F7DA
- .align 2, 0
-_0808F790: .4byte sub_808F8D8
-_0808F794:
- movs r0, 0x15
- negs r0, r0
- str r3, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808F7A8 @ =sub_808FA64
- b _0808F7DA
- .align 2, 0
-_0808F7A8: .4byte sub_808FA64
-_0808F7AC:
- ldr r0, _0808F7C4 @ =gUnknown_0202FFBC
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _0808F7C8
- movs r0, 0x20
- bl PlaySE
- b _0808F874
- .align 2, 0
-_0808F7C4: .4byte gUnknown_0202FFBC
-_0808F7C8:
- movs r0, 0x15
- negs r0, r0
- str r3, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0808F7E4 @ =sub_8090070
-_0808F7DA:
- str r0, [r5]
- movs r0, 0x15
- bl PlaySE
- b _0808F874
- .align 2, 0
-_0808F7E4: .4byte sub_8090070
-_0808F7E8:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- bne _0808F802
- movs r0, 0x80
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0808F834
- ldr r0, _0808F828 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0808F834
-_0808F802:
- ldr r3, _0808F82C @ =gUnknown_0202FFB4
- ldr r0, [r3]
- ldr r4, _0808F830 @ =0x0000064d
- adds r2, r0, r4
- ldrb r0, [r2]
- cmp r0, 0
- beq _0808F834
- subs r0, 0x1
- strb r0, [r2]
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0xD
- bl sub_8090584
- movs r0, 0x6D
- bl PlaySE
- b _0808F874
- .align 2, 0
-_0808F828: .4byte gSaveBlock2
-_0808F82C: .4byte gUnknown_0202FFB4
-_0808F830: .4byte 0x0000064d
-_0808F834:
- ldrh r1, [r1, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0808F850
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0808F874
- ldr r0, _0808F87C @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0808F874
-_0808F850:
- ldr r2, _0808F880 @ =gUnknown_0202FFB4
- ldr r0, [r2]
- ldr r3, _0808F884 @ =0x0000064d
- adds r1, r0, r3
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _0808F874
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- movs r1, 0xD
- bl sub_8090584
- movs r0, 0x6D
- bl PlaySE
-_0808F874:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0808F87C: .4byte gSaveBlock2
-_0808F880: .4byte gUnknown_0202FFB4
-_0808F884: .4byte 0x0000064d
- thumb_func_end sub_808F6CC
-
- thumb_func_start sub_808F888
-sub_808F888: @ 808F888
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0808F8AC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808F8A8
- ldr r0, _0808F8B0 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808F8B4 @ =sub_808F2B0
- str r0, [r1]
-_0808F8A8:
- pop {r0}
- bx r0
- .align 2, 0
-_0808F8AC: .4byte gPaletteFade
-_0808F8B0: .4byte gTasks
-_0808F8B4: .4byte sub_808F2B0
- thumb_func_end sub_808F888
-
- thumb_func_start sub_808F8B8
-sub_808F8B8: @ 808F8B8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0808F8D4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808F8D0
- adds r0, r2, 0
- bl DestroyTask
-_0808F8D0:
- pop {r0}
- bx r0
- .align 2, 0
-_0808F8D4: .4byte gPaletteFade
- thumb_func_end sub_808F8B8
-
thumb_func_start sub_808F8D8
sub_808F8D8: @ 808F8D8
push {r4-r7,lr}
diff --git a/src/pokedex.c b/src/pokedex.c
index 2d7059395..bea845d91 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -87,6 +87,29 @@ extern struct SpriteTemplate gSpriteTemplate_83A0584;
extern struct SpriteTemplate gSpriteTemplate_83A059C;
extern struct SpriteTemplate gSpriteTemplate_83A05B4;
extern s16 gSineTable[];
+extern struct PokedexListItem *gUnknown_0202FFBC;
+extern IntrCallback gUnknown_03005CEC;
+extern u8 gUnknown_08E96BD4[];
+extern u8 gUnknown_083A05F8[];
+
+struct PokedexEntry
+{
+ /*0x00*/ u8 categoryName[12];
+ /*0x0C*/ u16 height; //in decimeters
+ /*0x0E*/ u16 weight; //int hectograms
+ /*0x10*/ u8 *descriptionPage1;
+ /*0x14*/ u8 *descriptionPage2;
+ /*0x18*/ u16 unused;
+ /*0x1A*/ u16 pokemonScale;
+ /*0x1C*/ u16 pokemonOffset;
+ /*0x1E*/ u16 trainerScale;
+ /*0x20*/ u16 trainerOffset;
+}; /*size = 0x24*/
+
+extern struct PokedexEntry gPokedexEntries[];
+extern u8 gDexText_UnknownPoke[];
+extern u8 gDexText_UnknownHeight[];
+extern u8 gDexText_UnknownWeight[];
extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
@@ -126,7 +149,7 @@ bool8 sub_808E208(u8, u8, u8);
u8 sub_808E82C(void);
void sub_808E0CC(u16, u16);
u8 sub_808F210(struct PokedexListItem *, u8);
-void sub_808F284(struct PokedexListItem *, u8);
+u8 sub_808F284(struct PokedexListItem *, u8);
bool8 sub_808F250(u8);
bool8 sub_808E71C(void);
void sub_808CCC4(u8 taskId);
@@ -149,7 +172,14 @@ 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);
+u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type
+void sub_808F2B0(u8 taskId);
+void sub_808F6CC(u8 taskId);
+void sub_808FA64(u8 taskId);
+void sub_808F8D8(u8 taskId);
+void sub_808F8B8(u8 taskId);
+void sub_808F888(u8 taskId);
+void sub_8090070(u8 taskId);
void sub_808C02C(void)
{
@@ -1473,260 +1503,260 @@ __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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
+ 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\
@@ -2072,8 +2102,7 @@ void sub_808F08C(struct Sprite *sprite)
DestroySprite(sprite);
}
-/*
-//FixMe
+#ifdef NONMATCHING
void sub_808F0B4(struct Sprite *sprite)
{
if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
@@ -2081,16 +2110,368 @@ void sub_808F0B4(struct Sprite *sprite)
else
{
s16 r3;
+
u8 unk = gUnknown_0202FFB4->unk62C + sprite->data1;
u16 foo = gSineTable[unk];
- u16 bar = gSineTable[unk + 0x40];
- u8 unk2 = sprite->data0;
+ //u8 unk2 = sprite->data0;
+ //u16 bar = gSineTable[unk + 0x40];
- SetOamMatrix(unk2, foo, bar, -foo, bar);
+ SetOamMatrix(sprite->data0, foo, gSineTable[unk + 0x40], (-(u16)foo) >> 16, gSineTable[unk + 0x40]);
r3 = gSineTable[sprite->data1 + gUnknown_0202FFB4->unk62C];
sprite->pos2.x = gSineTable[sprite->data1 + gUnknown_0202FFB4->unk62C + 0x40] * 5 / 256;
- sprite->pos2.y = r3 / 8;
+ sprite->pos2.y = r3 * 40 / 256;
+ }
+}
+#else
+__attribute__((naked))
+void sub_808F0B4(struct Sprite *sprite)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ adds r6, r0, 0\n\
+ ldr r1, _0808F0D8 @ =gUnknown_0202FFB4\n\
+ ldr r0, [r1]\n\
+ ldr r2, _0808F0DC @ =0x0000064a\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ adds r7, r1, 0\n\
+ cmp r0, 0\n\
+ beq _0808F0E0\n\
+ cmp r0, 0x3\n\
+ beq _0808F0E0\n\
+ adds r0, r6, 0\n\
+ bl DestroySprite\n\
+ b _0808F158\n\
+ .align 2, 0\n\
+_0808F0D8: .4byte gUnknown_0202FFB4\n\
+_0808F0DC: .4byte 0x0000064a\n\
+_0808F0E0:\n\
+ ldr r0, [r7]\n\
+ ldr r5, _0808F160 @ =0x0000062c\n\
+ adds r0, r5\n\
+ ldrb r1, [r0]\n\
+ ldrh r0, [r6, 0x30]\n\
+ adds r1, r0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ ldr r4, _0808F164 @ =gSineTable\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ ldrh r3, [r0]\n\
+ adds r1, 0x40\n\
+ lsls r1, 1\n\
+ adds r1, r4\n\
+ ldrh r0, [r6, 0x2E]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrh r1, [r1]\n\
+ lsls r3, 16\n\
+ lsrs r2, r3, 16\n\
+ negs r3, r3\n\
+ lsrs r3, 16\n\
+ str r1, [sp]\n\
+ bl SetOamMatrix\n\
+ ldr r1, [r7]\n\
+ adds r1, r5\n\
+ ldrh r0, [r6, 0x30]\n\
+ adds r0, 0x40\n\
+ ldrb r1, [r1]\n\
+ adds r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r1, r0, 1\n\
+ adds r1, r4\n\
+ ldrh r3, [r1]\n\
+ adds r0, 0x40\n\
+ lsls r0, 1\n\
+ adds r0, r4\n\
+ movs r2, 0\n\
+ ldrsh r1, [r0, r2]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ cmp r0, 0\n\
+ bge _0808F140\n\
+ adds r0, 0xFF\n\
+_0808F140:\n\
+ asrs r0, 8\n\
+ strh r0, [r6, 0x24]\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ cmp r0, 0\n\
+ bge _0808F154\n\
+ adds r0, 0xFF\n\
+_0808F154:\n\
+ asrs r0, 8\n\
+ strh r0, [r6, 0x26]\n\
+_0808F158:\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0808F160: .4byte 0x0000062c\n\
+_0808F164: .4byte gSineTable\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_808F168(struct Sprite *sprite)
+{
+ if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ DestroySprite(sprite);
+ else
+ {
+ u16 r1 = gUnknown_0202FFB4->unk64A == 0 ? 0x50 : 0x60;
+
+ if(gUnknown_0202FFB4->unk650 != 0 && gUnknown_0202FFB4->unk654 == r1)
+ {
+ u8 data2;
+
+ sprite->invisible = 0;
+ sprite->pos2.y = gUnknown_0202FFB4->unk652 * 16;
+ sprite->pos2.x = gSineTable[(u8)sprite->data2] / 64;
+ sprite->data2 += 8;
+ }
+ else
+ sprite->invisible = 1;
}
}
-*/
+
+u8 sub_808F210(struct PokedexListItem *item, u8 b)
+{
+ u8 taskId;
+
+ gUnknown_0202FFBC = item;
+ taskId = CreateTask(sub_808F2B0, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = b;
+ return taskId;
+}
+
+bool8 sub_808F250(u8 taskId)
+{
+ if(gTasks[taskId].data[0] == 0 && gTasks[taskId].func == sub_808F6CC)
+ return 0;
+ else
+ return 1;
+}
+
+u8 sub_808F284(struct PokedexListItem *item, u8 b)
+{
+ gUnknown_0202FFBC = item;
+ gTasks[b].data[0] = 1;
+ gTasks[b].data[1] = 0;
+ gTasks[b].data[2] = 0;
+ gTasks[b].data[3] = 0;
+ return b;
+}
+
+void sub_808F2B0(u8 taskId)
+{
+ switch(gMain.state)
+ {
+ case 0:
+ default:
+ if(!gPaletteFade.active)
+ {
+ u16 r2;
+
+ gUnknown_0202FFB4->unk64A = 1;
+ gUnknown_0202FFB4->unk64E = 0;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ r2 = 0;
+ if(gTasks[taskId].data[1] != 0)
+ r2 += 0x1000;
+
+ if(gTasks[taskId].data[2] != 0)
+ r2 |= 0x200;
+
+ sub_8091060(r2);
+
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
+ sub_8091738(gUnknown_0202FFBC->a, 2, 0x3FC);
+ gMain.state++;
+ break;
+ case 2:
+ sub_80904FC(0xD);
+ sub_8090584(gUnknown_0202FFB4->unk64D, 0xD);
+ sub_808D640();
+ gMain.state++;
+ break;
+ case 3:
+ SetUpWindowConfig(&gWindowConfig_81E7064);
+ InitMenuWindow(&gWindowConfig_81E7064);
+ gMain.state++;
+ break;
+ case 4:
+ if(gUnknown_0202FFB4->unk612 == 0)
+ sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->a), 0xD, 3);
+ else
+ sub_8091154(gUnknown_0202FFBC->a, 0xD, 3);
+ //_0808F45A
+ sub_80911C8(gUnknown_0202FFBC->a, 0x10, 3);
+ MenuPrint(gDexText_UnknownPoke, 11, 5);
+ MenuPrint(gDexText_UnknownHeight, 16, 7);
+ MenuPrint(gDexText_UnknownWeight, 16, 9);
+ if(gUnknown_0202FFBC->owned)
+ {
+ sub_8091304(gPokedexEntries[gUnknown_0202FFBC->a].categoryName, 11, 5);
+ sub_8091458(gPokedexEntries[gUnknown_0202FFBC->a].height, 16, 7);
+ sub_8091564(gPokedexEntries[gUnknown_0202FFBC->a].weight, 16, 9);
+ MenuPrint(gPokedexEntries[gUnknown_0202FFBC->a].descriptionPage1, 2, 13);
+ sub_80917CC(14, 0x3FC);
+ }
+ //_0808F50C
+ else
+ {
+ MenuPrint(gUnknown_083A05F8, 2, 13);
+ LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E);
+ }
+ gMain.state++;
+ break;
+ case 5:
+ if(gTasks[taskId].data[1] == 0)
+ {
+ //_0808F540
+ gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->a, 0x30, 0x38, 0);
+ gSprites[gTasks[taskId].data[4]].oam.priority = 0;
+ }
+ gMain.state++;
+ break;
+ case 6:
+ {
+ u32 r3 = 0;
+
+ if(gTasks[taskId].data[2] != 0)
+ r3 = 0x14;
+ if(gTasks[taskId].data[1] != 0)
+ {
+ r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10));
+ }
+ BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gMain.state++;
+ break;
+ }
+ case 7:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG3CNT = 0xF03;
+ REG_BG1CNT = 0xD00;
+ REG_DISPCNT = 0x1E40;
+ gMain.state++;
+ break;
+ case 8:
+ if(!gPaletteFade.active)
+ {
+ gMain.state++;
+ if(gTasks[taskId].data[3] == 0)
+ {
+ StopCryAndClearCrySongs();
+ PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->a), 0, 0x7D, 0xA);
+ }
+ else
+ gMain.state++;
+ }
+ break;
+ case 9:
+ if(!IsCryPlayingOrClearCrySongs())
+ gMain.state++;
+ break;
+ case 10:
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[3] = 1;
+ gTasks[taskId].func = sub_808F6CC;
+ gMain.state = 0;
+ break;
+ }
+}
+
+void sub_808F6CC(u8 taskId)
+{
+ if(gTasks[taskId].data[0] != 0)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = sub_808F888;
+ PlaySE(0x6C);
+ }
+ else if(gMain.newKeys & 2)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = sub_808F8B8;
+ PlaySE(3);
+ }
+ else if(gMain.newKeys & 1)
+ {
+ switch(gUnknown_0202FFB4->unk64D)
+ {
+ case 0:
+ sub_8090C68();
+ break;
+ case 1:
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ gTasks[taskId].func = sub_808F8D8;
+ PlaySE(0x15);
+ break;
+ case 2:
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ gTasks[taskId].func = sub_808FA64;
+ PlaySE(0x15);
+ break;
+ case 3:
+ if(!gUnknown_0202FFBC->owned)
+ PlaySE(0x20);
+ else
+ {
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ gTasks[taskId].func = sub_8090070;
+ PlaySE(0x15);
+ }
+ break;
+ }
+ }
+ else if (((gMain.newKeys & 0x20) || ((gMain.newKeys & 0x200) && gSaveBlock2.optionsButtonMode == 1))
+ && gUnknown_0202FFB4->unk64D != 0)
+ {
+ gUnknown_0202FFB4->unk64D--;
+ sub_8090584(gUnknown_0202FFB4->unk64D, 0xD);
+ PlaySE(0x6D);
+ }
+ else if(((gMain.newKeys & 0x10) || ((gMain.newKeys & 0x100) && gSaveBlock2.optionsButtonMode == 1))
+ && gUnknown_0202FFB4->unk64D <= 2)
+ {
+ gUnknown_0202FFB4->unk64D++;
+ sub_8090584(gUnknown_0202FFB4->unk64D, 0xD);
+ PlaySE(0x6D);
+ }
+}
+
+void sub_808F888(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ gTasks[taskId].func = sub_808F2B0;
+}
+
+void sub_808F8B8(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ DestroyTask(taskId);
+}