diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2016-10-31 02:24:20 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2016-10-31 00:24:20 -0700 |
commit | 447b23ff24a4011001a620199fb9ac790052681c (patch) | |
tree | 05c23cfce9797d030fb417f2a771d619b9a72137 | |
parent | 506cb08c794af5511026281a2b806ac351a59997 (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.s | 1000 | ||||
-rw-r--r-- | src/pokedex.c | 867 |
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); +} |