diff options
author | camthesaxman <cameronghall@cox.net> | 2017-06-14 17:36:31 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-06-14 17:36:31 -0500 |
commit | b7031c448aa22422a5e409d545c9da12325381cf (patch) | |
tree | 12a5e85771d67e7ff1bd0caf46e76b2f8af9cd1d | |
parent | 75957d8f7347c487662fdf7d63cfb10a8c727249 (diff) |
finish decompiling pokedex.s
-rw-r--r-- | asm/pokedex.s | 1160 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/pokedex.c | 481 |
3 files changed, 462 insertions, 1180 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s deleted file mode 100644 index dbd827286..000000000 --- a/asm/pokedex.s +++ /dev/null @@ -1,1160 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8092810 -sub_8092810: @ 8092810 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r12, r1 - lsls r2, 24 - lsrs r1, r2, 24 - lsls r3, 24 - lsrs r5, r3, 8 - movs r3, 0 - cmp r5, 0 - beq _0809285A - lsls r7, r1, 6 - ldr r6, _08092860 @ =0x00000fff - lsls r4, r0, 12 -_08092830: - mov r0, r12 - adds r1, r0, r3 - lsls r1, 1 - adds r1, r7, r1 - ldr r0, _08092864 @ =0x06007800 - adds r2, r1, r0 - ldrh r0, [r2] - ands r0, r6 - orrs r0, r4 - strh r0, [r2] - ldr r0, _08092868 @ =0x06007840 - adds r1, r0 - ldrh r0, [r1] - ands r0, r6 - orrs r0, r4 - strh r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r0, r5 - bcc _08092830 -_0809285A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08092860: .4byte 0x00000fff -_08092864: .4byte 0x06007800 -_08092868: .4byte 0x06007840 - thumb_func_end sub_8092810 - - thumb_func_start sub_809286C -sub_809286C: @ 809286C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x1 - ands r5, r0 - ands r2, r0 - lsls r2, 1 - orrs r5, r2 - cmp r4, 0xA - bhi _08092958 - lsls r0, r4, 2 - ldr r1, _08092894 @ =_08092898 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08092894: .4byte _08092898 - .align 2, 0 -_08092898: - .4byte _080928C4 - .4byte _080928C4 - .4byte _080928C4 - .4byte _080928D4 - .4byte _080928D4 - .4byte _080928EC - .4byte _080928EC - .4byte _080928D4 - .4byte _080928D4 - .4byte _08092914 - .4byte _08092904 -_080928C4: - ldr r1, _080928D0 @ =gUnknown_083B57E4 - lsls r0, r4, 3 - adds r0, r1 - ldrb r1, [r0, 0x4] - ldrb r2, [r0, 0x5] - b _08092932 - .align 2, 0 -_080928D0: .4byte gUnknown_083B57E4 -_080928D4: - ldr r2, _08092900 @ =gUnknown_083B57FC - subs r1, r4, 0x3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - ldrb r2, [r0, 0x5] - ldrb r3, [r0, 0x6] - adds r0, r5, 0 - bl sub_8092810 -_080928EC: - ldr r2, _08092900 @ =gUnknown_083B57FC - subs r1, r4, 0x3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x7] - ldrb r2, [r0, 0x8] - ldrb r3, [r0, 0x9] - b _08092934 - .align 2, 0 -_08092900: .4byte gUnknown_083B57FC -_08092904: - ldr r0, _08092910 @ =gUnknown_083B57FC - ldrb r1, [r0, 0x1C] - ldrb r2, [r0, 0x1D] - ldrb r3, [r0, 0x1E] - b _08092934 - .align 2, 0 -_08092910: .4byte gUnknown_083B57FC -_08092914: - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _08092940 - ldr r2, _0809293C @ =gUnknown_083B57FC - subs r1, r4, 0x3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - ldrb r2, [r0, 0x5] - subs r2, 0x2 - lsls r2, 24 - lsrs r2, 24 -_08092932: - ldrb r3, [r0, 0x6] -_08092934: - adds r0, r5, 0 - bl sub_8092810 - b _08092958 - .align 2, 0 -_0809293C: .4byte gUnknown_083B57FC -_08092940: - ldr r2, _08092960 @ =gUnknown_083B57FC - subs r1, r4, 0x3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - ldrb r2, [r0, 0x5] - ldrb r3, [r0, 0x6] - adds r0, r5, 0 - bl sub_8092810 -_08092958: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08092960: .4byte gUnknown_083B57FC - thumb_func_end sub_809286C - - thumb_func_start sub_8092964 -sub_8092964: @ 8092964 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _080929CE - cmp r0, 0x1 - bgt _0809297A - cmp r0, 0 - beq _08092980 - b _08092AAC -_0809297A: - cmp r1, 0x2 - beq _08092A3E - b _08092AAC -_08092980: - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl sub_809286C - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x4 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0xA - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x5 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x6 - movs r1, 0x1 - movs r2, 0 - b _08092A1A -_080929CE: - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl sub_809286C - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0xA - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x5 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x6 - movs r1, 0x1 - movs r2, 0x1 -_08092A1A: - bl sub_809286C - movs r0, 0x7 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x8 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x9 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - b _08092AAC -_08092A3E: - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl sub_809286C - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl sub_809286C - movs r0, 0x3 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0xA - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x5 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x6 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x7 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x8 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C - movs r0, 0x9 - movs r1, 0x1 - movs r2, 0x1 - bl sub_809286C -_08092AAC: - pop {r0} - bx r0 - thumb_func_end sub_8092964 - - thumb_func_start sub_8092AB0 -sub_8092AB0: @ 8092AB0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8092964 - ldr r0, _08092AD0 @ =gUnknown_083B57E4 - lsls r4, 3 - adds r4, r0 - ldr r0, [r4] - bl sub_8091E20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08092AD0: .4byte gUnknown_083B57E4 - thumb_func_end sub_8092AB0 - - thumb_func_start sub_8092AD4 -sub_8092AD4: @ 8092AD4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - bl sub_8092964 - cmp r4, 0x6 - bhi _08092B4E - lsls r0, r4, 2 - ldr r1, _08092AF0 @ =_08092AF4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08092AF0: .4byte _08092AF4 - .align 2, 0 -_08092AF4: - .4byte _08092B10 - .4byte _08092B14 - .4byte _08092B18 - .4byte _08092B26 - .4byte _08092B34 - .4byte _08092B38 - .4byte _08092B44 -_08092B10: - movs r0, 0x3 - b _08092B3A -_08092B14: - movs r0, 0x4 - b _08092B3A -_08092B18: - movs r0, 0xA - movs r1, 0 - movs r2, 0 - bl sub_809286C - movs r0, 0x5 - b _08092B3A -_08092B26: - movs r0, 0xA - movs r1, 0 - movs r2, 0 - bl sub_809286C - movs r0, 0x6 - b _08092B3A -_08092B34: - movs r0, 0x7 - b _08092B3A -_08092B38: - movs r0, 0x8 -_08092B3A: - movs r1, 0 - movs r2, 0 - bl sub_809286C - b _08092B4E -_08092B44: - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - bl sub_809286C -_08092B4E: - ldr r0, _08092B64 @ =gUnknown_083B57FC - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl sub_8091E20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08092B64: .4byte gUnknown_083B57FC - thumb_func_end sub_8092AD4 - - thumb_func_start sub_8092B68 -sub_8092B68: @ 8092B68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08092C68 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r6, r1, r2 - ldrh r0, [r6, 0x16] - ldrh r1, [r6, 0x14] - adds r0, r1 - lsls r0, 16 - ldr r7, _08092C6C @ =gStringVar1 - ldr r1, _08092C70 @ =gUnknown_083B5910 - lsrs r0, 13 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - ldr r0, _08092C74 @ =gUnknown_083B5AB2 - mov r8, r0 - movs r1, 0x2D - movs r2, 0x10 - movs r3, 0x1 - bl MenuPrint_PixelCoords - ldrh r0, [r6, 0x1A] - ldrh r1, [r6, 0x18] - adds r0, r1 - lsls r0, 16 - ldr r1, _08092C78 @ =gUnknown_083B5968 - lsrs r0, 13 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - mov r0, r8 - movs r1, 0x2D - movs r2, 0x20 - movs r3, 0x1 - bl MenuPrint_PixelCoords - ldrh r0, [r6, 0x1E] - ldrh r1, [r6, 0x1C] - adds r0, r1 - lsls r0, 16 - ldr r4, _08092C7C @ =gUnknown_083B59C8 - lsrs r0, 13 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - ldr r5, _08092C80 @ =gUnknown_083B5AAC - adds r0, r5, 0 - movs r1, 0x2D - movs r2, 0x30 - movs r3, 0x1 - bl MenuPrint_PixelCoords - ldrh r0, [r6, 0x22] - ldrh r1, [r6, 0x20] - adds r0, r1 - lsls r0, 16 - lsrs r0, 13 - adds r0, r4 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - adds r0, r5, 0 - movs r1, 0x5D - movs r2, 0x30 - movs r3, 0x1 - bl MenuPrint_PixelCoords - ldrh r0, [r6, 0x12] - ldrh r1, [r6, 0x10] - adds r0, r1 - lsls r0, 16 - ldr r1, _08092C84 @ =gUnknown_083B58D8 - lsrs r0, 13 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - mov r0, r8 - movs r1, 0x2D - movs r2, 0x40 - movs r3, 0x1 - bl MenuPrint_PixelCoords - bl IsNationalPokedexEnabled - cmp r0, 0 - beq _08092C5E - ldrh r0, [r6, 0xE] - ldrh r6, [r6, 0xC] - adds r0, r6 - lsls r0, 16 - ldr r1, _08092C88 @ =gUnknown_083B58C0 - lsrs r0, 13 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - mov r0, r8 - movs r1, 0x2D - movs r2, 0x50 - movs r3, 0x1 - bl MenuPrint_PixelCoords -_08092C5E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08092C68: .4byte gTasks -_08092C6C: .4byte gStringVar1 -_08092C70: .4byte gUnknown_083B5910 -_08092C74: .4byte gUnknown_083B5AB2 -_08092C78: .4byte gUnknown_083B5968 -_08092C7C: .4byte gUnknown_083B59C8 -_08092C80: .4byte gUnknown_083B5AAC -_08092C84: .4byte gUnknown_083B58D8 -_08092C88: .4byte gUnknown_083B58C0 - thumb_func_end sub_8092B68 - - thumb_func_start sub_8092C8C -sub_8092C8C: @ 8092C8C - push {r4-r6,lr} - lsls r0, 24 - cmp r0, 0 - bne _08092D48 - ldr r1, _08092D1C @ =0x06007822 - ldr r2, _08092D20 @ =0x00000c0b - adds r0, r2, 0 - strh r0, [r1] - movs r1, 0x12 - ldr r3, _08092D24 @ =0x06007800 - ldr r4, _08092D28 @ =0x0000080d - adds r2, r4, 0 -_08092CA4: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1C - bls _08092CA4 - ldr r1, _08092D2C @ =0x0600783a - ldr r2, _08092D30 @ =0x0000080b - adds r0, r2, 0 - strh r0, [r1] - movs r3, 0x1 - ldr r6, _08092D24 @ =0x06007800 - movs r5, 0x2 -_08092CC2: - lsls r2, r3, 6 - ldr r4, _08092D1C @ =0x06007822 - adds r1, r2, r4 - ldr r4, _08092D34 @ =0x0000040a - adds r0, r4, 0 - strh r0, [r1] - movs r1, 0x12 - adds r4, r3, 0x1 - adds r3, r2, 0 -_08092CD4: - lsls r0, r1, 1 - adds r0, r3, r0 - adds r0, r6 - strh r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1C - bls _08092CD4 - ldr r1, _08092D2C @ =0x0600783a - adds r0, r2, r1 - movs r1, 0xA - strh r1, [r0] - lsls r0, r4, 16 - lsrs r3, r0, 16 - cmp r3, 0xC - bls _08092CC2 - ldr r1, _08092D38 @ =0x06007b62 - ldr r2, _08092D3C @ =0x0000040b - adds r0, r2, 0 - strh r0, [r1] - movs r1, 0x12 - ldr r3, _08092D40 @ =0x06007b40 - movs r2, 0xD -_08092D04: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1C - bls _08092D04 - ldr r1, _08092D44 @ =0x06007b7a - movs r0, 0xB - strh r0, [r1] - b _08092D6E - .align 2, 0 -_08092D1C: .4byte 0x06007822 -_08092D20: .4byte 0x00000c0b -_08092D24: .4byte 0x06007800 -_08092D28: .4byte 0x0000080d -_08092D2C: .4byte 0x0600783a -_08092D30: .4byte 0x0000080b -_08092D34: .4byte 0x0000040a -_08092D38: .4byte 0x06007b62 -_08092D3C: .4byte 0x0000040b -_08092D40: .4byte 0x06007b40 -_08092D44: .4byte 0x06007b7a -_08092D48: - movs r3, 0 - ldr r6, _08092D74 @ =0x06007800 - movs r5, 0x4F -_08092D4E: - movs r1, 0x11 - adds r4, r3, 0x1 - lsls r2, r3, 6 -_08092D54: - lsls r0, r1, 1 - adds r0, r2, r0 - adds r0, r6 - strh r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1D - bls _08092D54 - lsls r0, r4, 16 - lsrs r3, r0, 16 - cmp r3, 0xD - bls _08092D4E -_08092D6E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08092D74: .4byte 0x06007800 - thumb_func_end sub_8092C8C - - thumb_func_start sub_8092D78 -sub_8092D78: @ 8092D78 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08092DBC @ =gUnknown_083B5A7C - ldr r3, _08092DC0 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r0, r2, r3 - movs r5, 0xA - ldrsh r1, [r0, r5] - lsls r1, 3 - adds r1, r4 - ldr r6, [r1] - adds r3, 0x8 - adds r2, r3 - ldrb r0, [r1, 0x4] - lsls r0, 1 - adds r0, r2 - mov r8, r0 - ldrb r0, [r1, 0x5] - lsls r0, 1 - adds r7, r2, r0 - movs r0, 0x12 - movs r1, 0x1 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r5, 0 - ldrh r4, [r7] - b _08092DE8 - .align 2, 0 -_08092DBC: .4byte gUnknown_083B5A7C -_08092DC0: .4byte gTasks -_08092DC4: - lsls r0, r4, 3 - adds r0, r6 - ldr r0, [r0, 0x4] - lsls r2, r5, 1 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x12 - bl MenuPrint - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r5, 0x5 - bhi _08092DF2 -_08092DE8: - lsls r0, r4, 3 - adds r0, r6 - ldr r0, [r0, 0x4] - cmp r0, 0 - bne _08092DC4 -_08092DF2: - mov r1, r8 - ldrh r0, [r1] - ldrh r1, [r7] - adds r0, r1 - lsls r0, 3 - adds r0, r6 - ldr r0, [r0] - bl sub_8091E20 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8092D78 - - thumb_func_start sub_8092E10 -sub_8092E10: @ 8092E10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08092E50 @ =gTasks + 0x8 - adds r1, r0 - ldr r2, _08092E54 @ =gUnknown_083B5A7C - lsls r0, r3, 3 - adds r0, r2 - ldrb r2, [r0, 0x4] - lsls r2, 1 - adds r2, r1, r2 - ldrb r0, [r0, 0x5] - lsls r0, 1 - adds r1, r0 - ldrh r0, [r1] - ldrh r2, [r2] - adds r0, r2 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r3, 0x5 - bhi _08092E74 - lsls r0, r3, 2 - ldr r1, _08092E58 @ =_08092E5C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08092E50: .4byte gTasks + 0x8 -_08092E54: .4byte gUnknown_083B5A7C -_08092E58: .4byte _08092E5C - .align 2, 0 -_08092E5C: - .4byte _08092E88 - .4byte _08092E92 - .4byte _08092EA2 - .4byte _08092EA2 - .4byte _08092E80 - .4byte _08092E78 -_08092E74: - movs r0, 0 - b _08092EA8 -_08092E78: - ldr r0, _08092E7C @ =gUnknown_083B5A60 - b _08092EA4 - .align 2, 0 -_08092E7C: .4byte gUnknown_083B5A60 -_08092E80: - ldr r0, _08092E84 @ =gUnknown_083B5A62 - b _08092EA4 - .align 2, 0 -_08092E84: .4byte gUnknown_083B5A62 -_08092E88: - cmp r2, 0 - beq _08092E96 - lsls r0, r2, 24 - lsrs r0, 24 - b _08092EA8 -_08092E92: - cmp r2, 0 - bne _08092E9A -_08092E96: - movs r0, 0xFF - b _08092EA8 -_08092E9A: - subs r0, r2, 0x1 - lsls r0, 24 - lsrs r0, 24 - b _08092EA8 -_08092EA2: - ldr r0, _08092EAC @ =gUnknown_083B5A68 -_08092EA4: - adds r0, r2, r0 - ldrb r0, [r0] -_08092EA8: - pop {r1} - bx r1 - .align 2, 0 -_08092EAC: .4byte gUnknown_083B5A68 - thumb_func_end sub_8092E10 - - thumb_func_start sub_8092EB0 -sub_8092EB0: @ 8092EB0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08092ED0 @ =gPokedexView - ldr r0, [r1] - ldr r2, _08092ED4 @ =0x00000614 - adds r0, r2 - ldrh r0, [r0] - adds r5, r1, 0 - cmp r0, 0 - beq _08092ECA - cmp r0, 0x1 - beq _08092ED8 -_08092ECA: - movs r3, 0 - b _08092EDA - .align 2, 0 -_08092ED0: .4byte gPokedexView -_08092ED4: .4byte 0x00000614 -_08092ED8: - movs r3, 0x1 -_08092EDA: - ldr r1, _08092F00 @ =gTasks - lsls r2, r4, 2 - adds r0, r2, r4 - lsls r0, 3 - adds r0, r1 - strh r3, [r0, 0xC] - ldr r0, [r5] - movs r3, 0xC3 - lsls r3, 3 - adds r0, r3 - ldrh r0, [r0] - adds r5, r1, 0 - cmp r0, 0x5 - bhi _08092F20 - lsls r0, 2 - ldr r1, _08092F04 @ =_08092F08 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08092F00: .4byte gTasks -_08092F04: .4byte _08092F08 - .align 2, 0 -_08092F08: - .4byte _08092F20 - .4byte _08092F24 - .4byte _08092F28 - .4byte _08092F2C - .4byte _08092F30 - .4byte _08092F34 -_08092F20: - movs r3, 0 - b _08092F36 -_08092F24: - movs r3, 0x1 - b _08092F36 -_08092F28: - movs r3, 0x2 - b _08092F36 -_08092F2C: - movs r3, 0x3 - b _08092F36 -_08092F30: - movs r3, 0x4 - b _08092F36 -_08092F34: - movs r3, 0x5 -_08092F36: - adds r0, r2, r4 - lsls r0, 3 - adds r0, r5 - strh r3, [r0, 0x10] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8092EB0 - - thumb_func_start sub_8092F44 -sub_8092F44: @ 8092F44 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08092F7C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r0, r1, r3 - ldrb r2, [r0, 0xA] - adds r3, 0x8 - adds r1, r3 - ldr r0, _08092F80 @ =gUnknown_083B5A7C - lsls r2, 3 - adds r2, r0 - ldrb r0, [r2, 0x5] - lsls r0, 1 - adds r1, r0 - ldrh r0, [r2, 0x6] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bls _08092F84 - ldrh r0, [r1] - cmp r0, 0 - beq _08092F84 - movs r0, 0 - b _08092F86 - .align 2, 0 -_08092F7C: .4byte gTasks -_08092F80: .4byte gUnknown_083B5A7C -_08092F84: - movs r0, 0x1 -_08092F86: - pop {r1} - bx r1 - thumb_func_end sub_8092F44 - - thumb_func_start sub_8092F8C -sub_8092F8C: @ 8092F8C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08092FC8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r0, r1, r3 - ldrb r2, [r0, 0xA] - adds r3, 0x8 - adds r1, r3 - ldr r0, _08092FCC @ =gUnknown_083B5A7C - lsls r2, 3 - adds r2, r0 - ldrb r0, [r2, 0x5] - lsls r0, 1 - adds r1, r0 - ldrh r0, [r2, 0x6] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5 - bls _08092FD0 - ldrh r1, [r1] - subs r0, 0x5 - cmp r1, r0 - bge _08092FD0 - movs r0, 0 - b _08092FD2 - .align 2, 0 -_08092FC8: .4byte gTasks -_08092FCC: .4byte gUnknown_083B5A7C -_08092FD0: - movs r0, 0x1 -_08092FD2: - pop {r1} - bx r1 - thumb_func_end sub_8092F8C - - thumb_func_start sub_8092FD8 -sub_8092FD8: @ 8092FD8 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08093018 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r0] - ldr r0, _0809301C @ =sub_8092644 - cmp r1, r0 - bne _08093078 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08093020 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_8092F8C - lsls r0, 24 - cmp r0, 0 - beq _0809303C - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - b _08093048 - .align 2, 0 -_08093018: .4byte gTasks -_0809301C: .4byte sub_8092644 -_08093020: - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_8092F44 - lsls r0, 24 - cmp r0, 0 - beq _0809303C - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - b _08093048 -_0809303C: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 -_08093048: - strb r0, [r2] - ldrh r2, [r4, 0x32] - movs r1, 0x30 - ldrsh r0, [r4, r1] - lsls r0, 7 - adds r0, r2, r0 - lsls r0, 24 - ldr r1, _08093074 @ =gSineTable - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _08093066 - adds r0, 0x7F -_08093066: - asrs r0, 7 - strh r0, [r4, 0x26] - adds r0, r2, 0 - adds r0, 0x8 - strh r0, [r4, 0x32] - b _08093084 - .align 2, 0 -_08093074: .4byte gSineTable -_08093078: - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_08093084: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8092FD8 - - thumb_func_start sub_809308C -sub_809308C: @ 809308C - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r6, _08093104 @ =gSpriteTemplate_83A053C - adds r0, r6, 0 - movs r1, 0xB8 - movs r2, 0x4 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08093108 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r0, r1, r4 - movs r2, 0 - strh r5, [r0, 0x2E] - strh r2, [r0, 0x30] - movs r0, 0x1C - adds r0, r4 - mov r9, r0 - add r1, r9 - ldr r0, _0809310C @ =sub_8092FD8 - mov r8, r0 - str r0, [r1] - adds r0, r6, 0 - movs r1, 0xB8 - movs r2, 0x6C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r4, r1, r4 - strh r5, [r4, 0x2E] - movs r0, 0x1 - strh r0, [r4, 0x30] - adds r4, 0x3F - ldrb r0, [r4] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r4] - add r1, r9 - mov r0, r8 - str r0, [r1] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08093104: .4byte gSpriteTemplate_83A053C -_08093108: .4byte gSprites -_0809310C: .4byte sub_8092FD8 - thumb_func_end sub_809308C - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 38d564974..a876843bb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -139,7 +139,6 @@ SECTIONS { asm/pokemon_menu.o(.text); src/option_menu.o(.text); src/pokedex.o(.text); - asm/pokedex.o(.text); src/trainer_card.o(.text); src/save_menu_util.o(.text); src/rom_8094928.o(.text); diff --git a/src/pokedex.c b/src/pokedex.c index d88252aa8..d799f6a19 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -70,6 +70,25 @@ struct UnknownStruct1 u16 unk6; }; +struct UnknownStruct3 +{ + const u8 *text; + u8 unk4; + u8 unk5; + u8 unk6; +}; + +struct UnknownStruct4 +{ + const u8 *text; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; +}; + extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gReservedSpritePaletteCount; extern struct PokedexView *gPokedexView; @@ -86,7 +105,7 @@ extern u8 gUnknown_08E96888[]; extern u8 gUnknown_08E96994[]; extern u8 gUnknown_08E9C6DC[]; extern u8 gUnknown_0839FA7C[]; -extern u8 gUnknown_0839F67C[]; +extern u16 gUnknown_0839F67C[]; extern u8 gUnknown_0839F73C[]; extern u8 gUnknown_0839F8A0[]; extern u8 gUnknown_0839F988[]; @@ -108,11 +127,23 @@ extern void *const gUnknown_083B5584[]; extern struct SpriteFrameImage *const gUnknown_083B5794[]; extern const struct SpriteTemplate gUnknown_083B57A4; extern const u8 gUnknown_083B57BC[][4]; +extern const struct UnknownStruct3 gUnknown_083B57E4[]; +extern const struct UnknownStruct4 gUnknown_083B57FC[]; extern const u8 gUnknown_083B5850[][4]; extern const u8 gUnknown_083B586C[][4]; extern const u8 gUnknown_083B5888[][4]; extern const u8 gUnknown_083B58A4[][4]; +extern const struct UnknownStruct2 gUnknown_083B58C0[]; +extern const struct UnknownStruct2 gUnknown_083B58D8[]; +extern const struct UnknownStruct2 gUnknown_083B5910[]; +extern const struct UnknownStruct2 gUnknown_083B5968[]; +extern const struct UnknownStruct2 gUnknown_083B59C8[]; +extern const u8 gUnknown_083B5A60[]; +extern const u8 gUnknown_083B5A62[]; +extern const u8 gUnknown_083B5A68[]; extern const struct UnknownStruct1 gUnknown_083B5A7C[]; +extern const u8 gUnknown_083B5AAC[]; +extern const u8 gUnknown_083B5AB2[]; extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; extern u8 gUnknown_08E96ACC[]; @@ -160,12 +191,12 @@ void sub_80927B8(u8); void sub_80927F0(u8); void sub_8092AB0(u8); void sub_8092AD4(u8, u8); -void sub_8092B68(); -void sub_8092C8C(); -void sub_8092D78(); -u8 sub_8092E10(); -void sub_8092EB0(); -void sub_809308C(); +void sub_8092B68(u8); +void sub_8092C8C(u8); +void sub_8092D78(u8); +u8 sub_8092E10(u8, u8); +void sub_8092EB0(u8); +void sub_809308C(u8); // asm/pokedex_area_screen void ShowPokedexAreaScreen(u16 species, u8 *string); @@ -865,7 +896,7 @@ bool8 sub_808D344(u8 a) void sub_808D640(void) { if (gPokedexView->unk64C_1) - LoadPalette(gUnknown_0839F67C + 0x2, 1, 0xBE); + LoadPalette(gUnknown_0839F67C + 1, 1, 0xBE); else if (!IsNationalPokedexEnabled()) LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE); else @@ -2692,7 +2723,6 @@ void Task_SizeScreenProcessInput(u8 taskId) gTasks[taskId].func = sub_8090498; PlaySE(SE_PC_OFF); } - //_08090430 else if ((gMain.newKeys & DPAD_LEFT) || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { @@ -3457,7 +3487,7 @@ _08090A38: .4byte sub_8090A3C\n\ void sub_8090A3C(u8 taskId) { - if (gMain.newKeys & 2) + if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0); gSprites[gTasks[taskId].data[3]].callback = sub_8090C28; @@ -3502,7 +3532,7 @@ void sub_8090B8C(u8 taskId) u8 paletteNum; const u16 *palette; - REG_DISPCNT = 0x1940; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000); sub_800D74C(); species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]); @@ -4352,13 +4382,13 @@ void sub_809207C(u8 taskId) } return; } - if ((gMain.newKeys & 0x20) && gTasks[taskId].data[0] > 0) + if ((gMain.newKeys & DPAD_LEFT) && gTasks[taskId].data[0] > 0) { PlaySE(SE_Z_PAGE); gTasks[taskId].data[0]--; sub_8092AB0(gTasks[taskId].data[0]); } - if ((gMain.newKeys & 0x10) && gTasks[taskId].data[0] < 2) + if ((gMain.newKeys & DPAD_RIGHT) && gTasks[taskId].data[0] < 2) { PlaySE(SE_Z_PAGE); gTasks[taskId].data[0]++; @@ -4433,25 +4463,25 @@ void sub_80921B0(u8 taskId) return; } - if ((gMain.newKeys & 0x20) && r6[gTasks[taskId].data[1]][0] != 0xFF) + if ((gMain.newKeys & DPAD_LEFT) && r6[gTasks[taskId].data[1]][0] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][0]; sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); } - if ((gMain.newKeys & 0x10) && r6[gTasks[taskId].data[1]][1] != 0xFF) + if ((gMain.newKeys & DPAD_RIGHT) && r6[gTasks[taskId].data[1]][1] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][1]; sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); } - if ((gMain.newKeys & 0x40) && r6[gTasks[taskId].data[1]][2] != 0xFF) + if ((gMain.newKeys & DPAD_UP) && r6[gTasks[taskId].data[1]][2] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][2]; sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); } - if ((gMain.newKeys & 0x80) && r6[gTasks[taskId].data[1]][3] != 0xFF) + if ((gMain.newKeys & DPAD_DOWN) && r6[gTasks[taskId].data[1]][3] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][3]; @@ -4568,7 +4598,7 @@ void sub_8092644(u8 taskId) return; } r3 = FALSE; - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { if (*p1 != 0) { @@ -4591,7 +4621,7 @@ void sub_8092644(u8 taskId) } return; } - if (gMain.newAndRepeatedKeys & 0x80) + if (gMain.newAndRepeatedKeys & DPAD_DOWN) { if (*p1 < 5 && *p1 < r2) { @@ -4627,3 +4657,416 @@ void sub_80927F0(u8 taskId) if (!gPaletteFade.active) DestroyTask(taskId); } + +#ifdef NONMATCHING +void sub_8092810(u8 a, u8 b, u8 c, u8 d) +{ + u16 i; + + for (i = 0; i < d; i++) + { + ((u16 *)VRAM)[15 * 0x400 + c * 32 + i + b] &= 0xFFF; + ((u16 *)VRAM)[15 * 0x400 + c * 32 + i + b] |= a << 12; + + ((u16 *)VRAM)[15 * 0x400 + (c + 1) * 32 + i + b] &= 0xFFF; + ((u16 *)VRAM)[15 * 0x400 + (c + 1) * 32 + i + b] |= a << 12; + } +} +#else +__attribute__((naked)) +void sub_8092810(u8 a, u8 b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r12, r1\n\ + lsls r2, 24\n\ + lsrs r1, r2, 24\n\ + lsls r3, 24\n\ + lsrs r5, r3, 8\n\ + movs r3, 0\n\ + cmp r5, 0\n\ + beq _0809285A\n\ + lsls r7, r1, 6\n\ + ldr r6, _08092860 @ =0x00000fff\n\ + lsls r4, r0, 12\n\ +_08092830:\n\ + mov r0, r12\n\ + adds r1, r0, r3\n\ + lsls r1, 1\n\ + adds r1, r7, r1\n\ + ldr r0, _08092864 @ =0x06007800\n\ + adds r2, r1, r0\n\ + ldrh r0, [r2]\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strh r0, [r2]\n\ + ldr r0, _08092868 @ =0x06007840\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r0, r5\n\ + bcc _08092830\n\ +_0809285A:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08092860: .4byte 0x00000fff\n\ +_08092864: .4byte 0x06007800\n\ +_08092868: .4byte 0x06007840\n\ + .syntax divided\n"); +} +#endif + +void sub_809286C(u8 a, u8 b, u8 c) +{ + u8 r5 = (b & 1) | ((c & 1) << 1); + + switch (a) + { + case 0: + case 1: + case 2: + sub_8092810(r5, gUnknown_083B57E4[a].unk4, gUnknown_083B57E4[a].unk5, gUnknown_083B57E4[a].unk6); + break; + case 3: + case 4: + case 7: + case 8: + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5, gUnknown_083B57FC[a - 3].unk6); + // fall through + case 5: + case 6: + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk7, gUnknown_083B57FC[a - 3].unk8, gUnknown_083B57FC[a - 3].unk9); + break; + case 10: + sub_8092810(r5, gUnknown_083B57FC[2].unk4, gUnknown_083B57FC[2].unk5, gUnknown_083B57FC[2].unk6); + break; + case 9: + if (!IsNationalPokedexEnabled()) + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5 - 2, gUnknown_083B57FC[a - 3].unk6); + else + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5, gUnknown_083B57FC[a - 3].unk6); + break; + } +} + +void sub_8092964(u8 a) +{ + switch (a) + { + case 0: + sub_809286C(0, 0, 0); + sub_809286C(1, 1, 0); + sub_809286C(2, 1, 0); + sub_809286C(3, 1, 0); + sub_809286C(4, 1, 0); + sub_809286C(10, 1, 0); + sub_809286C(5, 1, 0); + sub_809286C(6, 1, 0); + sub_809286C(7, 1, 0); + sub_809286C(8, 1, 0); + sub_809286C(9, 1, 0); + break; + case 1: + sub_809286C(0, 1, 0); + sub_809286C(1, 0, 0); + sub_809286C(2, 1, 0); + sub_809286C(3, 1, 1); + sub_809286C(4, 1, 1); + sub_809286C(10, 1, 1); + sub_809286C(5, 1, 1); + sub_809286C(6, 1, 1); + sub_809286C(7, 1, 0); + sub_809286C(8, 1, 0); + sub_809286C(9, 1, 0); + break; + case 2: + sub_809286C(0, 1, 0); + sub_809286C(1, 1, 0); + sub_809286C(2, 0, 0); + sub_809286C(3, 1, 1); + sub_809286C(4, 1, 1); + sub_809286C(10, 1, 1); + sub_809286C(5, 1, 1); + sub_809286C(6, 1, 1); + sub_809286C(7, 1, 1); + sub_809286C(8, 1, 1); + sub_809286C(9, 1, 1); + break; + } +} + +void sub_8092AB0(u8 a) +{ + sub_8092964(a); + sub_8091E20(gUnknown_083B57E4[a].text); +} + +void sub_8092AD4(u8 a, u8 b) +{ + sub_8092964(a); + switch (b) + { + case 0: + sub_809286C(3, 0, 0); + break; + case 1: + sub_809286C(4, 0, 0); + break; + case 2: + sub_809286C(10, 0, 0); + sub_809286C(5, 0, 0); + break; + case 3: + sub_809286C(10, 0, 0); + sub_809286C(6, 0, 0); + break; + case 4: + sub_809286C(7, 0, 0); + break; + case 5: + sub_809286C(8, 0, 0); + break; + case 6: + sub_809286C(9, 0, 0); + break; + } + sub_8091E20(gUnknown_083B57FC[b].text); +} + +void sub_8092B68(u8 taskId) +{ + u16 var; + + var = gTasks[taskId].data[6] + gTasks[taskId].data[7]; + StringCopy(gStringVar1, gUnknown_083B5910[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 16, 1); + + var = gTasks[taskId].data[8] + gTasks[taskId].data[9]; + StringCopy(gStringVar1, gUnknown_083B5968[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 32, 1); + + var = gTasks[taskId].data[10] + gTasks[taskId].data[11]; + StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AAC, 45, 48, 1); + + var = gTasks[taskId].data[12] + gTasks[taskId].data[13]; + StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AAC, 93, 48, 1); + + var = gTasks[taskId].data[4] + gTasks[taskId].data[5]; + StringCopy(gStringVar1, gUnknown_083B58D8[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 64, 1); + + if (IsNationalPokedexEnabled()) + { + var = gTasks[taskId].data[2] + gTasks[taskId].data[3]; + StringCopy(gStringVar1, gUnknown_083B58C0[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 80, 1); + } +} + +void sub_8092C8C(u8 a) +{ + u16 i; + u16 j; + + if (a == 0) + { + *((u16 *)(VRAM + 0x7800 + 0x22)) = 0xC0B; + for (i = 0x12; i < 0x1D; i++) + *((u16 *)(VRAM + 0x7800 + i * 2)) = 0x80D; + *((u16 *)(VRAM + 0x7800 + 0x3A)) = 0x80B; + for (j = 1; j < 13; j++) + { + *((u16 *)(VRAM + 0x7800 + 0x22 + j * 64)) = 0x40A; + for (i = 0x12; i < 0x1D; i++) + *((u16 *)(VRAM + 0x7800 + j * 64 + i * 2)) = 2; + *((u16 *)(VRAM + 0x7800 + 0x3A + j * 64)) = 0xA; + } + *((u16 *)(VRAM + 0x7800 + 0x362)) = 0x40B; + for (i = 0x12; i < 0x1D; i++) + *((u16 *)(VRAM + 0x7800 + 0x340 + i * 2)) = 0xD; + *((u16 *)(VRAM + 0x7800 + 0x37A)) = 0xB; + } + else + { + for (j = 0; j < 14; j++) + { + for (i = 0x11; i < 0x1E; i++) + { + *((u16 *)(VRAM + 0x7800 + j * 64 + i * 2)) = 0x4F; + } + } + } +} + +void sub_8092D78(u8 taskId) +{ + const struct UnknownStruct2 *r6 = gUnknown_083B5A7C[gTasks[taskId].data[1]].unk0; + const u16 *r8 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk4]; + const u16 *r7 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk5]; + u16 i; + u16 j; + + MenuZeroFillWindowRect(18, 1, 28, 12); + for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++) + { +#ifndef NONMATCHING + j += 0; // Useless statement needed to match +#endif + MenuPrint(r6[j].text2, 18, i * 2 + 1); + } + sub_8091E20(r6[*r8 + *r7].text1); +} + +u8 sub_8092E10(u8 taskId, u8 b) +{ + const u16 *ptr1 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk4]; + const u16 *ptr2 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk5]; + u16 r2 = *ptr1 + *ptr2; + + switch (b) + { + default: + return 0; + case 5: + return gUnknown_083B5A60[r2]; + case 4: + return gUnknown_083B5A62[r2]; + case 0: + if (r2 == 0) + return 0xFF; + else + return r2; + case 1: + if (r2 == 0) + return 0xFF; + else + return r2 - 1; + case 2: + case 3: + return gUnknown_083B5A68[r2]; + } +} + +void sub_8092EB0(u8 taskId) +{ + u16 r3; + + switch (gPokedexView->unk614) + { + default: + case 0: + r3 = 0; + break; + case 1: + r3 = 1; + break; + } + gTasks[taskId].data[2] = r3; + + switch (gPokedexView->unk618) + { + default: + case 0: + r3 = 0; + break; + case 1: + r3 = 1; + break; + case 2: + r3 = 2; + break; + case 3: + r3 = 3; + break; + case 4: + r3 = 4; + break; + case 5: + r3 = 5; + break; + } + gTasks[taskId].data[4] = r3; +} + +bool8 sub_8092F44(u8 taskId) +{ + u8 val1 = gTasks[taskId].data[1]; + const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5]; + u16 val2 = gUnknown_083B5A7C[val1].unk6 - 1; + + if (val2 > 5 && *ptr != 0) + return FALSE; + else + return TRUE; +} + +bool8 sub_8092F8C(u8 taskId) +{ + u8 val1 = gTasks[taskId].data[1]; + const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5]; + u16 val2 = gUnknown_083B5A7C[val1].unk6 - 1; + + if (val2 > 5 && *ptr < val2 - 5) + return FALSE; + else + return TRUE; +} + +void sub_8092FD8(struct Sprite *sprite) +{ + if (gTasks[sprite->data0].func == sub_8092644) + { + u8 val; + + if (sprite->data1 != 0) + { + if (sub_8092F8C(sprite->data0)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + else + { + if (sub_8092F44(sprite->data0)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + val = sprite->data2 + sprite->data1 * 128; + sprite->pos2.y = gSineTable[val] / 128; + sprite->data2 += 8; + } + else + { + sprite->invisible = TRUE; + } +} + +void sub_809308C(u8 taskId) +{ + u8 spriteId; + + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 4, 0); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 0; + gSprites[spriteId].callback = sub_8092FD8; + + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 108, 0); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 1; + gSprites[spriteId].vFlip = TRUE; + gSprites[spriteId].callback = sub_8092FD8; +} |