diff options
author | Marcus Huderle <huderlem@gmail.com> | 2018-08-16 20:42:30 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2018-08-16 20:57:02 -0500 |
commit | 01d44429a35584b44d820a14751ba03734e63701 (patch) | |
tree | 77df278c8f0385e087bd17fc1620872dacff90ba | |
parent | c4162d997dd0ca440fe95ac4fbe54f1d85c365f3 (diff) |
Decompile even more pokenav
-rw-r--r-- | asm/pokenav.s | 3478 | ||||
-rw-r--r-- | include/pokenav.h | 67 | ||||
-rw-r--r-- | include/region_map.h | 1 | ||||
-rw-r--r-- | include/use_pokeblock.h | 1 | ||||
-rw-r--r-- | src/pokenav_before.c | 1549 | ||||
-rw-r--r-- | src/use_pokeblock.c | 4 |
6 files changed, 1563 insertions, 3537 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 1e3c6fe5c..cac79bbcb 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,3484 +5,6 @@ .text - thumb_func_start sub_80F162C -sub_80F162C: @ 80F162C - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F164C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F1650 @ =0x00008764 - adds r0, r2 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F165E - cmp r0, 0x1 - bgt _080F1654 - cmp r0, 0 - beq _080F16F0 - b _080F16D0 - .align 2, 0 -_080F164C: .4byte gUnknown_083DFEC4 -_080F1650: .4byte 0x00008764 -_080F1654: - cmp r0, 0x2 - beq _080F1670 - cmp r0, 0x3 - beq _080F1694 - b _080F16D0 -_080F165E: - ldr r0, _080F1668 @ =gUnknown_08E9FF58 - ldr r1, _080F166C @ =0x0600e800 - bl LZ77UnCompVram - b _080F16F0 - .align 2, 0 -_080F1668: .4byte gUnknown_08E9FF58 -_080F166C: .4byte 0x0600e800 -_080F1670: - ldr r1, _080F1684 @ =gPokenavRibbonPokeView_Gfx - ldr r2, _080F1688 @ =0x0600e000 - ldr r0, _080F168C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080F1690 @ =0x80000070 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080F16F0 - .align 2, 0 -_080F1684: .4byte gPokenavRibbonPokeView_Gfx -_080F1688: .4byte 0x0600e000 -_080F168C: .4byte 0x040000d4 -_080F1690: .4byte 0x80000070 -_080F1694: - cmp r1, 0 - bne _080F16A8 - ldr r0, _080F16A4 @ =gUnknown_083E0124 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - b _080F16B2 - .align 2, 0 -_080F16A4: .4byte gUnknown_083E0124 -_080F16A8: - ldr r0, _080F16D4 @ =gUnknown_083E0144 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette -_080F16B2: - ldr r0, _080F16D8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r3, _080F16DC @ =0x00008766 - adds r2, r1, r3 - ldr r0, _080F16E0 @ =0x0000ffb0 - strh r0, [r2] - ldr r2, _080F16E4 @ =REG_BG0CNT - ldr r3, _080F16E8 @ =0x00001d0d - adds r0, r3, 0 - strh r0, [r2] - ldr r0, _080F16EC @ =0x00008764 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F16D0: - movs r0, 0 - b _080F1700 - .align 2, 0 -_080F16D4: .4byte gUnknown_083E0144 -_080F16D8: .4byte gUnknown_083DFEC4 -_080F16DC: .4byte 0x00008766 -_080F16E0: .4byte 0x0000ffb0 -_080F16E4: .4byte REG_BG0CNT -_080F16E8: .4byte 0x00001d0d -_080F16EC: .4byte 0x00008764 -_080F16F0: - ldr r0, _080F1704 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1708 @ =0x00008764 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F1700: - pop {r1} - bx r1 - .align 2, 0 -_080F1704: .4byte gUnknown_083DFEC4 -_080F1708: .4byte 0x00008764 - thumb_func_end sub_80F162C - - thumb_func_start sub_80F170C -sub_80F170C: @ 80F170C - push {lr} - ldr r0, _080F1734 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F1738 @ =0x00008766 - adds r1, r0, r2 - ldrh r0, [r1] - adds r0, 0x10 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - ble _080F1726 - movs r0, 0 - strh r0, [r1] -_080F1726: - movs r0, 0 - ldrsh r1, [r1, r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r1} - bx r1 - .align 2, 0 -_080F1734: .4byte gUnknown_083DFEC4 -_080F1738: .4byte 0x00008766 - thumb_func_end sub_80F170C - - thumb_func_start sub_80F173C -sub_80F173C: @ 80F173C - push {lr} - ldr r0, _080F176C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F1770 @ =0x00008766 - adds r1, r0, r2 - ldrh r0, [r1] - subs r0, 0x10 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x50 - negs r2, r2 - cmp r0, r2 - bge _080F175C - ldr r0, _080F1774 @ =0x0000ffb0 - strh r0, [r1] -_080F175C: - movs r0, 0 - ldrsh r1, [r1, r0] - eors r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r1} - bx r1 - .align 2, 0 -_080F176C: .4byte gUnknown_083DFEC4 -_080F1770: .4byte 0x00008766 -_080F1774: .4byte 0x0000ffb0 - thumb_func_end sub_80F173C - - thumb_func_start sub_80F1778 -sub_80F1778: @ 80F1778 - push {r4,lr} - sub sp, 0x14 - ldr r0, _080F1798 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F179C @ =0x0000d160 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x9 - bls _080F178C - b _080F1910 -_080F178C: - lsls r0, 2 - ldr r1, _080F17A0 @ =_080F17A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F1798: .4byte gUnknown_083DFEC4 -_080F179C: .4byte 0x0000d160 -_080F17A0: .4byte _080F17A4 - .align 2, 0 -_080F17A4: - .4byte _080F17CC - .4byte _080F17E8 - .4byte _080F17EE - .4byte _080F17FE - .4byte _080F1810 - .4byte _080F1830 - .4byte _080F1858 - .4byte _080F186C - .4byte _080F18B8 - .4byte _080F18D8 -_080F17CC: - bl sub_80EEDE8 - ldr r0, _080F17E0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F17E4 @ =0x0000d162 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0] - b _080F1914 - .align 2, 0 -_080F17E0: .4byte gUnknown_083DFEC4 -_080F17E4: .4byte 0x0000d162 -_080F17E8: - bl sub_80F1614 - b _080F1914 -_080F17EE: - movs r0, 0 - bl sub_80F162C - lsls r0, 24 - cmp r0, 0 - bne _080F17FC - b _080F1914 -_080F17FC: - b _080F1922 -_080F17FE: - ldr r0, _080F1808 @ =gPokenavConditionView_Gfx - ldr r1, _080F180C @ =0x06005000 - bl LZ77UnCompVram - b _080F1914 - .align 2, 0 -_080F1808: .4byte gPokenavConditionView_Gfx -_080F180C: .4byte 0x06005000 -_080F1810: - ldr r0, _080F1824 @ =gUnknown_08E9AC4C - ldr r1, _080F1828 @ =0x0600f000 - bl LZ77UnCompVram - ldr r0, _080F182C @ =gPokenavConditionMenu2_Pal - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - b _080F1914 - .align 2, 0 -_080F1824: .4byte gUnknown_08E9AC4C -_080F1828: .4byte 0x0600f000 -_080F182C: .4byte gPokenavConditionMenu2_Pal -_080F1830: - ldr r0, _080F1850 @ =0x0600f000 - ldr r3, _080F1854 @ =gUnknown_083E01F4 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r2, 0xC - str r2, [sp, 0x8] - movs r1, 0x4 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0 - movs r2, 0xD - bl sub_8095C8C - b _080F1914 - .align 2, 0 -_080F1850: .4byte 0x0600f000 -_080F1854: .4byte gUnknown_083E01F4 -_080F1858: - ldr r0, _080F1864 @ =gUnknown_08E9FEB4 - ldr r1, _080F1868 @ =0x0600b800 - bl LZ77UnCompVram - b _080F1914 - .align 2, 0 -_080F1864: .4byte gUnknown_08E9FEB4 -_080F1868: .4byte 0x0600b800 -_080F186C: - ldr r0, _080F18AC @ =gUnknown_083E0254 - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080F18B0 @ =gUnknownPalette_81E6692 - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - ldr r4, _080F18B4 @ =gPokenavConditionMenu2_Pal + 0x2 - adds r0, r4, 0 - movs r1, 0xB1 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - adds r0, 0xE - movs r1, 0xB5 - movs r2, 0x2 - bl LoadPalette - adds r4, 0x1C - adds r0, r4, 0 - movs r1, 0xBF - movs r2, 0x2 - bl LoadPalette - bl sub_80F01A4 - b _080F1914 - .align 2, 0 -_080F18AC: .4byte gUnknown_083E0254 -_080F18B0: .4byte gUnknownPalette_81E6692 -_080F18B4: .4byte gPokenavConditionMenu2_Pal + 0x2 -_080F18B8: - ldr r0, _080F18D0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F18D4 @ =0x00008fe9 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - bl sub_80F01E0 - b _080F1914 - .align 2, 0 -_080F18D0: .4byte gUnknown_083DFEC4 -_080F18D4: .4byte 0x00008fe9 -_080F18D8: - ldr r1, _080F18FC @ =REG_BG3CNT - ldr r2, _080F1900 @ =0x00001e03 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _080F1904 @ =0x00001702 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x44 - ldr r2, _080F1908 @ =0x00000844 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080F190C @ =0x0000040b - adds r0, r2, 0 - strh r0, [r1] - b _080F1914 - .align 2, 0 -_080F18FC: .4byte REG_BG3CNT -_080F1900: .4byte 0x00001e03 -_080F1904: .4byte 0x00001702 -_080F1908: .4byte 0x00000844 -_080F190C: .4byte 0x0000040b -_080F1910: - movs r0, 0 - b _080F1924 -_080F1914: - ldr r0, _080F192C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1930 @ =0x0000d160 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F1922: - movs r0, 0x1 -_080F1924: - add sp, 0x14 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F192C: .4byte gUnknown_083DFEC4 -_080F1930: .4byte 0x0000d160 - thumb_func_end sub_80F1778 - - thumb_func_start sub_80F1934 -sub_80F1934: @ 80F1934 - push {r4,r5,lr} - ldr r0, _080F1990 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1994 @ =0x00008788 - adds r5, r1, r0 - ldr r3, _080F1998 @ =0x000087dc - adds r2, r1, r3 - movs r3, 0 - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r1, r0 - ldr r0, _080F199C @ =0x0000893f - adds r1, r0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _080F19AC - ldrb r0, [r2] - bl sub_8137124 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _080F19A0 @ =gPlayerParty - adds r0, r1 - bl GetNature - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080F19A4 @ =gOtherText_Nature2 - adds r0, r5, 0 - bl StringCopy - adds r5, r0, 0 - ldr r0, _080F19A8 @ =gNatureNames - lsls r4, 2 - adds r4, r0 - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x57 - movs r3, 0 - bl AlignStringInMenuWindow - b _080F19B8 - .align 2, 0 -_080F1990: .4byte gUnknown_083DFEC4 -_080F1994: .4byte 0x00008788 -_080F1998: .4byte 0x000087dc -_080F199C: .4byte 0x0000893f -_080F19A0: .4byte gPlayerParty -_080F19A4: .4byte gOtherText_Nature2 -_080F19A8: .4byte gNatureNames -_080F19AC: - ldr r1, _080F19D0 @ =gEmptyString_81E72B0 - adds r0, r5, 0 - movs r2, 0x57 - movs r3, 0 - bl AlignStringInMenuWindow -_080F19B8: - ldr r0, _080F19D4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F19D8 @ =0x00008788 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x70 - movs r3, 0x1 - bl Menu_PrintTextPixelCoords - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F19D0: .4byte gEmptyString_81E72B0 -_080F19D4: .4byte gUnknown_083DFEC4 -_080F19D8: .4byte 0x00008788 - thumb_func_end sub_80F1934 - - thumb_func_start sub_80F19DC -sub_80F19DC: @ 80F19DC - push {lr} - adds r1, r0, 0 - b _080F19E4 -_080F19E2: - adds r1, 0x1 -_080F19E4: - ldrb r0, [r1] - cmp r0, 0xFF - beq _080F19F8 - cmp r0, 0xFC - bne _080F19E2 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080F19E2 - movs r0, 0xFF - strb r0, [r1] -_080F19F8: - pop {r0} - bx r0 - thumb_func_end sub_80F19DC - - thumb_func_start sub_80F19FC -sub_80F19FC: @ 80F19FC - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _080F1A68 @ =gUnknown_020388B0 - ldrb r4, [r5] - cmp r4, 0x1 - bne _080F1A60 - ldr r0, _080F1A6C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1A70 @ =0x00006e2c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0x3 - adds r1, r2 - ldrb r1, [r1] - ldrb r2, [r5, 0x1] - bl GetLandmarkName - cmp r0, 0 - beq _080F1A46 - ldrb r2, [r5, 0x1] - lsls r2, 20 - movs r1, 0xC0 - lsls r1, 14 - adds r2, r1 - lsrs r2, 16 - str r4, [sp] - movs r1, 0x70 - movs r3, 0x78 - bl sub_8072A18 - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080F1A60 -_080F1A46: - ldrb r1, [r5, 0x1] - lsls r1, 25 - movs r2, 0xC0 - lsls r2, 19 - adds r1, r2 - lsrs r1, 24 - movs r0, 0xE - movs r2, 0x1C - movs r3, 0xF - bl Menu_BlankWindowRect - movs r0, 0 - strb r0, [r5] -_080F1A60: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1A68: .4byte gUnknown_020388B0 -_080F1A6C: .4byte gUnknown_083DFEC4 -_080F1A70: .4byte 0x00006e2c - thumb_func_end sub_80F19FC - - thumb_func_start sub_80F1A74 -sub_80F1A74: @ 80F1A74 - ldr r1, _080F1A7C @ =gUnknown_020388B0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_080F1A7C: .4byte gUnknown_020388B0 - thumb_func_end sub_80F1A74 - - thumb_func_start sub_80F1A80 -sub_80F1A80: @ 80F1A80 - ldr r0, _080F1A8C @ =gUnknown_020388B0 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - strb r2, [r0, 0x1] - bx lr - .align 2, 0 -_080F1A8C: .4byte gUnknown_020388B0 - thumb_func_end sub_80F1A80 - - thumb_func_start sub_80F1A90 -sub_80F1A90: @ 80F1A90 - push {lr} - ldr r0, _080F1AB8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1ABC @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F1AC0 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F1AB2 -_080F1AA8: - bl sub_80F1AC4 - lsls r0, 24 - cmp r0, 0 - bne _080F1AA8 -_080F1AB2: - pop {r0} - bx r0 - .align 2, 0 -_080F1AB8: .4byte gUnknown_083DFEC4 -_080F1ABC: .4byte 0x00000306 -_080F1AC0: .4byte 0x00006dac - thumb_func_end sub_80F1A90 - - thumb_func_start sub_80F1AC4 -sub_80F1AC4: @ 80F1AC4 - push {r4,r5,lr} - ldr r0, _080F1AE0 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1AE4 @ =0x00000306 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F1B34 - cmp r0, 0x1 - bgt _080F1AE8 - cmp r0, 0 - beq _080F1AF2 - b _080F1B6C - .align 2, 0 -_080F1AE0: .4byte gUnknown_083DFEC4 -_080F1AE4: .4byte 0x00000306 -_080F1AE8: - cmp r0, 0x2 - beq _080F1B40 - cmp r0, 0x3 - beq _080F1B54 - b _080F1B6C -_080F1AF2: - movs r0, 0 - movs r2, 0xC8 - lsls r2, 2 - adds r4, r1, r2 - movs r5, 0 -_080F1AFC: - movs r2, 0 - adds r1, r0, 0x1 - lsls r3, r0, 4 -_080F1B02: - lsls r0, r2, 2 - adds r0, r3 - adds r0, r4, r0 - str r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _080F1B02 - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0x5 - bls _080F1AFC - ldr r0, _080F1B2C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1B30 @ =0x00000311 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - b _080F1B6C - .align 2, 0 -_080F1B2C: .4byte gUnknown_083DFEC4 -_080F1B30: .4byte 0x00000311 -_080F1B34: - ldr r0, _080F1B3C @ =gPokenavMenuOptions_Gfx - movs r2, 0xE2 - lsls r2, 2 - b _080F1B44 - .align 2, 0 -_080F1B3C: .4byte gPokenavMenuOptions_Gfx -_080F1B40: - ldr r0, _080F1B4C @ =gPokenavConditionMenu_Gfx - ldr r2, _080F1B50 @ =0x00001788 -_080F1B44: - adds r1, r2 - bl LZ77UnCompWram - b _080F1B6C - .align 2, 0 -_080F1B4C: .4byte gPokenavConditionMenu_Gfx -_080F1B50: .4byte 0x00001788 -_080F1B54: - ldr r0, _080F1B64 @ =gPokenavConditionSearch_Gfx - ldr r2, _080F1B68 @ =0x00002388 - adds r1, r2 - bl LZ77UnCompWram - movs r0, 0 - b _080F1B7C - .align 2, 0 -_080F1B64: .4byte gPokenavConditionSearch_Gfx -_080F1B68: .4byte 0x00002388 -_080F1B6C: - ldr r0, _080F1B84 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1B88 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F1B7C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F1B84: .4byte gUnknown_083DFEC4 -_080F1B88: .4byte 0x00000306 - thumb_func_end sub_80F1AC4 - - thumb_func_start sub_80F1B8C -sub_80F1B8C: @ 80F1B8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080F1BBC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1BC0 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F1BC4 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F1BB4 -_080F1BA8: - adds r0, r4, 0 - bl sub_80F1BC8 - lsls r0, 24 - cmp r0, 0 - bne _080F1BA8 -_080F1BB4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1BBC: .4byte gUnknown_083DFEC4 -_080F1BC0: .4byte 0x00000306 -_080F1BC4: .4byte 0x00006dac - thumb_func_end sub_80F1B8C - - thumb_func_start sub_80F1BC8 -sub_80F1BC8: @ 80F1BC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F1BF4 @ =gUnknown_083DFEC4 - ldr r2, [r1] - ldr r3, _080F1BF8 @ =0x00000306 - adds r0, r2, r3 - ldrh r0, [r0] - adds r3, r1, 0 - cmp r0, 0x1 - beq _080F1C0A - cmp r0, 0x1 - bgt _080F1BFC - cmp r0, 0 - beq _080F1C02 - b _080F1DC4 - .align 2, 0 -_080F1BF4: .4byte gUnknown_083DFEC4 -_080F1BF8: .4byte 0x00000306 -_080F1BFC: - cmp r0, 0x2 - beq _080F1C12 - b _080F1DC4 -_080F1C02: - mov r0, r9 - bl sub_80F2458 - b _080F1DC8 -_080F1C0A: - mov r0, r9 - bl sub_80F2514 - b _080F1DC8 -_080F1C12: - mov r4, r9 - cmp r4, 0x1 - beq _080F1C40 - cmp r4, 0x1 - bgt _080F1C22 - cmp r4, 0 - beq _080F1C2A - b _080F1DC4 -_080F1C22: - mov r5, r9 - cmp r5, 0x2 - beq _080F1C54 - b _080F1DC4 -_080F1C2A: - movs r0, 0x2A - str r0, [sp, 0x4] - movs r1, 0x14 - str r1, [sp, 0x8] - ldr r4, _080F1C3C @ =0x0000030e - adds r1, r2, r4 - movs r0, 0x5 - b _080F1C62 - .align 2, 0 -_080F1C3C: .4byte 0x0000030e -_080F1C40: - movs r5, 0x38 - str r5, [sp, 0x4] - movs r0, 0x14 - str r0, [sp, 0x8] - ldr r4, _080F1C50 @ =0x0000030e - adds r1, r2, r4 - movs r0, 0x3 - b _080F1C62 - .align 2, 0 -_080F1C50: .4byte 0x0000030e -_080F1C54: - movs r5, 0x28 - str r5, [sp, 0x4] - movs r0, 0x10 - str r0, [sp, 0x8] - ldr r4, _080F1CDC @ =0x0000030e - adds r1, r2, r4 - movs r0, 0x6 -_080F1C62: - strb r0, [r1] - movs r5, 0 - str r5, [sp] - mov r8, r5 - adds r1, r3, 0 - ldr r0, [r1] - ldr r2, _080F1CDC @ =0x0000030e - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r8, r0 - blt _080F1C7E - b _080F1DC8 -_080F1C7E: - ldr r4, [sp, 0x8] - mov r3, r8 - muls r3, r4 - ldr r5, [sp, 0x4] - adds r0, r5, r3 - subs r0, 0x8 - lsls r0, 16 - lsrs r0, 16 - ldr r4, [r1] - mov r2, r8 - lsls r1, r2, 1 - movs r5, 0xC5 - lsls r5, 2 - adds r2, r4, r5 - adds r2, r1 - lsls r1, r0, 8 - adds r0, 0x11 - orrs r1, r0 - strh r1, [r2] - mov r0, r9 - cmp r0, 0 - bne _080F1CF2 - ldr r1, _080F1CE0 @ =0x00006db2 - adds r0, r4, r1 - mov r2, r8 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _080F1CE8 - movs r5, 0 - ldr r0, _080F1CE4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r2, 4 - movs r3, 0xC8 - lsls r3, 2 - adds r1, r0, r3 - movs r3, 0 -_080F1CC8: - lsls r0, r5, 2 - adds r0, r2 - adds r0, r1, r0 - str r3, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080F1CC8 - b _080F1D92 - .align 2, 0 -_080F1CDC: .4byte 0x0000030e -_080F1CE0: .4byte 0x00006db2 -_080F1CE4: .4byte gUnknown_083DFEC4 -_080F1CE8: - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 18 - lsrs r0, 16 - str r0, [sp] -_080F1CF2: - movs r5, 0 - ldr r4, [sp, 0x4] - adds r0, r4, r3 - lsls r0, 16 - mov r10, r0 -_080F1CFC: - lsls r6, r5, 5 - movs r0, 0x80 - lsls r0, 1 - adds r7, r6, r0 - lsls r1, r7, 16 - asrs r1, 16 - ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454 - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F1DC4 - ldr r0, _080F1DB8 @ =gUnknown_083DFEC4 - ldr r2, [r0] - lsls r1, r5, 2 - mov r4, r8 - lsls r0, r4, 4 - adds r1, r0 - movs r0, 0xC8 - lsls r0, 2 - adds r2, r0 - adds r4, r2, r1 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r1, _080F1DBC @ =gSprites - adds r0, r1 - str r0, [r4] - mov r1, r8 - strh r1, [r0, 0x2E] - ldr r0, [r4] - strh r5, [r0, 0x30] - ldr r1, [r4] - adds r0, r6, 0 - adds r0, 0x98 - strh r0, [r1, 0x32] - ldr r0, [r4] - strh r7, [r0, 0x34] - ldr r0, [r4] - ldr r1, [sp] - adds r2, r1, 0x1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp] - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - mov r2, r9 - cmp r2, 0x2 - beq _080F1D6E - cmp r2, 0 - bne _080F1D88 -_080F1D6E: - mov r3, r8 - cmp r3, 0x2 - bls _080F1D88 - movs r0, 0x1 - bl IndexOfSpritePaletteTag - ldr r3, [r4] - lsls r0, 4 - ldrb r2, [r3, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x5] -_080F1D88: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080F1CFC -_080F1D92: - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, _080F1DB8 @ =gUnknown_083DFEC4 - ldr r0, [r1] - ldr r4, _080F1DC0 @ =0x0000030e - adds r0, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r8, r0 - bge _080F1DB0 - b _080F1C7E -_080F1DB0: - b _080F1DC8 - .align 2, 0 -_080F1DB4: .4byte gSpriteTemplate_83E4454 -_080F1DB8: .4byte gUnknown_083DFEC4 -_080F1DBC: .4byte gSprites -_080F1DC0: .4byte 0x0000030e -_080F1DC4: - movs r0, 0 - b _080F1DD8 -_080F1DC8: - ldr r0, _080F1DE8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r5, _080F1DEC @ =0x00000306 - adds r1, r5 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F1DD8: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F1DE8: .4byte gUnknown_083DFEC4 -_080F1DEC: .4byte 0x00000306 - thumb_func_end sub_80F1BC8 - - thumb_func_start sub_80F1DF0 -sub_80F1DF0: @ 80F1DF0 - push {r4-r6,lr} - movs r2, 0 - ldr r0, _080F1E44 @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r0, _080F1E48 @ =0x0000030e - adds r1, r3, r0 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r2, r0 - bge _080F1E38 - movs r0, 0xC8 - lsls r0, 2 - adds r4, r3, r0 - adds r6, r1, 0 - ldr r5, _080F1E4C @ =sub_80F2218 -_080F1E0E: - movs r1, 0 - adds r3, r2, 0x1 - lsls r2, 4 -_080F1E14: - lsls r0, r1, 2 - adds r0, r2 - adds r0, r4, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F1E22 - str r5, [r0, 0x1C] -_080F1E22: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F1E14 - lsls r0, r3, 16 - lsrs r2, r0, 16 - movs r0, 0 - ldrsb r0, [r6, r0] - cmp r2, r0 - blt _080F1E0E -_080F1E38: - movs r0, 0x6 - bl PlaySE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F1E44: .4byte gUnknown_083DFEC4 -_080F1E48: .4byte 0x0000030e -_080F1E4C: .4byte sub_80F2218 - thumb_func_end sub_80F1DF0 - - thumb_func_start sub_80F1E50 -sub_80F1E50: @ 80F1E50 - push {lr} - bl sub_80F22F8 - lsls r0, 24 - cmp r0, 0 - bne _080F1E60 - movs r0, 0x1 - b _080F1E66 -_080F1E60: - bl sub_80F2108 - movs r0, 0 -_080F1E66: - pop {r1} - bx r1 - thumb_func_end sub_80F1E50 - - thumb_func_start sub_80F1E6C -sub_80F1E6C: @ 80F1E6C - push {lr} - bl sub_80F22F8 - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _080F1E7C - movs r1, 0x1 -_080F1E7C: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_80F1E6C - - thumb_func_start sub_80F1E84 -sub_80F1E84: @ 80F1E84 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, _080F1EFC @ =gUnknown_083DFEC4 - ldr r4, [r5] - ldr r1, _080F1F00 @ =0x0000030f - adds r0, r4, r1 - movs r1, 0 - strb r1, [r0] - bl sub_80F2148 - movs r2, 0 - ldr r3, _080F1F04 @ =0x0000030e - adds r1, r4, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r2, r0 - bge _080F1EF2 - ldr r0, _080F1F08 @ =0x00006dad - adds r7, r4, r0 - adds r6, r1, 0 - mov r8, r5 - ldr r1, _080F1F0C @ =sub_80F2240 - mov r12, r1 -_080F1EB4: - movs r0, 0 - ldrsb r0, [r7, r0] - adds r5, r2, 0x1 - cmp r2, r0 - beq _080F1EE6 - movs r1, 0 - mov r3, r8 - ldr r0, [r3] - lsls r3, r2, 4 - movs r4, 0xC8 - lsls r4, 2 - adds r2, r0, r4 - mov r4, r12 -_080F1ECE: - lsls r0, r1, 2 - adds r0, r3 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F1EDC - str r4, [r0, 0x1C] -_080F1EDC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F1ECE -_080F1EE6: - lsls r0, r5, 16 - lsrs r2, r0, 16 - movs r0, 0 - ldrsb r0, [r6, r0] - cmp r2, r0 - blt _080F1EB4 -_080F1EF2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1EFC: .4byte gUnknown_083DFEC4 -_080F1F00: .4byte 0x0000030f -_080F1F04: .4byte 0x0000030e -_080F1F08: .4byte 0x00006dad -_080F1F0C: .4byte sub_80F2240 - thumb_func_end sub_80F1E84 - - thumb_func_start sub_80F1F10 -sub_80F1F10: @ 80F1F10 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080F1F2C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F1F30 @ =0x0000030f - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F1F34 - cmp r0, 0x1 - beq _080F1FC0 - b _080F1FE4 - .align 2, 0 -_080F1F2C: .4byte gUnknown_083DFEC4 -_080F1F30: .4byte 0x0000030f -_080F1F34: - bl sub_80F2360 - lsls r0, 24 - cmp r0, 0 - beq _080F1FE4 - movs r6, 0 - adds r7, r4, 0 - movs r0, 0xC8 - lsls r0, 2 - adds r0, r7 - mov r8, r0 -_080F1F4A: - lsls r5, r6, 2 - ldr r1, _080F1FAC @ =0x00006dad - adds r0, r7, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 4 - adds r0, r5, r0 - add r0, r8 - ldr r4, [r0] - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, _080F1FB0 @ =gSpriteAffineAnimTable_83E4450 - str r0, [r4, 0x10] - adds r0, r4, 0 - bl InitSpriteAffineAnim - subs r5, 0x6 - strh r5, [r4, 0x36] - movs r1, 0x36 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x36] - movs r1, 0x36 - ldrsh r0, [r4, r1] - lsls r0, 3 - strh r0, [r4, 0x38] - ldr r0, _080F1FB4 @ =sub_80F2240 - str r0, [r4, 0x1C] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _080F1F4A - bl sub_80F2170 - ldr r0, _080F1FB8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1FBC @ =0x0000030f - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080F1FE4 - .align 2, 0 -_080F1FAC: .4byte 0x00006dad -_080F1FB0: .4byte gSpriteAffineAnimTable_83E4450 -_080F1FB4: .4byte sub_80F2240 -_080F1FB8: .4byte gUnknown_083DFEC4 -_080F1FBC: .4byte 0x0000030f -_080F1FC0: - bl sub_80F23C8 - lsls r0, 24 - cmp r0, 0 - beq _080F1FE4 - bl sub_80F21F8 - movs r0, 0 - bl FreeSpriteTilesByTag - movs r0, 0 - bl FreeSpritePaletteByTag - movs r0, 0x1 - bl FreeSpritePaletteByTag - movs r0, 0 - b _080F1FE6 -_080F1FE4: - movs r0, 0x1 -_080F1FE6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F1F10 - - thumb_func_start sub_80F1FF0 -sub_80F1FF0: @ 80F1FF0 - push {r4,lr} - ldr r0, _080F203C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F2040 @ =0x00000311 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F2058 - ldr r2, _080F2044 @ =REG_WIN0V - ldr r3, _080F2048 @ =0x00006dad - adds r0, r4, r3 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r1, 1 - movs r3, 0xC5 - lsls r3, 2 - adds r0, r4, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldr r3, _080F204C @ =REG_BLDY - ldr r1, _080F2050 @ =gSineTable - ldr r0, _080F2054 @ =0x00000312 - adds r2, r4, r0 - ldrh r0, [r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r3] - ldrh r0, [r2] - adds r0, 0x3 - movs r1, 0x7F - ands r0, r1 - strh r0, [r2] - b _080F2078 - .align 2, 0 -_080F203C: .4byte gUnknown_083DFEC4 -_080F2040: .4byte 0x00000311 -_080F2044: .4byte REG_WIN0V -_080F2048: .4byte 0x00006dad -_080F204C: .4byte REG_BLDY -_080F2050: .4byte gSineTable -_080F2054: .4byte 0x00000312 -_080F2058: - cmp r0, 0x2 - bne _080F2078 - ldr r2, _080F2080 @ =REG_BLDALPHA - ldr r1, _080F2084 @ =gUnknown_083E42F8 - ldr r0, _080F2088 @ =0x00000312 - adds r3, r4, r0 - ldrh r0, [r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldrh r0, [r3] - cmp r0, 0xE - bhi _080F2078 - adds r0, 0x1 - strh r0, [r3] -_080F2078: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2080: .4byte REG_BLDALPHA -_080F2084: .4byte gUnknown_083E42F8 -_080F2088: .4byte 0x00000312 - thumb_func_end sub_80F1FF0 - - thumb_func_start sub_80F208C -sub_80F208C: @ 80F208C - push {lr} - bl sub_80F2148 - pop {r0} - bx r0 - thumb_func_end sub_80F208C - - thumb_func_start sub_80F2098 -sub_80F2098: @ 80F2098 - ldr r1, _080F20DC @ =REG_WIN0H - ldr r2, _080F20E0 @ =0x000077f0 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080F20E4 @ =REG_WIN0V - ldr r0, _080F20E8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r3, _080F20EC @ =0x00006dad - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - movs r3, 0xC5 - lsls r3, 2 - adds r1, r3 - adds r1, r0 - ldrh r0, [r1] - strh r0, [r2] - ldr r1, _080F20F0 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x1F - strh r0, [r1] - subs r2, 0x44 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 6 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_080F20DC: .4byte REG_WIN0H -_080F20E0: .4byte 0x000077f0 -_080F20E4: .4byte REG_WIN0V -_080F20E8: .4byte gUnknown_083DFEC4 -_080F20EC: .4byte 0x00006dad -_080F20F0: .4byte REG_WININ - thumb_func_end sub_80F2098 - - thumb_func_start sub_80F20F4 -sub_80F20F4: @ 80F20F4 - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080F2104 @ =0x0000dfff - ands r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_080F2104: .4byte 0x0000dfff - thumb_func_end sub_80F20F4 - - thumb_func_start sub_80F2108 -sub_80F2108: @ 80F2108 - push {lr} - ldr r0, _080F2134 @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r0, _080F2138 @ =0x00000311 - adds r1, r3, r0 - ldrb r2, [r1] - cmp r2, 0 - bne _080F2130 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080F213C @ =0x00000312 - adds r0, r3, r1 - strh r2, [r0] - ldr r1, _080F2140 @ =REG_BLDCNT - movs r0, 0x90 - strh r0, [r1] - ldr r0, _080F2144 @ =REG_BLDY - strh r2, [r0] - bl sub_80F2098 -_080F2130: - pop {r0} - bx r0 - .align 2, 0 -_080F2134: .4byte gUnknown_083DFEC4 -_080F2138: .4byte 0x00000311 -_080F213C: .4byte 0x00000312 -_080F2140: .4byte REG_BLDCNT -_080F2144: .4byte REG_BLDY - thumb_func_end sub_80F2108 - - thumb_func_start sub_80F2148 -sub_80F2148: @ 80F2148 - push {lr} - ldr r0, _080F2164 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2168 @ =0x00000311 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080F216C @ =REG_BLDCNT - strh r1, [r0] - bl sub_80F20F4 - pop {r0} - bx r0 - .align 2, 0 -_080F2164: .4byte gUnknown_083DFEC4 -_080F2168: .4byte 0x00000311 -_080F216C: .4byte REG_BLDCNT - thumb_func_end sub_80F2148 - - thumb_func_start sub_80F2170 -sub_80F2170: @ 80F2170 - push {r4-r7,lr} - ldr r7, _080F21E4 @ =gUnknown_083DFEC4 - ldr r4, [r7] - ldr r1, _080F21E8 @ =0x00000311 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F21DC - bl sub_80F20F4 - movs r3, 0 - ldr r2, _080F21EC @ =0x00006dad - adds r5, r4, r2 - movs r0, 0xC8 - lsls r0, 2 - adds r4, r0 - movs r1, 0xD - negs r1, r1 - mov r12, r1 - movs r6, 0x4 -_080F2198: - lsls r1, r3, 2 - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 4 - adds r1, r0 - adds r1, r4, r1 - ldr r2, [r1] - ldrb r1, [r2, 0x1] - mov r0, r12 - ands r0, r1 - orrs r0, r6 - strb r0, [r2, 0x1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080F2198 - ldr r1, [r7] - ldr r0, _080F21E8 @ =0x00000311 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0x2 - strb r0, [r2] - ldr r2, _080F21F0 @ =0x00000312 - adds r1, r2 - strh r3, [r1] - ldr r1, _080F21F4 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x10 - strh r0, [r1] -_080F21DC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F21E4: .4byte gUnknown_083DFEC4 -_080F21E8: .4byte 0x00000311 -_080F21EC: .4byte 0x00006dad -_080F21F0: .4byte 0x00000312 -_080F21F4: .4byte REG_BLDCNT - thumb_func_end sub_80F2170 - - thumb_func_start sub_80F21F8 -sub_80F21F8: @ 80F21F8 - ldr r0, _080F220C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2210 @ =0x00000311 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080F2214 @ =REG_BLDCNT - strh r1, [r0] - bx lr - .align 2, 0 -_080F220C: .4byte gUnknown_083DFEC4 -_080F2210: .4byte 0x00000311 -_080F2214: .4byte REG_BLDCNT - thumb_func_end sub_80F21F8 - - thumb_func_start sub_80F2218 -sub_80F2218: @ 80F2218 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - subs r0, 0x8 - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - ldrh r3, [r2, 0x32] - movs r4, 0x32 - ldrsh r1, [r2, r4] - cmp r0, r1 - bgt _080F2236 - strh r3, [r2, 0x20] - ldr r0, _080F223C @ =sub_80F22B0 - str r0, [r2, 0x1C] -_080F2236: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F223C: .4byte sub_80F22B0 - thumb_func_end sub_80F2218 - - thumb_func_start sub_80F2240 -sub_80F2240: @ 80F2240 - push {r4,lr} - adds r2, r0, 0 - ldr r0, _080F2288 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F228C @ =0x00006dad - adds r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080F2290 - ldrh r3, [r2, 0x38] - movs r4, 0x38 - ldrsh r0, [r2, r4] - cmp r0, 0 - beq _080F2270 - ldrh r0, [r2, 0x36] - ldrh r4, [r2, 0x20] - adds r1, r0, r4 - strh r1, [r2, 0x20] - subs r0, r3, r0 - strh r0, [r2, 0x38] -_080F2270: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080F22A8 - adds r0, r2, 0 - bl sub_80F240C - b _080F22A8 - .align 2, 0 -_080F2288: .4byte gUnknown_083DFEC4 -_080F228C: .4byte 0x00006dad -_080F2290: - ldrh r0, [r2, 0x20] - adds r0, 0x8 - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080F22A8 - adds r0, r2, 0 - bl sub_80F240C -_080F22A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F2240 - - thumb_func_start sub_80F22B0 -sub_80F22B0: @ 80F22B0 - push {lr} - adds r2, r0, 0 - ldr r0, _080F22DC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F22E0 @ =0x00006dad - adds r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080F22E4 - ldrh r3, [r2, 0x24] - movs r0, 0x24 - ldrsh r1, [r2, r0] - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - ble _080F22F2 - subs r0, r3, 0x4 - b _080F22F0 - .align 2, 0 -_080F22DC: .4byte gUnknown_083DFEC4 -_080F22E0: .4byte 0x00006dad -_080F22E4: - ldrh r1, [r2, 0x24] - movs r3, 0x24 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _080F22F2 - adds r0, r1, 0x4 -_080F22F0: - strh r0, [r2, 0x24] -_080F22F2: - pop {r0} - bx r0 - thumb_func_end sub_80F22B0 - - thumb_func_start sub_80F22F8 -sub_80F22F8: @ 80F22F8 - push {r4-r7,lr} - movs r3, 0 - ldr r0, _080F233C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F2340 @ =0x00006dae - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r3, r0 - bge _080F2358 - movs r7, 0xC8 - lsls r7, 2 - adds r4, r1, r7 - movs r5, 0x10 - negs r5, r5 - adds r6, r0, 0 -_080F231A: - movs r1, 0 - lsls r2, r3, 4 -_080F231E: - lsls r0, r1, 2 - adds r0, r2 - adds r0, r4, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F2358 - movs r7, 0x24 - ldrsh r0, [r0, r7] - cmp r0, 0 - beq _080F2344 - cmp r0, r5 - beq _080F2344 - movs r0, 0 - b _080F235A - .align 2, 0 -_080F233C: .4byte gUnknown_083DFEC4 -_080F2340: .4byte 0x00006dae -_080F2344: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F231E - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r6 - blt _080F231A -_080F2358: - movs r0, 0x1 -_080F235A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F22F8 - - thumb_func_start sub_80F2360 -sub_80F2360: @ 80F2360 - push {r4-r7,lr} - movs r4, 0 - ldr r0, _080F23A0 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F23A4 @ =0x0000030e - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - cmp r4, r1 - bge _080F23C0 - ldr r3, _080F23A8 @ =0x00006dad - adds r0, r2, r3 - movs r6, 0 - ldrsb r6, [r0, r6] - adds r5, r1, 0 -_080F237E: - cmp r4, r6 - beq _080F23B6 - movs r1, 0 - ldr r0, _080F23A0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r3, r4, 4 - movs r7, 0xC8 - lsls r7, 2 - adds r2, r0, r7 -_080F2390: - lsls r0, r1, 2 - adds r0, r3 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F23AC - movs r0, 0 - b _080F23C2 - .align 2, 0 -_080F23A0: .4byte gUnknown_083DFEC4 -_080F23A4: .4byte 0x0000030e -_080F23A8: .4byte 0x00006dad -_080F23AC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F2390 -_080F23B6: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - blt _080F237E -_080F23C0: - movs r0, 0x1 -_080F23C2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F2360 - - thumb_func_start sub_80F23C8 -sub_80F23C8: @ 80F23C8 - push {lr} - movs r2, 0 - ldr r0, _080F23F4 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r3, _080F23F8 @ =0x00006dad - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r3, r0, 4 - movs r0, 0xC8 - lsls r0, 2 - adds r1, r0 -_080F23E2: - lsls r0, r2, 2 - adds r0, r3 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F23FC - movs r0, 0 - b _080F2408 - .align 2, 0 -_080F23F4: .4byte gUnknown_083DFEC4 -_080F23F8: .4byte 0x00006dad -_080F23FC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _080F23E2 - movs r0, 0x1 -_080F2408: - pop {r1} - bx r1 - thumb_func_end sub_80F23C8 - - thumb_func_start sub_80F240C -sub_80F240C: @ 80F240C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080F2454 @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r1, 2 - movs r3, 0x2E - ldrsh r0, [r4, r3] - lsls r0, 4 - adds r1, r0 - movs r0, 0xC8 - lsls r0, 2 - adds r2, r0 - adds r2, r1 - movs r0, 0 - str r0, [r2] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080F2446 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix -_080F2446: - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2454: .4byte gUnknown_083DFEC4 - thumb_func_end sub_80F240C - - thumb_func_start sub_80F2458 -sub_80F2458: @ 80F2458 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - beq _080F24A0 - cmp r4, 0x1 - bgt _080F246C - cmp r4, 0 - beq _080F2472 - b _080F2502 -_080F246C: - cmp r4, 0x2 - beq _080F24D0 - b _080F2502 -_080F2472: - ldr r2, _080F2498 @ =gUnknown_083DFEC4 - ldr r3, [r2] - movs r0, 0xE0 - lsls r0, 2 - adds r1, r3, r0 - movs r5, 0xE2 - lsls r5, 2 - adds r0, r3, r5 - str r0, [r1] - movs r0, 0xE1 - lsls r0, 2 - adds r1, r3, r0 - movs r0, 0xA0 - lsls r0, 5 - strh r0, [r1] - ldr r1, _080F249C @ =0x00000386 - adds r0, r3, r1 - strh r4, [r0] - b _080F24F6 - .align 2, 0 -_080F2498: .4byte gUnknown_083DFEC4 -_080F249C: .4byte 0x00000386 -_080F24A0: - ldr r4, _080F24C4 @ =gUnknown_083DFEC4 - ldr r1, [r4] - movs r3, 0xE0 - lsls r3, 2 - adds r2, r1, r3 - ldr r5, _080F24C8 @ =0x00001788 - adds r0, r1, r5 - str r0, [r2] - movs r0, 0xE1 - lsls r0, 2 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0xC0 - lsls r0, 4 - strh r0, [r2] - ldr r5, _080F24CC @ =0x00000386 - adds r1, r5 - b _080F24F2 - .align 2, 0 -_080F24C4: .4byte gUnknown_083DFEC4 -_080F24C8: .4byte 0x00001788 -_080F24CC: .4byte 0x00000386 -_080F24D0: - ldr r4, _080F2508 @ =gUnknown_083DFEC4 - ldr r1, [r4] - movs r0, 0xE0 - lsls r0, 2 - adds r2, r1, r0 - ldr r3, _080F250C @ =0x00002388 - adds r0, r1, r3 - str r0, [r2] - movs r5, 0xE1 - lsls r5, 2 - adds r2, r1, r5 - movs r3, 0 - movs r0, 0xC0 - lsls r0, 5 - strh r0, [r2] - ldr r0, _080F2510 @ =0x00000386 - adds r1, r0 -_080F24F2: - strh r3, [r1] - adds r2, r4, 0 -_080F24F6: - ldr r0, [r2] - movs r1, 0xE0 - lsls r1, 2 - adds r0, r1 - bl LoadSpriteSheet -_080F2502: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F2508: .4byte gUnknown_083DFEC4 -_080F250C: .4byte 0x00002388 -_080F2510: .4byte 0x00000386 - thumb_func_end sub_80F2458 - - thumb_func_start sub_80F2514 -sub_80F2514: @ 80F2514 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _080F2558 - cmp r0, 0x1 - bgt _080F252C - cmp r0, 0 - beq _080F2532 - b _080F2586 -_080F252C: - cmp r1, 0x2 - beq _080F2568 - b _080F2586 -_080F2532: - ldr r0, _080F254C @ =gPokenavMenuOptions1_Pal - str r0, [sp] - ldr r1, _080F2550 @ =0xffff0000 - mov r4, sp - ldr r0, [sp, 0x4] - ands r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpritePalette - ldr r0, _080F2554 @ =gPokenavMenuOptions2_Pal - b _080F257A - .align 2, 0 -_080F254C: .4byte gPokenavMenuOptions1_Pal -_080F2550: .4byte 0xffff0000 -_080F2554: .4byte gPokenavMenuOptions2_Pal -_080F2558: - ldr r0, _080F2564 @ =gPokenavConditionMenu_Pal - str r0, [sp] - mov r1, sp - movs r0, 0 - strh r0, [r1, 0x4] - b _080F2580 - .align 2, 0 -_080F2564: .4byte gPokenavConditionMenu_Pal -_080F2568: - ldr r0, _080F2590 @ =gPokenavCondition6_Pal - str r0, [sp] - mov r4, sp - movs r0, 0 - strh r0, [r4, 0x4] - mov r0, sp - bl LoadSpritePalette - ldr r0, _080F2594 @ =gPokenavCondition7_Pal -_080F257A: - str r0, [sp] - movs r0, 0x1 - strh r0, [r4, 0x4] -_080F2580: - mov r0, sp - bl LoadSpritePalette -_080F2586: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2590: .4byte gPokenavCondition6_Pal -_080F2594: .4byte gPokenavCondition7_Pal - thumb_func_end sub_80F2514 - - thumb_func_start sub_80F2598 -sub_80F2598: @ 80F2598 - push {r4,lr} - ldr r0, _080F25F0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F25F4 @ =0x00006d9c - adds r4, r0, r1 - movs r0, 0 - str r0, [r4] - ldr r1, _080F25F8 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl DoesSomeoneWantRematchIn - cmp r0, 0x1 - bne _080F2618 - ldr r0, _080F25FC @ =gSpriteSheet_PokenavBlueLight - bl LoadSpriteSheet - ldr r0, _080F2600 @ =gSpritePalette_PokenavBlueLight - bl LoadSpritePalette - ldr r0, _080F2604 @ =gSpriteTemplate_83E4484 - movs r1, 0xC - movs r2, 0x60 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F260C - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F2608 @ =gSprites - adds r0, r1 - str r0, [r4] - b _080F2618 - .align 2, 0 -_080F25F0: .4byte gUnknown_083DFEC4 -_080F25F4: .4byte 0x00006d9c -_080F25F8: .4byte gSaveBlock1 -_080F25FC: .4byte gSpriteSheet_PokenavBlueLight -_080F2600: .4byte gSpritePalette_PokenavBlueLight -_080F2604: .4byte gSpriteTemplate_83E4484 -_080F2608: .4byte gSprites -_080F260C: - movs r0, 0x19 - bl FreeSpriteTilesByTag - movs r0, 0x11 - bl FreeSpritePaletteByTag -_080F2618: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F2598 - - thumb_func_start sub_80F2620 -sub_80F2620: @ 80F2620 - push {r4,lr} - ldr r0, _080F264C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2650 @ =0x00006d9c - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F2644 - bl DestroySprite - movs r0, 0x19 - bl FreeSpriteTilesByTag - movs r0, 0x11 - bl FreeSpritePaletteByTag - movs r0, 0 - str r0, [r4] -_080F2644: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F264C: .4byte gUnknown_083DFEC4 -_080F2650: .4byte 0x00006d9c - thumb_func_end sub_80F2620 - - thumb_func_start sub_80F2654 -sub_80F2654: @ 80F2654 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080F2682 - movs r0, 0 - strh r0, [r3, 0x2E] - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080F2682: - pop {r0} - bx r0 - thumb_func_end sub_80F2654 - - thumb_func_start sub_80F2688 -sub_80F2688: @ 80F2688 - push {lr} - ldr r0, _080F26B0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F26B4 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F26B8 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F26AA -_080F26A0: - bl sub_80F26BC - lsls r0, 24 - cmp r0, 0 - bne _080F26A0 -_080F26AA: - pop {r0} - bx r0 - .align 2, 0 -_080F26B0: .4byte gUnknown_083DFEC4 -_080F26B4: .4byte 0x00000306 -_080F26B8: .4byte 0x00006dac - thumb_func_end sub_80F2688 - - thumb_func_start sub_80F26BC -sub_80F26BC: @ 80F26BC - push {lr} - ldr r0, _080F26D8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F26DC @ =0x00000306 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x7 - bls _080F26CE - b _080F27BC -_080F26CE: - lsls r0, 2 - ldr r1, _080F26E0 @ =_080F26E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F26D8: .4byte gUnknown_083DFEC4 -_080F26DC: .4byte 0x00000306 -_080F26E0: .4byte _080F26E4 - .align 2, 0 -_080F26E4: - .4byte _080F2704 - .4byte _080F271C - .4byte _080F2734 - .4byte _080F274C - .4byte _080F2764 - .4byte _080F277C - .4byte _080F2794 - .4byte _080F27B0 -_080F2704: - ldr r0, _080F2710 @ =gPokenavMainMenu_Gfx - ldr r1, _080F2714 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2718 @ =0x00003b98 - b _080F279C - .align 2, 0 -_080F2710: .4byte gPokenavMainMenu_Gfx -_080F2714: .4byte gUnknown_083DFEC4 -_080F2718: .4byte 0x00003b98 -_080F271C: - ldr r0, _080F2728 @ =gPokenavConditionMenuHeader_Gfx - ldr r1, _080F272C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2730 @ =0x00004198 - b _080F279C - .align 2, 0 -_080F2728: .4byte gPokenavConditionMenuHeader_Gfx -_080F272C: .4byte gUnknown_083DFEC4 -_080F2730: .4byte 0x00004198 -_080F2734: - ldr r0, _080F2740 @ =gPokenavRibbonsHeader_Gfx - ldr r1, _080F2744 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2748 @ =0x00004d98 - b _080F279C - .align 2, 0 -_080F2740: .4byte gPokenavRibbonsHeader_Gfx -_080F2744: .4byte gUnknown_083DFEC4 -_080F2748: .4byte 0x00004d98 -_080F274C: - ldr r0, _080F2758 @ =gPokenavHoennMapHeader_Gfx - ldr r1, _080F275C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2760 @ =0x00005398 - b _080F279C - .align 2, 0 -_080F2758: .4byte gPokenavHoennMapHeader_Gfx -_080F275C: .4byte gUnknown_083DFEC4 -_080F2760: .4byte 0x00005398 -_080F2764: - ldr r0, _080F2770 @ =gPokenavConditionMenuOptions_Gfx - ldr r1, _080F2774 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2778 @ =0x00005f98 - b _080F279C - .align 2, 0 -_080F2770: .4byte gPokenavConditionMenuOptions_Gfx -_080F2774: .4byte gUnknown_083DFEC4 -_080F2778: .4byte 0x00005f98 -_080F277C: - ldr r0, _080F2788 @ =gPokenavConditionMenuOptions2_Gfx - ldr r1, _080F278C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2790 @ =0x00006798 - b _080F279C - .align 2, 0 -_080F2788: .4byte gPokenavConditionMenuOptions2_Gfx -_080F278C: .4byte gUnknown_083DFEC4 -_080F2790: .4byte 0x00006798 -_080F2794: - ldr r0, _080F27A4 @ =gPokenavTrainersEyesHeader_Gfx - ldr r1, _080F27A8 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F27AC @ =0x00004798 -_080F279C: - adds r1, r2 - bl LZ77UnCompWram - b _080F27C0 - .align 2, 0 -_080F27A4: .4byte gPokenavTrainersEyesHeader_Gfx -_080F27A8: .4byte gUnknown_083DFEC4 -_080F27AC: .4byte 0x00004798 -_080F27B0: - ldr r0, _080F27B8 @ =gUnknown_083E449C - bl LoadSpritePalettes - b _080F27C0 - .align 2, 0 -_080F27B8: .4byte gUnknown_083E449C -_080F27BC: - movs r0, 0 - b _080F27D0 -_080F27C0: - ldr r0, _080F27D4 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F27D8 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F27D0: - pop {r1} - bx r1 - .align 2, 0 -_080F27D4: .4byte gUnknown_083DFEC4 -_080F27D8: .4byte 0x00000306 - thumb_func_end sub_80F26BC - - thumb_func_start sub_80F27DC -sub_80F27DC: @ 80F27DC - push {lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bls _080F27EA - b _080F29A0 -_080F27EA: - lsls r0, 2 - ldr r1, _080F27F4 @ =_080F27F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F27F4: .4byte _080F27F8 - .align 2, 0 -_080F27F8: - .4byte _080F2828 - .4byte _080F2858 - .4byte _080F28B8 - .4byte _080F2888 - .4byte _080F28E8 - .4byte _080F2918 - .4byte _080F2928 - .4byte _080F2978 - .4byte _080F2938 - .4byte _080F2948 - .4byte _080F2968 - .4byte _080F2958 -_080F2828: - ldr r0, _080F2848 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F284C @ =0x00003b98 - adds r0, r1 - str r0, [sp] - ldr r1, _080F2850 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F2854 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F2848: .4byte gUnknown_083DFEC4 -_080F284C: .4byte 0x00003b98 -_080F2850: .4byte 0xffff0000 -_080F2854: .4byte 0x0000ffff -_080F2858: - ldr r0, _080F2878 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F287C @ =0x00004198 - adds r0, r1 - str r0, [sp] - ldr r1, _080F2880 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F2884 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F2878: .4byte gUnknown_083DFEC4 -_080F287C: .4byte 0x00004198 -_080F2880: .4byte 0xffff0000 -_080F2884: .4byte 0x0000ffff -_080F2888: - ldr r0, _080F28A8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F28AC @ =0x00004798 - adds r0, r1 - str r0, [sp] - ldr r1, _080F28B0 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F28B4 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F28A8: .4byte gUnknown_083DFEC4 -_080F28AC: .4byte 0x00004798 -_080F28B0: .4byte 0xffff0000 -_080F28B4: .4byte 0x0000ffff -_080F28B8: - ldr r0, _080F28D8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F28DC @ =0x00004d98 - adds r0, r1 - str r0, [sp] - ldr r1, _080F28E0 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F28E4 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F28D8: .4byte gUnknown_083DFEC4 -_080F28DC: .4byte 0x00004d98 -_080F28E0: .4byte 0xffff0000 -_080F28E4: .4byte 0x0000ffff -_080F28E8: - ldr r0, _080F2908 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F290C @ =0x00005398 - adds r0, r1 - str r0, [sp] - ldr r1, _080F2910 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 4 - orrs r0, r1 - ldr r1, _080F2914 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F2908: .4byte gUnknown_083DFEC4 -_080F290C: .4byte 0x00005398 -_080F2910: .4byte 0xffff0000 -_080F2914: .4byte 0x0000ffff -_080F2918: - ldr r0, _080F2920 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2924 @ =0x00005f98 - b _080F297E - .align 2, 0 -_080F2920: .4byte gUnknown_083DFEC4 -_080F2924: .4byte 0x00005f98 -_080F2928: - ldr r0, _080F2930 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2934 @ =0x00006198 - b _080F297E - .align 2, 0 -_080F2930: .4byte gUnknown_083DFEC4 -_080F2934: .4byte 0x00006198 -_080F2938: - ldr r0, _080F2940 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2944 @ =0x00006398 - b _080F297E - .align 2, 0 -_080F2940: .4byte gUnknown_083DFEC4 -_080F2944: .4byte 0x00006398 -_080F2948: - ldr r0, _080F2950 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2954 @ =0x00006598 - b _080F297E - .align 2, 0 -_080F2950: .4byte gUnknown_083DFEC4 -_080F2954: .4byte 0x00006598 -_080F2958: - ldr r0, _080F2960 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2964 @ =0x00006998 - b _080F297E - .align 2, 0 -_080F2960: .4byte gUnknown_083DFEC4 -_080F2964: .4byte 0x00006998 -_080F2968: - ldr r0, _080F2970 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2974 @ =0x00006798 - b _080F297E - .align 2, 0 -_080F2970: .4byte gUnknown_083DFEC4 -_080F2974: .4byte 0x00006798 -_080F2978: - ldr r0, _080F29A8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F29AC @ =0x00006b98 -_080F297E: - adds r0, r1 - str r0, [sp] - ldr r1, _080F29B0 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - ldr r1, _080F29B4 @ =0x0000ffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 10 -_080F2996: - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet -_080F29A0: - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080F29A8: .4byte gUnknown_083DFEC4 -_080F29AC: .4byte 0x00006b98 -_080F29B0: .4byte 0xffff0000 -_080F29B4: .4byte 0x0000ffff - thumb_func_end sub_80F27DC - - thumb_func_start sub_80F29B8 -sub_80F29B8: @ 80F29B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r8, r0 - cmp r7, 0xB - bls _080F29D2 - b _080F2BA6 -_080F29D2: - lsls r0, r7, 2 - ldr r1, _080F29DC @ =_080F29E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F29DC: .4byte _080F29E0 - .align 2, 0 -_080F29E0: - .4byte _080F2A10 - .4byte _080F2A10 - .4byte _080F2A10 - .4byte _080F2A10 - .4byte _080F2A58 - .4byte _080F2A94 - .4byte _080F2A94 - .4byte _080F2A98 - .4byte _080F2A94 - .4byte _080F2A94 - .4byte _080F2A98 - .4byte _080F2A98 -_080F2A10: - ldr r3, _080F2A44 @ =0x0000ffa0 - ldr r0, _080F2A48 @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r0, r2, r1 - ldrh r1, [r0] - movs r0, 0x31 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - movs r4, 0x8 - str r4, [sp] - movs r1, 0x20 - str r1, [sp, 0x4] - movs r1, 0x40 - ldr r4, _080F2A4C @ =0x00003b88 - adds r4, r2 - mov r9, r4 - ldr r2, _080F2A50 @ =gSpriteTemplate_83E44F8 - mov r8, r2 - cmp r7, 0x3 - beq _080F2AC8 - ldr r4, _080F2A54 @ =gSpriteTemplate_83E44E0 - mov r8, r4 - b _080F2AC8 - .align 2, 0 -_080F2A44: .4byte 0x0000ffa0 -_080F2A48: .4byte gUnknown_083DFEC4 -_080F2A4C: .4byte 0x00003b88 -_080F2A50: .4byte gSpriteTemplate_83E44F8 -_080F2A54: .4byte gSpriteTemplate_83E44E0 -_080F2A58: - movs r3, 0x88 - lsls r3, 1 - ldr r0, _080F2A84 @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r0, r2, r1 - ldrh r1, [r0] - movs r0, 0x31 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r4, _080F2A88 @ =0x0000fff8 - str r4, [sp] - movs r1, 0x98 - str r1, [sp, 0x4] - movs r1, 0x40 - ldr r4, _080F2A8C @ =gSpriteTemplate_83E44E0 - mov r8, r4 - ldr r4, _080F2A90 @ =0x00003b88 - b _080F2AC4 - .align 2, 0 -_080F2A84: .4byte gUnknown_083DFEC4 -_080F2A88: .4byte 0x0000fff8 -_080F2A8C: .4byte gSpriteTemplate_83E44E0 -_080F2A90: .4byte 0x00003b88 -_080F2A94: - ldr r0, _080F2B40 @ =gSpriteTemplate_83E4530 - mov r8, r0 -_080F2A98: - mov r1, r8 - cmp r1, 0 - bne _080F2AA2 - ldr r2, _080F2B44 @ =gSpriteTemplate_83E4548 - mov r8, r2 -_080F2AA2: - ldr r3, _080F2B48 @ =0x0000ffa0 - ldr r0, _080F2B4C @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r4, 0xC3 - lsls r4, 2 - adds r0, r2, r4 - ldrh r1, [r0] - movs r0, 0x44 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x8 - str r1, [sp] - movs r4, 0x10 - str r4, [sp, 0x4] - movs r1, 0x20 - ldr r4, _080F2B50 @ =0x00003b90 -_080F2AC4: - adds r4, r2 - mov r9, r4 -_080F2AC8: - movs r6, 0 - lsls r1, 16 - str r1, [sp, 0x10] - lsls r3, 16 - str r3, [sp, 0x8] - lsls r0, 16 - str r0, [sp, 0xC] - ldr r0, _080F2B54 @ =gSprites - mov r10, r0 -_080F2ADA: - ldr r1, [sp, 0x10] - asrs r0, r1, 16 - adds r5, r6, 0 - muls r5, r0 - ldr r2, [sp, 0x8] - asrs r1, r2, 16 - adds r1, r5 - lsls r1, 16 - asrs r1, 16 - mov r0, r8 - ldr r3, [sp, 0xC] - asrs r2, r3, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _080F2B9C - lsls r0, r4, 4 - adds r1, r0, r4 - lsls r1, 2 - mov r2, r10 - adds r3, r1, r2 - mov r1, sp - ldrh r1, [r1] - strh r1, [r3, 0x2E] - ldr r2, [sp, 0x4] - adds r1, r2, r5 - strh r1, [r3, 0x30] - strh r6, [r3, 0x32] - strh r7, [r3, 0x34] - adds r5, r0, 0 - cmp r7, 0x4 - bne _080F2B5C - cmp r6, 0x1 - bne _080F2B5C - ldr r0, _080F2B4C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2B58 @ =0x00006e90 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - cmp r0, 0 - bne _080F2B36 - movs r1, 0x1 -_080F2B36: - adds r0, r3, 0 - bl StartSpriteAnim - b _080F2B6A - .align 2, 0 -_080F2B40: .4byte gSpriteTemplate_83E4530 -_080F2B44: .4byte gSpriteTemplate_83E4548 -_080F2B48: .4byte 0x0000ffa0 -_080F2B4C: .4byte gUnknown_083DFEC4 -_080F2B50: .4byte 0x00003b90 -_080F2B54: .4byte gSprites -_080F2B58: .4byte 0x00006e90 -_080F2B5C: - adds r0, r5, r4 - lsls r0, 2 - add r0, r10 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim -_080F2B6A: - ldr r2, _080F2BB8 @ =gSprites - mov r12, r2 - cmp r7, 0x3 - bhi _080F2B90 - cmp r6, 0x1 - bne _080F2B90 - adds r2, r5, r4 - lsls r2, 2 - add r2, r10 - ldrb r3, [r2, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r3 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - strb r1, [r2, 0x3] -_080F2B90: - lsls r1, r6, 2 - add r1, r9 - adds r0, r5, r4 - lsls r0, 2 - add r0, r12 - str r0, [r1] -_080F2B9C: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x1 - bls _080F2ADA -_080F2BA6: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F2BB8: .4byte gSprites - thumb_func_end sub_80F29B8 - - thumb_func_start sub_80F2BBC -sub_80F2BBC: @ 80F2BBC - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - ldrh r1, [r2, 0x2E] - adds r3, r0, r1 - strh r3, [r2, 0x20] - lsls r0, 16 - asrs r4, r0, 16 - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r4, r1 - bgt _080F2BE0 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r1 - bge _080F2BE8 - cmp r4, r1 - blt _080F2C08 -_080F2BE0: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r1 - bgt _080F2C08 -_080F2BE8: - ldrh r0, [r2, 0x30] - strh r0, [r2, 0x20] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bne _080F2C04 - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080F2C04 - ldr r0, _080F2C00 @ =sub_80F2C58 - b _080F2C06 - .align 2, 0 -_080F2C00: .4byte sub_80F2C58 -_080F2C04: - ldr r0, _080F2C10 @ =SpriteCallbackDummy -_080F2C06: - str r0, [r2, 0x1C] -_080F2C08: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2C10: .4byte SpriteCallbackDummy - thumb_func_end sub_80F2BBC - - thumb_func_start sub_80F2C14 -sub_80F2C14: @ 80F2C14 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - ldrh r1, [r4, 0x2E] - subs r0, r1 - strh r0, [r4, 0x20] - adds r0, 0x20 - lsls r0, 16 - movs r1, 0x98 - lsls r1, 17 - cmp r0, r1 - bls _080F2C50 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080F2C4A - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bgt _080F2C44 - movs r0, 0x1 - bl FreeSpriteTilesByTag - b _080F2C4A -_080F2C44: - movs r0, 0x2 - bl FreeSpriteTilesByTag -_080F2C4A: - adds r0, r4, 0 - bl DestroySprite -_080F2C50: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F2C14 - - thumb_func_start sub_80F2C58 -sub_80F2C58: @ 80F2C58 - push {lr} - adds r2, r0, 0 - ldr r0, _080F2C78 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2C7C @ =0x00006e90 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - cmp r0, 0 - bne _080F2C6E - movs r1, 0x1 -_080F2C6E: - adds r0, r2, 0 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_080F2C78: .4byte gUnknown_083DFEC4 -_080F2C7C: .4byte 0x00006e90 - thumb_func_end sub_80F2C58 - - thumb_func_start sub_80F2C80 -sub_80F2C80: @ 80F2C80 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080F2CB0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2CB4 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F2CB8 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F2CA8 -_080F2C9C: - adds r0, r4, 0 - bl sub_80F2CBC - lsls r0, 24 - cmp r0, 0 - bne _080F2C9C -_080F2CA8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2CB0: .4byte gUnknown_083DFEC4 -_080F2CB4: .4byte 0x00000306 -_080F2CB8: .4byte 0x00006dac - thumb_func_end sub_80F2C80 - - thumb_func_start sub_80F2CBC -sub_80F2CBC: @ 80F2CBC - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F2CD8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F2CDC @ =0x00000306 - adds r4, r0, r2 - ldrh r0, [r4] - cmp r0, 0 - beq _080F2CE0 - cmp r0, 0x1 - beq _080F2CF0 - b _080F2CFC - .align 2, 0 -_080F2CD8: .4byte gUnknown_083DFEC4 -_080F2CDC: .4byte 0x00000306 -_080F2CE0: - adds r0, r1, 0 - bl sub_80F27DC - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - movs r0, 0x1 - b _080F2CFE -_080F2CF0: - adds r0, r1, 0 - bl sub_80F29B8 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080F2CFC: - movs r0, 0 -_080F2CFE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F2CBC - - thumb_func_start sub_80F2D04 -sub_80F2D04: @ 80F2D04 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080F2D3C - movs r1, 0 - ldr r0, _080F2D30 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F2D34 @ =0x00003b88 - adds r2, r0, r3 - ldr r3, _080F2D38 @ =sub_80F2C14 -_080F2D1A: - lsls r0, r1, 2 - adds r0, r2, r0 - ldr r0, [r0] - str r3, [r0, 0x1C] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1 - bls _080F2D1A - b _080F2D5A - .align 2, 0 -_080F2D30: .4byte gUnknown_083DFEC4 -_080F2D34: .4byte 0x00003b88 -_080F2D38: .4byte sub_80F2C14 -_080F2D3C: - movs r1, 0 - ldr r0, _080F2D60 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F2D64 @ =0x00003b90 - adds r2, r0, r3 - ldr r3, _080F2D68 @ =sub_80F2C14 -_080F2D48: - lsls r0, r1, 2 - adds r0, r2, r0 - ldr r0, [r0] - str r3, [r0, 0x1C] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1 - bls _080F2D48 -_080F2D5A: - pop {r0} - bx r0 - .align 2, 0 -_080F2D60: .4byte gUnknown_083DFEC4 -_080F2D64: .4byte 0x00003b90 -_080F2D68: .4byte sub_80F2C14 - thumb_func_end sub_80F2D04 - - thumb_func_start sub_80F2D6C -sub_80F2D6C: @ 80F2D6C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080F2DA4 - movs r0, 0x1 - bl FreeSpriteTilesByTag - movs r4, 0 - ldr r0, _080F2D9C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2DA0 @ =0x00003b88 - adds r5, r0, r1 -_080F2D86: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F2D86 - b _080F2DC8 - .align 2, 0 -_080F2D9C: .4byte gUnknown_083DFEC4 -_080F2DA0: .4byte 0x00003b88 -_080F2DA4: - movs r0, 0x2 - bl FreeSpriteTilesByTag - movs r4, 0 - ldr r0, _080F2DD0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2DD4 @ =0x00003b90 - adds r5, r0, r1 -_080F2DB4: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F2DB4 -_080F2DC8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F2DD0: .4byte gUnknown_083DFEC4 -_080F2DD4: .4byte 0x00003b90 - thumb_func_end sub_80F2D6C - - thumb_func_start sub_80F2DD8 -sub_80F2DD8: @ 80F2DD8 - push {lr} - movs r0, 0x7 - movs r1, 0x7 - bl CreateRegionMapCursor - movs r0, 0x8 - movs r1, 0x8 - bl CreateRegionMapPlayerIcon - bl sub_80FBF94 - pop {r0} - bx r0 - thumb_func_end sub_80F2DD8 - - thumb_func_start sub_80F2DF4 -sub_80F2DF4: @ 80F2DF4 - push {lr} - bl FreeRegionMapIconResources - pop {r0} - bx r0 - thumb_func_end sub_80F2DF4 - - thumb_func_start sub_80F2E00 -sub_80F2E00: @ 80F2E00 - ldr r1, _080F2E10 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2E14 @ =0x00008766 - adds r1, r2 - ldrh r1, [r1] - adds r1, 0x26 - strh r1, [r0, 0x20] - bx lr - .align 2, 0 -_080F2E10: .4byte gUnknown_083DFEC4 -_080F2E14: .4byte 0x00008766 - thumb_func_end sub_80F2E00 - - thumb_func_start sub_80F2E18 -sub_80F2E18: @ 80F2E18 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080F2EA8 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F2EAC @ =0x00008768 - adds r7, r4, r0 - ldr r1, [r7] - mov r8, r1 - cmp r1, 0 - bne _080F2EFC - ldr r0, _080F2EB0 @ =gUnknown_083E4568 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x20] - str r1, [sp, 0x24] - mov r1, sp - ldr r0, _080F2EB4 @ =gSpriteTemplate_83E4570 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r0, _080F2EB8 @ =gUnknown_083E4588 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - lsls r0, r3, 13 - ldr r1, _080F2EBC @ =0x0000d1e4 - adds r0, r1 - adds r0, r4, r0 - str r0, [sp, 0x20] - lsls r0, r3, 7 - adds r0, r4, r0 - str r0, [sp, 0x18] - add r0, sp, 0x18 - bl LoadSpritePalette - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F2EC0 @ =0x0000d1dc - adds r5, r4, r2 - strh r0, [r5] - add r0, sp, 0x20 - bl LoadSpriteSheet - ldr r1, _080F2EC4 @ =0x0000d1de - adds r6, r4, r1 - strh r0, [r6] - mov r0, sp - movs r1, 0x26 - movs r2, 0x68 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F2EC8 - movs r0, 0x6 - bl FreeSpriteTilesByTag - movs r0, 0x6 - bl FreeSpritePaletteByTag - mov r2, r8 - str r2, [r7] - b _080F2F26 - .align 2, 0 -_080F2EA8: .4byte gUnknown_083DFEC4 -_080F2EAC: .4byte 0x00008768 -_080F2EB0: .4byte gUnknown_083E4568 -_080F2EB4: .4byte gSpriteTemplate_83E4570 -_080F2EB8: .4byte gUnknown_083E4588 -_080F2EBC: .4byte 0x0000d1e4 -_080F2EC0: .4byte 0x0000d1dc -_080F2EC4: .4byte 0x0000d1de -_080F2EC8: - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F2EF0 @ =gSprites - adds r0, r1 - str r0, [r7] - ldr r0, _080F2EF4 @ =0x0000d1e0 - adds r1, r4, r0 - ldrh r0, [r6] - lsls r0, 5 - ldr r2, _080F2EF8 @ =0x06010000 - adds r0, r2 - str r0, [r1] - ldrh r0, [r5] - lsls r0, 4 - movs r6, 0x80 - lsls r6, 1 - adds r0, r6 - strh r0, [r5] - b _080F2F26 - .align 2, 0 -_080F2EF0: .4byte gSprites -_080F2EF4: .4byte 0x0000d1e0 -_080F2EF8: .4byte 0x06010000 -_080F2EFC: - lsls r0, r3, 13 - ldr r1, _080F2F34 @ =0x0000d1e4 - adds r0, r1 - adds r0, r4, r0 - ldr r2, _080F2F38 @ =0x0000d1e0 - adds r1, r4, r2 - ldr r2, [r1] - ldr r1, _080F2F3C @ =0x040000d4 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080F2F40 @ =0x80000400 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - lsls r0, r3, 7 - adds r0, r4, r0 - ldr r5, _080F2F44 @ =0x0000d1dc - adds r1, r4, r5 - ldrh r1, [r1] - movs r2, 0x20 - bl LoadPalette -_080F2F26: - add sp, 0x28 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F2F34: .4byte 0x0000d1e4 -_080F2F38: .4byte 0x0000d1e0 -_080F2F3C: .4byte 0x040000d4 -_080F2F40: .4byte 0x80000400 -_080F2F44: .4byte 0x0000d1dc - thumb_func_end sub_80F2E18 - - thumb_func_start sub_80F2F48 -sub_80F2F48: @ 80F2F48 - push {r4,lr} - ldr r0, _080F2F74 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2F78 @ =0x00008768 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F2F6C - bl DestroySprite - movs r0, 0x6 - bl FreeSpriteTilesByTag - movs r0, 0x6 - bl FreeSpritePaletteByTag - movs r0, 0 - str r0, [r4] -_080F2F6C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2F74: .4byte gUnknown_083DFEC4 -_080F2F78: .4byte 0x00008768 - thumb_func_end sub_80F2F48 - - thumb_func_start sub_80F2F7C -sub_80F2F7C: @ 80F2F7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80F2E18 - ldr r0, _080F2FA0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2FA4 @ =0x0000ced0 - adds r2, r0, r1 - ldr r1, _080F2FA8 @ =0x00008768 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - ldr r0, _080F2FAC @ =sub_80F2FEC - str r0, [r1, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080F2FA0: .4byte gUnknown_083DFEC4 -_080F2FA4: .4byte 0x0000ced0 -_080F2FA8: .4byte 0x00008768 -_080F2FAC: .4byte sub_80F2FEC - thumb_func_end sub_80F2F7C - - thumb_func_start sub_80F2FB0 -sub_80F2FB0: @ 80F2FB0 - push {r4,r5,lr} - ldr r0, _080F2FE0 @ =gUnknown_083DFEC4 - ldr r5, [r0] - ldr r0, _080F2FE4 @ =0x0000ced0 - adds r4, r5, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F2FDA - bl DestroySprite - movs r0, 0x6 - bl FreeSpriteTilesByTag - movs r0, 0x6 - bl FreeSpritePaletteByTag - movs r1, 0 - str r1, [r4] - ldr r2, _080F2FE8 @ =0x00008768 - adds r0, r5, r2 - str r1, [r0] -_080F2FDA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F2FE0: .4byte gUnknown_083DFEC4 -_080F2FE4: .4byte 0x0000ced0 -_080F2FE8: .4byte 0x00008768 - thumb_func_end sub_80F2FB0 - - thumb_func_start sub_80F2FEC -sub_80F2FEC: @ 80F2FEC - ldr r1, _080F3000 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F3004 @ =0x0000d15a - adds r1, r2 - ldrh r1, [r1] - adds r1, 0x28 - strh r1, [r0, 0x20] - movs r1, 0x68 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080F3000: .4byte gUnknown_083DFEC4 -_080F3004: .4byte 0x0000d15a - thumb_func_end sub_80F2FEC - - thumb_func_start sub_80F3008 -sub_80F3008: @ 80F3008 - push {r4,r5,lr} - sub sp, 0x20 - lsls r0, 24 - lsrs r2, r0, 24 - mov r1, sp - ldr r0, _080F3060 @ =gUnknown_083E4590 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, _080F3064 @ =gUnknown_083E45A8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - cmp r2, 0x2 - bgt _080F3032 - cmp r2, 0x1 - blt _080F3032 - ldr r0, _080F3068 @ =gUnknown_08E9F988 - str r0, [sp, 0x18] -_080F3032: - mov r0, sp - bl LoadSpriteSheets - add r0, sp, 0x18 - bl LoadSpritePalette - ldr r0, _080F306C @ =gSpriteTemplate_83E45B8 - movs r1, 0x5F - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F3078 - ldr r0, _080F3070 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3074 @ =0x000087cc - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _080F3120 - .align 2, 0 -_080F3060: .4byte gUnknown_083E4590 -_080F3064: .4byte gUnknown_083E45A8 -_080F3068: .4byte gUnknown_08E9F988 -_080F306C: .4byte gSpriteTemplate_83E45B8 -_080F3070: .4byte gUnknown_083DFEC4 -_080F3074: .4byte 0x000087cc -_080F3078: - ldr r0, _080F30F4 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r3, _080F30F8 @ =0x000087cc - adds r2, r3 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F30FC @ =gSprites - adds r0, r1 - str r0, [r2] - movs r4, 0 - movs r5, 0 -_080F3090: - lsls r2, r4, 7 - adds r2, 0x8 - lsls r2, 16 - asrs r2, 16 - ldr r0, _080F3100 @ =gSpriteTemplate_83E45F0 - movs r1, 0xA8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F3108 - ldr r0, _080F30F4 @ =gUnknown_083DFEC4 - ldr r2, [r0] - lsls r0, r4, 2 - ldr r3, _080F3104 @ =0x000087d0 - adds r2, r3 - adds r2, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F30FC @ =gSprites - adds r3, r0, r1 - str r3, [r2] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - strh r5, [r3, 0x2E] - strh r5, [r3, 0x30] - movs r0, 0x1 - cmp r4, 0 - bne _080F30DE - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_080F30DE: - strh r0, [r3, 0x32] - strh r4, [r3, 0x34] - movs r0, 0x1 - strh r0, [r3, 0x36] - lsls r1, r4, 24 - lsrs r1, 24 - adds r0, r3, 0 - bl StartSpriteAnim - b _080F3116 - .align 2, 0 -_080F30F4: .4byte gUnknown_083DFEC4 -_080F30F8: .4byte 0x000087cc -_080F30FC: .4byte gSprites -_080F3100: .4byte gSpriteTemplate_83E45F0 -_080F3104: .4byte 0x000087d0 -_080F3108: - ldr r0, _080F3128 @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _080F312C @ =0x000087d0 - adds r0, r2 - adds r0, r1 - str r5, [r0] -_080F3116: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F3090 -_080F3120: - add sp, 0x20 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F3128: .4byte gUnknown_083DFEC4 -_080F312C: .4byte 0x000087d0 - thumb_func_end sub_80F3008 - thumb_func_start sub_80F3130 sub_80F3130: @ 80F3130 push {r4-r6,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 0abed5c63..22fa0ac0c 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -29,37 +29,60 @@ struct UnkPokenavStruct_Sub1 { /*0x66*/ s16 unk66[5]; }; -struct UnkPokenavStruct_Sub2 { - /*0x00*/ u8 filler_00[0x26]; - /*0x26*/ u16 unk26; -}; - struct UnkPokenavStruct_Sub3 { /*0x00*/s16 unk0; }; struct UnkUsePokeblockSub { /*0x0*/ u8 unk0; - /*0x1*/ u8 filler1[1]; + /*0x1*/ u8 unk1; /*0x2*/ u8 partyIdx:5; /*0x2*/ u16 unk2:9; + /*0x3*/ u8 unk4:1; }; struct UnkPokenavStruct { - /*0x0000*/ u8 filler0000[0x306]; + /*0x0000*/ u16 unk0[6][0x40]; + /*0x0300*/ u8 filler0300[0x6]; /*0x0306*/ u16 unk306; /*0x0306*/ u8 filler0308[0x4]; - /*0x030C*/ union { // TODO: what? - u16 val; - struct UnkPokenavStruct_Sub3 unk030C; - } unk030C; - /*0x0310*/ u8 filler030E[0x6a90]; + /*0x030C*/ s16 unk030C; + /*0x030E*/ s8 unk30E; + /*0x030F*/ u8 unk30F; + /*0x0310*/ u8 filler0310[0x1]; + /*0x0311*/ u8 unk311; + /*0x0312*/ u16 unk312; + /*0x0314*/ u16 unk314[6]; + /*0x0320*/ struct Sprite *unk320[6][4]; + /*0x0380*/ struct SpriteSheet unk380; + /*0x0388*/ u8 unk388[0x1400]; + /*0x1788*/ u8 unk1788[0xC00]; + /*0x2388*/ u8 unk2388[0x1800]; + /*0x3B88*/ struct Sprite *unk3B88[2]; + /*0x3B90*/ struct Sprite *unk3B90[2]; + /*0x3B98*/ u8 unk3B98[0x600]; + /*0x4198*/ u8 unk4198[0x600]; + /*0x4798*/ u8 unk4798[0x600]; + /*0x4D98*/ u8 unk4D98[0x600]; + /*0x5398*/ u8 unk5398[0xC00]; + /*0x5F98*/ u8 unk5F98[0x200]; + /*0x6198*/ u8 unk6198[0x200]; + /*0x6398*/ u8 unk6398[0x200]; + /*0x6598*/ u8 unk6598[0x200]; + /*0x6798*/ u8 unk6798[0x200]; + /*0x6998*/ u8 unk6998[0x200]; + /*0x6B98*/ u8 unk6B98[0x200]; + /*0x6D98*/ u8 filler6B98[0x4]; + /*0x6D9C*/ struct Sprite *unk6D9C; /*0x6DA0*/ u16 unk6DA0; /*0x6DA2*/ u16 unk6DA2; /*0x6DA4*/ u16 taskId6DA4; /*0x6DA6*/ u8 filler6DA6[0x6]; /*0x6DAC*/ u8 unk6DAC; - /*0x6DAD*/ u8 filler6DAD[0x6B]; + /*0x6DAD*/ s8 unk6DAD; + /*0x6DAE*/ s8 unk6DAE; + /*0x6DAF*/ u8 filler6DAF[0x3]; + /*0x6DB2*/ u8 unk6DB2[0x66]; /*0x6E18*/ struct RegionMap regionMap; /*0x7698*/ u16 unk7698; /*0x769A*/ u16 unk769A; @@ -70,7 +93,8 @@ struct UnkPokenavStruct { /*0x76AA*/ u8 unk76AA; /*0x76AB*/ u8 filler76AB[0x10b9]; /*0x8764*/ u16 unk8764; - /*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768; + /*0x8766*/ s16 unk8766; + /*0x8768*/ struct Sprite *unk8768; /*0x876C*/ s16 unk876C; /*0x876E*/ s16 unk876E; /*0x8770*/ s16 unk8770; @@ -89,7 +113,9 @@ struct UnkPokenavStruct { /*0x87C8*/ u8 unk87C8; /*0x87C9*/ u8 filler87C9; /*0x87CA*/ u8 unk87CA; - /*0x87CB*/ u8 filler87CB[0xF]; + /*0x87CC*/ struct Sprite *unk87CC; + /*0x87D0*/ struct Sprite *unk87D0[2]; + /*0x87D8*/ u8 filler87D8[0x2]; /*0x87DA*/ s16 unk87DA; /*0x87DC*/ s16 unk87DC; /*0x87DE*/ s16 unk87DE; @@ -124,18 +150,25 @@ struct UnkPokenavStruct { /*0xCE4E*/ u16 unkCE4E; /*0xCE50*/ u16 unkCE50; /*0xCE52*/ u16 palettesCE52[30]; - /*0xCE8E*/ u16 palettesCE8E[0x2D]; + /*0xCE8E*/ u16 palettesCE8E[0x21]; + /*0xCED0*/ struct Sprite *unkCED0; + /*0xCED4*/ u8 fillerCED4[0x14]; /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[69]; /*0xD110*/ const u8 *trainerEyeDescriptionLines[4]; /*0xD120*/ u8 fillerD114[0x18]; /*0xD138*/ u8 unkD138[0x20]; /*0xD158*/ u16 unkD158; - /*0xD15A*/ u8 fillerD15A[2]; + /*0xD15A*/ u16 unkD15A; /*0xD15C*/ u16 unkD15C; /*0xD15E*/ u8 fillerD15E[2]; /*0xD160*/ u16 unkD160; /*0xD162*/ u8 unkD162; /*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164; + /*0xD1D4*/ u8 fillerD1D4[0x8]; + /*0xD1DC*/ u16 unkD1DC; + /*0xD1DE*/ u16 unkD1DE; + /*0xD1E0*/ u8 *unkD1E0; + /*0xD1E4*/ u8 unkD1E4[2][0x2000]; }; extern struct UnkPokenavStruct *const gUnknown_083DFEC4; diff --git a/include/region_map.h b/include/region_map.h index 4c10d84cb..7ded72e49 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -78,6 +78,7 @@ const u8 *CopyLocationName(u8 *dest, u16 b); void CB2_InitFlyRegionMap(void); void debug_sub_8110F28(void); u16 GetRegionMapSectionAt_(u16 x, u16 y); +void sub_80FBF94(void); extern const struct RegionMapLocation gRegionMapLocations[]; diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h index 978476d89..025a135a4 100644 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -9,5 +9,6 @@ extern void *gUnknown_02030400; extern s16 gUnknown_02039312; void sub_8136130(struct Pokeblock *, MainCallback); +u8 sub_8137124(u8); #endif //POKERUBY_USE_POKEBLOCK_H diff --git a/src/pokenav_before.c b/src/pokenav_before.c index b33fa588c..0ce246ebd 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -19,8 +19,11 @@ #include "sound.h" #include "task.h" #include "text.h" +#include "trig.h" #include "scanline_effect.h" #include "pokemon_storage_system.h" +#include "pokemon_summary_screen.h" +#include "use_pokeblock.h" #include "constants/game_stat.h" struct UnknownPokenav0 @@ -139,6 +142,7 @@ extern const u16 gPokenavHoennMap1_Pal[]; extern void (*const gUnknown_083E3270[])(u16, u16); extern const u8 gUnknown_083E039C[]; extern const u8 gUnknown_083E03A0[]; +extern const u8 gUnknown_083E01F4[]; extern const u8 *const gTrainerEyeDescriptions[]; extern const u8 gUnknown_08E9FBA0[]; extern const u8 gPokenavRibbonView_Gfx[]; @@ -149,8 +153,47 @@ extern const u16 gUnknown_083E3C60[]; extern const u16 gPokenavRibbonsIconGfx[][2]; extern const u8 *const gRibbonDescriptions[][2]; extern const u8 *const gGiftRibbonDescriptions[][2]; +extern const u8 gUnknown_08E9FF58[]; +extern const u8 gPokenavRibbonPokeView_Gfx[]; +extern const u16 gUnknown_083E0124[]; +extern const u16 gUnknown_083E0144[]; +extern const u8 gPokenavMenuOptions_Gfx[]; +extern const u8 gPokenavConditionMenu_Gfx[]; +extern const u8 gPokenavConditionSearch_Gfx[]; +extern const struct SpriteTemplate gSpriteTemplate_83E4454; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83E4450[]; +extern const u16 gUnknown_083E42F8[]; +extern const u16 gPokenavMenuOptions1_Pal[]; +extern const u16 gPokenavMenuOptions2_Pal[]; +extern const u16 gPokenavConditionMenu_Pal[]; +extern const u16 gPokenavCondition6_Pal[]; +extern const u16 gPokenavCondition7_Pal[]; +extern const struct SpriteSheet gSpriteSheet_PokenavBlueLight; +extern const struct SpritePalette gSpritePalette_PokenavBlueLight; +extern const struct SpriteTemplate gSpriteTemplate_83E4484; +extern const u8 gPokenavMainMenu_Gfx[]; +extern const u8 gPokenavConditionMenuHeader_Gfx[]; +extern const u8 gPokenavRibbonsHeader_Gfx[]; +extern const u8 gPokenavHoennMapHeader_Gfx[]; +extern const u8 gPokenavConditionMenuOptions_Gfx[]; +extern const u8 gPokenavConditionMenuOptions2_Gfx[]; +extern const u8 gPokenavTrainersEyesHeader_Gfx[]; +extern const struct SpritePalette gUnknown_083E449C[]; +extern const struct SpriteTemplate gSpriteTemplate_83E4530; +extern const struct SpriteTemplate gSpriteTemplate_83E4548; +extern const struct SpriteTemplate gSpriteTemplate_83E44E0; +extern const struct SpriteTemplate gSpriteTemplate_83E44F8; +extern const struct SpriteSheet gUnknown_083E4568; +extern const struct SpriteTemplate gSpriteTemplate_83E4570; +extern const struct SpritePalette gUnknown_083E4588; +extern const struct SpriteSheet gUnknown_083E4590[3]; +extern const struct SpritePalette gUnknown_083E45A8; +extern const u16 gUnknown_08E9F988[]; +extern const struct SpriteTemplate gSpriteTemplate_83E45B8; +extern const struct SpriteTemplate gSpriteTemplate_83E45F0; extern u16 gUnknown_020388B4; +extern u8 gUnknown_020388B0[]; // TODO: decompile the debug code so the compiler doesn't complain about @@ -215,24 +258,61 @@ static void sub_80F0FA0(void); static bool8 sub_80F0FEC(void); static bool8 sub_80F0718(void); void sub_80F0FFC(u8); -void sub_80F19DC(u8*); +static void sub_80F19DC(u8*); static bool8 sub_80F1080(void); void sub_80F1614(void); void DrawMonRibbonIcons(void); void sub_80F13FC(void); void sub_80F1438(void); static void sub_80F1494(void); +bool8 sub_80F162C(u8); +void sub_80F01E0(u16); +static void sub_80F19FC(void); +static void sub_80F1A74(void); +static void sub_80F1A80(void); +static void sub_80F1A90(void); +static bool8 sub_80F1AC4(void); +static void sub_80F1B8C(u8); +static bool8 sub_80F1BC8(u8); +static void sub_80F2458(u8); +static void sub_80F2514(u8); +static void sub_80F1DF0(void); +static void sub_80F2218(struct Sprite *sprite); +static bool8 sub_80F1E50(void); +static bool8 sub_80F22F8(void); +static void sub_80F2108(void); +static bool8 sub_80F1E6C(void); +static void sub_80F1E84(void); +static void sub_80F2148(void); +static void sub_80F2240(struct Sprite *sprite); +static bool8 sub_80F1F10(void); +static bool8 sub_80F2360(void); +static void sub_80F2170(void); +static bool8 sub_80F23C8(void); +static void sub_80F21F8(void); +static void sub_80F1FF0(void); +static void sub_80F208C(void); +static void sub_80F22B0(struct Sprite *sprite); +static void sub_80F240C(struct Sprite *sprite); +static void sub_80F2598(void); +static void sub_80F2620(void); +static bool8 sub_80F26BC(void); +static void sub_80F2C58(struct Sprite *sprite); +static void sub_80F2D04(u8); +static void sub_80F2D6C(u8); +static void sub_80F2DD8(void); +static void sub_80F2DF4(void); +static void sub_80F2FEC(struct Sprite *sprite); +static void sub_80F2FB0(void); +static void sub_80F3008(u8); extern void sub_80F0900(void); extern void sub_80F443C(u8 *, u16); -extern bool8 sub_80F162C(u8); -extern void sub_80F01E0(u16); extern void sub_80F01A4(void); extern void sub_80EFD3C(void); extern void sub_8095C8C(); extern void sub_80EFDA0(void); extern void sub_80EFD74(void); -extern void sub_80F1A80(void); extern bool8 sub_80EFC64(void); extern void sub_80EFC3C(void); extern void sub_80EF624(const u16 *, const u16 *, u8, u8, u16 *); @@ -245,7 +325,6 @@ extern void sub_80F6FB8(); extern void sub_80F6DB8(); extern bool8 sub_80F6E9C(); extern bool8 sub_80F6ED4(); -extern void sub_80F2FB0(); extern bool8 sub_80F70FC(); extern void sub_80F708C(u32); extern void sub_80F4394(); @@ -276,56 +355,35 @@ extern void sub_80F4D44(); extern bool8 sub_80F4D88(); extern void sub_80F0264(u8); extern bool8 sub_80F02A0(); -extern void sub_80F3008(); extern void sub_80F3130(); -extern void sub_80F2D6C(u32); -extern bool8 sub_80F1E6C(); extern void sub_80EF9F8(void); extern bool8 sub_80EFBDC(bool8); extern void sub_80EFBB0(void); -extern void sub_80F2DF4(); -extern void sub_80F1E84(); -extern bool8 sub_80F1F10(); extern void sub_80EEFBC(u8); -extern void sub_80F2620(); extern void sub_80EF814(void); extern void sub_80EF840(void); extern bool8 sub_80EF874(void); -extern void sub_80F2DD8(); extern bool8 sub_80F6250(); extern void sub_80F6208(); -extern void sub_80F208C(); extern void sub_80F6C20(); extern void sub_80F3FF0(); extern bool8 sub_80F4024(); -extern void sub_80F2598(); extern void sub_80EF248(u8); extern bool8 sub_80EF284(u8); -extern void sub_80F1B8C(); -extern bool8 sub_80F1BC8(u32 unk); -extern void sub_80F1DF0(); -extern bool8 sub_80F1E50(); extern void sub_80EF428(u8, u8); extern bool8 sub_80EEF78(); -extern void sub_80F1A90(); -extern void sub_80F2D04(u32); -extern bool8 sub_80F1AC4(); extern void sub_80F36F0(); extern bool8 sub_80F3724(); extern void sub_80EBC10(); extern void sub_80EBDBC(void (*func)(void)); extern void sub_80EBBE8(); -extern bool8 sub_80F26BC(void); extern void sub_80EBDD8(); extern void sub_80EBD90(); extern void sub_80EBD18(); -extern void sub_80F1A74(); -extern void sub_80F1FF0(); extern void sub_80FB260(); extern void sub_80EFE7C(void); extern void sub_80F5BF0(); extern void sub_80F6F64(); -extern void sub_80F19FC(); extern u16 gKeyRepeatStartDelay; @@ -1225,11 +1283,11 @@ void sub_80ECD80() ewram0_10.var304++; break; case 9: - sub_80F1B8C(0x2); + sub_80F1B8C(2); ewram0_10.var304++; // fall through case 10: - if (!sub_80F1BC8(0x2)) + if (!sub_80F1BC8(2)) ewram0_10.var304++; break; case 11: @@ -3693,7 +3751,7 @@ bool8 sub_80EEE54(void) sub_80EF58C(2); break; case 4: - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + gUnknown_083DFEC4->unk030C = 0; REG_BG1HOFS = 0; REG_BG1VOFS = 0; REG_BG1CNT = 0x1B0C; @@ -3709,17 +3767,17 @@ bool8 sub_80EEF34(void) { bool8 retVal = TRUE; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32) + if (gUnknown_083DFEC4->unk030C == 32) return FALSE; - gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31) + gUnknown_083DFEC4->unk030C += 2; + if (gUnknown_083DFEC4->unk030C > 31) { - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32; + gUnknown_083DFEC4->unk030C = 32; retVal = FALSE; } - REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + REG_BG1VOFS = gUnknown_083DFEC4->unk030C; return retVal; } @@ -3727,17 +3785,17 @@ bool8 sub_80EEF78(void) { bool8 retVal = TRUE; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0) + if (gUnknown_083DFEC4->unk030C == 0) return FALSE; - gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0) + gUnknown_083DFEC4->unk030C -= 2; + if (gUnknown_083DFEC4->unk030C <= 0) { - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + gUnknown_083DFEC4->unk030C = 0; retVal = FALSE; } - REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + REG_BG1VOFS = gUnknown_083DFEC4->unk030C; return retVal; } @@ -4560,7 +4618,7 @@ bool8 sub_80EFF68(void) sub_80F01A4(); break; case 12: - sub_80F01E0((u16)gUnknown_083DFEC4->unk8fe9); + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); break; case 13: REG_BG3CNT = 0x1E03; @@ -5604,3 +5662,1414 @@ void sub_80F1614(void) { gUnknown_083DFEC4->unk8764 = 0; } + +bool8 sub_80F162C(u8 arg0) +{ + switch (gUnknown_083DFEC4->unk8764) + { + case 0: + break; + case 1: + LZ77UnCompVram(gUnknown_08E9FF58, (void *)(VRAM + 0xE800)); + break; + case 2: + DmaCopy16Defvars(3, gPokenavRibbonPokeView_Gfx, (void *)(VRAM + 0xE000), 0xE0); + break; + case 3: + if (!arg0) + LoadPalette(gUnknown_083E0124, 0xD0, 0x20); + else + LoadPalette(gUnknown_083E0144, 0xD0, 0x20); + + gUnknown_083DFEC4->unk8766 = -80; + REG_BG0CNT = 0x1D0D; + gUnknown_083DFEC4->unk8764++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk8764++; + return TRUE; +} + +bool8 sub_80F170C(void) +{ + gUnknown_083DFEC4->unk8766 += 0x10; + if (gUnknown_083DFEC4->unk8766 > 0) + gUnknown_083DFEC4->unk8766 = 0; + + return gUnknown_083DFEC4->unk8766 != 0; +} + +bool8 sub_80F173C(void) +{ + gUnknown_083DFEC4->unk8766 -= 0x10; + if (gUnknown_083DFEC4->unk8766 < -0x50) + gUnknown_083DFEC4->unk8766 = -0x50; + + return gUnknown_083DFEC4->unk8766 != -0x50; +} + +bool8 sub_80F1778(void) +{ + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + gUnknown_083DFEC4->unkD162 = 2; + break; + case 1: + sub_80F1614(); + break; + case 2: + if (sub_80F162C(0)) + return TRUE; + break; + case 3: + LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)(VRAM + 0x5000)); + break; + case 4: + LZ77UnCompVram(gUnknown_08E9AC4C, (void *)(VRAM + 0xF000)); + LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20); + break; + case 5: + sub_8095C8C((void *)VRAM + 0xF000, 0, 13, gUnknown_083E01F4, 0, 0, 12, 4, 12); + break; + case 6: + LZ77UnCompVram(gUnknown_08E9FEB4, (void *)(VRAM + 0xB800)); + break; + case 7: + LoadPalette(gUnknown_083E0254, 0x30, 0x20); + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2); + LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2); + LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2); + sub_80F01A4(); + break; + case 8: + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); + break; + case 9: + REG_BG3CNT = 0x1E03; + REG_BG2CNT = 0x1702; + REG_BLDCNT = 0x844; + REG_BLDALPHA = 0x40B; + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD160++; + return TRUE; +} + +void sub_80F1934(void) +{ + u8 *buffer = gUnknown_083DFEC4->unk8788; + if (gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4) + { + u8 nature = GetNature(&gPlayerParty[sub_8137124(gUnknown_083DFEC4->unk87DC)]); + buffer = StringCopy(buffer, gOtherText_Nature2); + AlignStringInMenuWindow(buffer, gNatureNames[nature], 87, 0); + } + else + { + AlignStringInMenuWindow(buffer, gEmptyString_81E72B0, 87, 0); + } + + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 1, 112, 1); +} + +static void sub_80F19DC(u8 *text) +{ + while (text[0] != EOS) + { + if (text[0] == EXT_CTRL_CODE_BEGIN && text[1] == CHAR_SPACE) + { + text[0] = EOS; + break; + } + + text++; + } +} + +static void sub_80F19FC(void) +{ + // FIXME r4/r5 swapped + register u8 *ptr asm("r5") = gUnknown_020388B0; + if (ptr[0] == 1) + { + const u8 *landmarkName = GetLandmarkName( + gUnknown_083DFEC4->regionMap.mapSectionId, + gUnknown_083DFEC4->regionMap.everGrandeCityArea, + ptr[1]); + + if (landmarkName) + { + sub_8072A18(landmarkName, 0x70, 4 * (ptr[1] * 4 + 12), 0x78, 1); + if (++ptr[1] != 4) + return; + } + + Menu_BlankWindowRect(14, ptr[1] * 2 + 6, 28, 15); + ptr[0] = 0; + } +} + +static void sub_80F1A74(void) +{ + gUnknown_020388B0[0] = 0; +} + +static void sub_80F1A80(void) +{ + gUnknown_020388B0[0] = 1; + gUnknown_020388B0[1] = 0; +} + +static void sub_80F1A90(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (gUnknown_083DFEC4->unk6DAC == 0) + while (sub_80F1AC4()); +} + +static bool8 sub_80F1AC4(void) +{ + u16 i, j; + + switch (gUnknown_083DFEC4->unk306) + { + case 0: + for (i = 0; i < 6; i++) + { + for (j = 0; j < 4; j++) + gUnknown_083DFEC4->unk320[i][j] = NULL; + } + + gUnknown_083DFEC4->unk311 = 0; + break; + case 1: + LZ77UnCompWram(gPokenavMenuOptions_Gfx, gUnknown_083DFEC4->unk388); + break; + case 2: + LZ77UnCompWram(gPokenavConditionMenu_Gfx, gUnknown_083DFEC4->unk1788); + break; + case 3: + LZ77UnCompWram(gPokenavConditionSearch_Gfx, gUnknown_083DFEC4->unk2388); + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F1B8C(u8 arg0) +{ + gUnknown_083DFEC4->unk306 = 0; + if (gUnknown_083DFEC4->unk6DAC == 0) + while (sub_80F1BC8(arg0)); +} + +#ifdef NONMATCHING +// very close, but for some reason, (i + 1) is being stored in sp[0x10] +static bool8 sub_80F1BC8(u8 arg0) +{ + u16 i, j; + u16 animNum; + u16 topOffset; + u16 height; + u16 middle; + u8 spriteId; + + switch (gUnknown_083DFEC4->unk306) + { + case 0: + sub_80F2458(arg0); + break; + case 1: + sub_80F2514(arg0); + break; + case 2: + switch (arg0) + { + case 0: + topOffset = 42; + height = 20; + gUnknown_083DFEC4->unk30E = 5; + break; + case 1: + topOffset = 56; + height = 20; + gUnknown_083DFEC4->unk30E = 3; + break; + case 2: + topOffset = 40; + height = 16; + gUnknown_083DFEC4->unk30E = 6; + break; + default: + return FALSE; + } + + animNum = 0; + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + middle = (height * i) + topOffset - 8; + gUnknown_083DFEC4->unk314[i] = (middle << 8) | (middle + 0x11); + if (!arg0) + { + if (gUnknown_083DFEC4->unk6DB2[i] == 0) + { + for (j = 0; j < 4; j++) + gUnknown_083DFEC4->unk320[i][j] = NULL; + continue; + } + else + { + animNum = (gUnknown_083DFEC4->unk6DB2[i] - 1) * 4; + } + } + + for (j = 0; j < 4; j++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk320[i][j] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk320[i][j]->data[0] = i; + gUnknown_083DFEC4->unk320[i][j]->data[1] = j; + gUnknown_083DFEC4->unk320[i][j]->data[2] = j * 32 + 152; + gUnknown_083DFEC4->unk320[i][j]->data[3] = j * 32 + 256; + StartSpriteAnim(gUnknown_083DFEC4->unk320[i][j], animNum++); + + if ((arg0 == 2 || arg0 == 0) && i > 2) + gUnknown_083DFEC4->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1); + } + } + } + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} +#else +NAKED +static bool8 sub_80F1BC8(u8 arg0) +{ + 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\ + sub sp, 0xC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + ldr r1, _080F1BF4 @ =gUnknown_083DFEC4\n\ + ldr r2, [r1]\n\ + ldr r3, _080F1BF8 @ =0x00000306\n\ + adds r0, r2, r3\n\ + ldrh r0, [r0]\n\ + adds r3, r1, 0\n\ + cmp r0, 0x1\n\ + beq _080F1C0A\n\ + cmp r0, 0x1\n\ + bgt _080F1BFC\n\ + cmp r0, 0\n\ + beq _080F1C02\n\ + b _080F1DC4\n\ + .align 2, 0\n\ +_080F1BF4: .4byte gUnknown_083DFEC4\n\ +_080F1BF8: .4byte 0x00000306\n\ +_080F1BFC:\n\ + cmp r0, 0x2\n\ + beq _080F1C12\n\ + b _080F1DC4\n\ +_080F1C02:\n\ + mov r0, r9\n\ + bl sub_80F2458\n\ + b _080F1DC8\n\ +_080F1C0A:\n\ + mov r0, r9\n\ + bl sub_80F2514\n\ + b _080F1DC8\n\ +_080F1C12:\n\ + mov r4, r9\n\ + cmp r4, 0x1\n\ + beq _080F1C40\n\ + cmp r4, 0x1\n\ + bgt _080F1C22\n\ + cmp r4, 0\n\ + beq _080F1C2A\n\ + b _080F1DC4\n\ +_080F1C22:\n\ + mov r5, r9\n\ + cmp r5, 0x2\n\ + beq _080F1C54\n\ + b _080F1DC4\n\ +_080F1C2A:\n\ + movs r0, 0x2A\n\ + str r0, [sp, 0x4]\n\ + movs r1, 0x14\n\ + str r1, [sp, 0x8]\n\ + ldr r4, _080F1C3C @ =0x0000030e\n\ + adds r1, r2, r4\n\ + movs r0, 0x5\n\ + b _080F1C62\n\ + .align 2, 0\n\ +_080F1C3C: .4byte 0x0000030e\n\ +_080F1C40:\n\ + movs r5, 0x38\n\ + str r5, [sp, 0x4]\n\ + movs r0, 0x14\n\ + str r0, [sp, 0x8]\n\ + ldr r4, _080F1C50 @ =0x0000030e\n\ + adds r1, r2, r4\n\ + movs r0, 0x3\n\ + b _080F1C62\n\ + .align 2, 0\n\ +_080F1C50: .4byte 0x0000030e\n\ +_080F1C54:\n\ + movs r5, 0x28\n\ + str r5, [sp, 0x4]\n\ + movs r0, 0x10\n\ + str r0, [sp, 0x8]\n\ + ldr r4, _080F1CDC @ =0x0000030e\n\ + adds r1, r2, r4\n\ + movs r0, 0x6\n\ +_080F1C62:\n\ + strb r0, [r1]\n\ + movs r5, 0\n\ + str r5, [sp]\n\ + mov r8, r5\n\ + adds r1, r3, 0\n\ + ldr r0, [r1]\n\ + ldr r2, _080F1CDC @ =0x0000030e\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r8, r0\n\ + blt _080F1C7E\n\ + b _080F1DC8\n\ +_080F1C7E:\n\ + ldr r4, [sp, 0x8]\n\ + mov r3, r8\n\ + muls r3, r4\n\ + ldr r5, [sp, 0x4]\n\ + adds r0, r5, r3\n\ + subs r0, 0x8\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldr r4, [r1]\n\ + mov r2, r8\n\ + lsls r1, r2, 1\n\ + movs r5, 0xC5\n\ + lsls r5, 2\n\ + adds r2, r4, r5\n\ + adds r2, r1\n\ + lsls r1, r0, 8\n\ + adds r0, 0x11\n\ + orrs r1, r0\n\ + strh r1, [r2]\n\ + mov r0, r9\n\ + cmp r0, 0\n\ + bne _080F1CF2\n\ + ldr r1, _080F1CE0 @ =0x00006db2\n\ + adds r0, r4, r1\n\ + mov r2, r8\n\ + adds r1, r0, r2\n\ + ldrb r0, [r1]\n\ + cmp r0, 0\n\ + bne _080F1CE8\n\ + movs r5, 0\n\ + ldr r0, _080F1CE4 @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + lsls r2, 4\n\ + movs r3, 0xC8\n\ + lsls r3, 2\n\ + adds r1, r0, r3\n\ + movs r3, 0\n\ +_080F1CC8:\n\ + lsls r0, r5, 2\n\ + adds r0, r2\n\ + adds r0, r1, r0\n\ + str r3, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x3\n\ + bls _080F1CC8\n\ + b _080F1D92\n\ + .align 2, 0\n\ +_080F1CDC: .4byte 0x0000030e\n\ +_080F1CE0: .4byte 0x00006db2\n\ +_080F1CE4: .4byte gUnknown_083DFEC4\n\ +_080F1CE8:\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 18\n\ + lsrs r0, 16\n\ + str r0, [sp]\n\ +_080F1CF2:\n\ + movs r5, 0\n\ + ldr r4, [sp, 0x4]\n\ + adds r0, r4, r3\n\ + lsls r0, 16\n\ + mov r10, r0\n\ +_080F1CFC:\n\ + lsls r6, r5, 5\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + adds r7, r6, r0\n\ + lsls r1, r7, 16\n\ + asrs r1, 16\n\ + ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\ + mov r3, r10\n\ + asrs r2, r3, 16\n\ + movs r3, 0\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0x40\n\ + beq _080F1DC4\n\ + ldr r0, _080F1DB8 @ =gUnknown_083DFEC4\n\ + ldr r2, [r0]\n\ + lsls r1, r5, 2\n\ + mov r4, r8\n\ + lsls r0, r4, 4\n\ + adds r1, r0\n\ + movs r0, 0xC8\n\ + lsls r0, 2\n\ + adds r2, r0\n\ + adds r4, r2, r1\n\ + lsls r0, r3, 4\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + ldr r1, _080F1DBC @ =gSprites\n\ + adds r0, r1\n\ + str r0, [r4]\n\ + mov r1, r8\n\ + strh r1, [r0, 0x2E]\n\ + ldr r0, [r4]\n\ + strh r5, [r0, 0x30]\n\ + ldr r1, [r4]\n\ + adds r0, r6, 0\n\ + adds r0, 0x98\n\ + strh r0, [r1, 0x32]\n\ + ldr r0, [r4]\n\ + strh r7, [r0, 0x34]\n\ + ldr r0, [r4]\n\ + ldr r1, [sp]\n\ + adds r2, r1, 0x1\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + str r2, [sp]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + bl StartSpriteAnim\n\ + mov r2, r9\n\ + cmp r2, 0x2\n\ + beq _080F1D6E\n\ + cmp r2, 0\n\ + bne _080F1D88\n\ +_080F1D6E:\n\ + mov r3, r8\n\ + cmp r3, 0x2\n\ + bls _080F1D88\n\ + movs r0, 0x1\n\ + bl IndexOfSpritePaletteTag\n\ + ldr r3, [r4]\n\ + lsls r0, 4\n\ + ldrb r2, [r3, 0x5]\n\ + movs r1, 0xF\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r3, 0x5]\n\ +_080F1D88:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x3\n\ + bls _080F1CFC\n\ +_080F1D92:\n\ + mov r0, r8\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + ldr r1, _080F1DB8 @ =gUnknown_083DFEC4\n\ + ldr r0, [r1]\n\ + ldr r4, _080F1DC0 @ =0x0000030e\n\ + adds r0, r4\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r8, r0\n\ + bge _080F1DB0\n\ + b _080F1C7E\n\ +_080F1DB0:\n\ + b _080F1DC8\n\ + .align 2, 0\n\ +_080F1DB4: .4byte gSpriteTemplate_83E4454\n\ +_080F1DB8: .4byte gUnknown_083DFEC4\n\ +_080F1DBC: .4byte gSprites\n\ +_080F1DC0: .4byte 0x0000030e\n\ +_080F1DC4:\n\ + movs r0, 0\n\ + b _080F1DD8\n\ +_080F1DC8:\n\ + ldr r0, _080F1DE8 @ =gUnknown_083DFEC4\n\ + ldr r1, [r0]\n\ + ldr r5, _080F1DEC @ =0x00000306\n\ + adds r1, r5\n\ + ldrh r0, [r1]\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ + movs r0, 0x1\n\ +_080F1DD8:\n\ + add sp, 0xC\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\ +_080F1DE8: .4byte gUnknown_083DFEC4\n\ +_080F1DEC: .4byte 0x00000306\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +static void sub_80F1DF0(void) +{ + u16 i, j; + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + for (j = 0; j < 4; j++) + { + if (gUnknown_083DFEC4->unk320[i][j]) + gUnknown_083DFEC4->unk320[i][j]->callback = sub_80F2218; + } + } + + PlaySE(SE_WIN_OPEN); +} + +static bool8 sub_80F1E50(void) +{ + if (sub_80F22F8()) + { + sub_80F2108(); + return FALSE; + } + else + { + return TRUE; + } +} + +static bool8 sub_80F1E6C(void) +{ + return !sub_80F22F8(); +} + +static void sub_80F1E84(void) +{ + u16 i, j; + + gUnknown_083DFEC4->unk30F = 0; + sub_80F2148(); + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + if (i != gUnknown_083DFEC4->unk6DAD) + { + for (j = 0; j < 4; j++) + { + if (gUnknown_083DFEC4->unk320[i][j]) + gUnknown_083DFEC4->unk320[i][j]->callback = sub_80F2240; + } + } + } +} + +static bool8 sub_80F1F10(void) +{ + u16 j; + + switch (gUnknown_083DFEC4->unk30F) + { + case 0: + if (sub_80F2360()) + { + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j]; + sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + sprite->affineAnims = gSpriteAffineAnimTable_83E4450; + InitSpriteAffineAnim(sprite); + sprite->data[4] = j * 4 - 6; + sprite->data[4] /= 2; + sprite->data[5] = sprite->data[4] * 8; + sprite->callback = sub_80F2240; + } + + sub_80F2170(); + gUnknown_083DFEC4->unk30F++; + } + break; + case 1: + if (sub_80F23C8()) + { + sub_80F21F8(); + FreeSpriteTilesByTag(0x0); + FreeSpritePaletteByTag(0x0); + FreeSpritePaletteByTag(0x1); + return FALSE; + } + break; + } + + return TRUE; +} + +static void sub_80F1FF0(void) +{ + if (gUnknown_083DFEC4->unk311 == 1) + { + REG_WIN0V = gUnknown_083DFEC4->unk314[gUnknown_083DFEC4->unk6DAD]; + REG_BLDY = gSineTable[gUnknown_083DFEC4->unk312] >> 5; + gUnknown_083DFEC4->unk312 += 3; + gUnknown_083DFEC4->unk312 &= 0x7F; + } + else if (gUnknown_083DFEC4->unk311 == 2) + { + REG_BLDALPHA = gUnknown_083E42F8[gUnknown_083DFEC4->unk312]; + if (gUnknown_083DFEC4->unk312 < 15) + gUnknown_083DFEC4->unk312++; + } +} + +static void sub_80F208C(void) +{ + sub_80F2148(); +} + +static void sub_80F2098(void) +{ + REG_WIN0H = 0x77F0; + REG_WIN0V = gUnknown_083DFEC4->unk314[gUnknown_083DFEC4->unk6DAD]; + REG_WININ = 0x3F; + REG_WINOUT = 0x1F; + REG_DISPCNT |= DISPCNT_WIN0_ON; +} + +static void sub_80F20F4(void) +{ + REG_DISPCNT &= ~DISPCNT_WIN0_ON; +} + +static void sub_80F2108(void) +{ + if (!gUnknown_083DFEC4->unk311) + { + gUnknown_083DFEC4->unk311 = 1; + gUnknown_083DFEC4->unk312 = 0; + REG_BLDCNT = 0x90; + REG_BLDY = 0; + sub_80F2098(); + } +} + +static void sub_80F2148(void) +{ + gUnknown_083DFEC4->unk311 = 0; + REG_BLDCNT = 0; + sub_80F20F4(); +} + +static void sub_80F2170(void) +{ + u16 j; + + if (!gUnknown_083DFEC4->unk311) + { + sub_80F20F4(); + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j]; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + } + + gUnknown_083DFEC4->unk311 = 2; + gUnknown_083DFEC4->unk312 = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x10; + } +} + +static void sub_80F21F8() +{ + gUnknown_083DFEC4->unk311 = 0; + REG_BLDCNT = 0; +} + +static void sub_80F2218(struct Sprite *sprite) +{ + sprite->pos1.x -= 8; + if (sprite->pos1.x <= sprite->data[2]) + { + sprite->pos1.x = sprite->data[2]; + sprite->callback = sub_80F22B0; + } +} + +static void sub_80F2240(struct Sprite *sprite) +{ + if (sprite->data[0] == gUnknown_083DFEC4->unk6DAD) + { + if (sprite->data[5]) + { + sprite->pos1.x += sprite->data[4]; + sprite->data[5] -= sprite->data[4]; + } + + if (sprite->affineAnimEnded) + sub_80F240C(sprite); + } + else + { + sprite->pos1.x += 8; + if (sprite->pos1.x >= sprite->data[3]) + sub_80F240C(sprite); + } +} + +static void sub_80F22B0(struct Sprite *sprite) +{ + if (sprite->data[0] == gUnknown_083DFEC4->unk6DAD) + { + if (sprite->pos2.x > -16) + sprite->pos2.x -= 4; + } + else + { + if (sprite->pos2.x < 0) + sprite->pos2.x += 4; + } +} + +static bool8 sub_80F22F8(void) +{ + u16 i, j; + + for (i = 0; i < gUnknown_083DFEC4->unk6DAE; i++) + { + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[i][j]; + if (!sprite) + return TRUE; + + if (sprite->pos2.x != 0 && sprite->pos2.x != -16) + return FALSE; + } + } + + return TRUE; +} + +static bool8 sub_80F2360(void) +{ + u16 i, j; + + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + if (i != gUnknown_083DFEC4->unk6DAD) + { + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[i][j]; + if (sprite) + return FALSE; + } + } + } + + return TRUE; +} + +static bool8 sub_80F23C8(void) +{ + u16 j; + + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j]; + if (sprite) + return FALSE; + } + + return TRUE; +} + +static void sub_80F240C(struct Sprite *sprite) +{ + gUnknown_083DFEC4->unk320[sprite->data[0]][sprite->data[1]] = NULL; + if (sprite->affineAnimEnded) + FreeOamMatrix(sprite->oam.matrixNum); + + DestroySprite(sprite); +} + +static void sub_80F2458(u8 arg0) +{ + switch (arg0) + { + case 0: + gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk388; + gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk388); + gUnknown_083DFEC4->unk380.tag = 0x0; + break; + case 1: + gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk1788; + gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk1788); + gUnknown_083DFEC4->unk380.tag = 0x0; + break; + case 2: + gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk2388; + gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk2388); + gUnknown_083DFEC4->unk380.tag = 0x0; + break; + default: + return; + } + + LoadSpriteSheet(&gUnknown_083DFEC4->unk380); +} + +static void sub_80F2514(u8 arg0) +{ + struct SpritePalette spritePalette; + + switch (arg0) + { + case 0: + spritePalette.data = gPokenavMenuOptions1_Pal; + spritePalette.tag = 0; + LoadSpritePalette(&spritePalette); + spritePalette.data = gPokenavMenuOptions2_Pal; + spritePalette.tag = 0x1; + break; + case 1: + spritePalette.data = gPokenavConditionMenu_Pal; + spritePalette.tag = 0x0; + break; + case 2: + spritePalette.data = gPokenavCondition6_Pal; + spritePalette.tag = 0; + LoadSpritePalette(&spritePalette); + spritePalette.data = gPokenavCondition7_Pal; + spritePalette.tag = 0x1; + break; + default: + return; + } + + LoadSpritePalette(&spritePalette); +} + +static void sub_80F2598(void) +{ + u8 spriteId; + + gUnknown_083DFEC4->unk6D9C = NULL; + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) == TRUE) + { + LoadSpriteSheet(&gSpriteSheet_PokenavBlueLight); + LoadSpritePalette(&gSpritePalette_PokenavBlueLight); + spriteId = CreateSprite(&gSpriteTemplate_83E4484, 12, 96, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk6D9C = &gSprites[spriteId]; + } + else + { + FreeSpriteTilesByTag(0x19); + FreeSpritePaletteByTag(0x11); + } + } +} + +static void sub_80F2620(void) +{ + if (gUnknown_083DFEC4->unk6D9C) + { + DestroySprite(gUnknown_083DFEC4->unk6D9C); + FreeSpriteTilesByTag(0x19); + FreeSpritePaletteByTag(0x11); + gUnknown_083DFEC4->unk6D9C = NULL; + } +} + +void sub_80F2654(struct Sprite *sprite) +{ + if (++sprite->data[0] > 6) + { + sprite->data[0] = 0; + sprite->invisible = !sprite->invisible; + } +} + +void sub_80F2688(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while(sub_80F26BC()); +} + +static bool8 sub_80F26BC(void) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + LZ77UnCompWram(gPokenavMainMenu_Gfx, gUnknown_083DFEC4->unk3B98); + break; + case 1: + LZ77UnCompWram(gPokenavConditionMenuHeader_Gfx, gUnknown_083DFEC4->unk4198); + break; + case 2: + LZ77UnCompWram(gPokenavRibbonsHeader_Gfx, gUnknown_083DFEC4->unk4D98); + break; + case 3: + LZ77UnCompWram(gPokenavHoennMapHeader_Gfx, gUnknown_083DFEC4->unk5398); + break; + case 4: + LZ77UnCompWram(gPokenavConditionMenuOptions_Gfx, gUnknown_083DFEC4->unk5F98); + break; + case 5: + LZ77UnCompWram(gPokenavConditionMenuOptions2_Gfx, gUnknown_083DFEC4->unk6798); + break; + case 6: + LZ77UnCompWram(gPokenavTrainersEyesHeader_Gfx, gUnknown_083DFEC4->unk4798); + break; + case 7: + LoadSpritePalettes(gUnknown_083E449C); + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F27DC(u8 arg0) +{ + struct SpriteSheet spriteSheet; + + switch (arg0) + { + case 0: + spriteSheet.data = gUnknown_083DFEC4->unk3B98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk3B98); + spriteSheet.tag = 0x1; + break; + case 1: + spriteSheet.data = gUnknown_083DFEC4->unk4198; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4198); + spriteSheet.tag = 0x1; + break; + case 3: + spriteSheet.data = gUnknown_083DFEC4->unk4798; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4798); + spriteSheet.tag = 0x1; + break; + case 2: + spriteSheet.data = gUnknown_083DFEC4->unk4D98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4D98); + spriteSheet.tag = 0x1; + break; + case 4: + spriteSheet.data = gUnknown_083DFEC4->unk5398; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk5398); + spriteSheet.tag = 0x1; + break; + case 5: + spriteSheet.data = gUnknown_083DFEC4->unk5F98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk5F98); + spriteSheet.tag = 0x2; + break; + case 6: + spriteSheet.data = gUnknown_083DFEC4->unk6198; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6198); + spriteSheet.tag = 0x2; + break; + case 8: + spriteSheet.data = gUnknown_083DFEC4->unk6398; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6398); + spriteSheet.tag = 0x2; + break; + case 9: + spriteSheet.data = gUnknown_083DFEC4->unk6598; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6598); + spriteSheet.tag = 0x2; + break; + case 11: + spriteSheet.data = gUnknown_083DFEC4->unk6998; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6998); + spriteSheet.tag = 0x2; + break; + case 10: + spriteSheet.data = gUnknown_083DFEC4->unk6798; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6798); + spriteSheet.tag = 0x2; + break; + case 7: + spriteSheet.data = gUnknown_083DFEC4->unk6B98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6B98); + spriteSheet.tag = 0x2; + break; + default: + return; + } + + LoadSpriteSheet(&spriteSheet); +} + +void sub_80F29B8(u8 arg0) +{ + u16 i; + s16 deltaX, endX, initialX; + u16 y; + s16 width; + struct Sprite **sprites; + const struct SpriteTemplate *spriteTemplate; + u8 spriteId; + + spriteTemplate = NULL; + switch (arg0) + { + case 0: + case 1: + case 2: + case 3: + initialX = -96; + y = 49 - gUnknown_083DFEC4->unk030C; + deltaX = 8; + endX = 32; + width = 64; + sprites = gUnknown_083DFEC4->unk3B88; + spriteTemplate = arg0 != 3 ? &gSpriteTemplate_83E44E0 : &gSpriteTemplate_83E44F8; + break; + case 4: + initialX = 272; + y = 49 - gUnknown_083DFEC4->unk030C; + deltaX = -8; + endX = 152; + width = 64; + spriteTemplate = &gSpriteTemplate_83E44E0; + sprites = gUnknown_083DFEC4->unk3B88; + break; + case 5: + case 6: + case 8: + case 9: + spriteTemplate = &gSpriteTemplate_83E4530; + // fall through + case 7: + case 10: + case 11: + if (spriteTemplate == NULL) + spriteTemplate = &gSpriteTemplate_83E4548; + + initialX = -96; + y = 68 - gUnknown_083DFEC4->unk030C; + deltaX = 8; + endX = 16; + width = 32; + sprites = gUnknown_083DFEC4->unk3B90; + break; + default: + return; + } + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(spriteTemplate, i * width + initialX, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = deltaX; + gSprites[spriteId].data[1] = endX + i * width; + gSprites[spriteId].data[2] = i; + gSprites[spriteId].data[3] = arg0; + if (arg0 == 4 && i == 1) + { + int anim = !gUnknown_083DFEC4->regionMap.zoomed ? 1 : 2; + StartSpriteAnim(&gSprites[spriteId], anim); + } + else + { + StartSpriteAnim(&gSprites[spriteId], i); + } + + if (arg0 < 4 && i == 1) + { + gSprites[spriteId].oam.shape = ST_OAM_SQUARE; + gSprites[spriteId].oam.size = 2; + } + + sprites[i] = &gSprites[spriteId]; + } + } +} + +#define sEndX sprite->data[1] +void sub_80F2BBC(struct Sprite *sprite) +{ + s16 x = sprite->pos1.x; + sprite->pos1.x += sprite->data[0]; + if ((x <= sEndX && sprite->pos1.x >= sEndX) || (x >= sEndX && sprite->pos1.x <= sEndX)) + { + sprite->pos1.x = sEndX; + if (sprite->data[3] == 4 && sprite->data[2] == 1) + sprite->callback = sub_80F2C58; + else + sprite->callback = SpriteCallbackDummy; + } +} +#undef sEndX + +static void sub_80F2C14(struct Sprite *sprite) +{ + u16 right; + + sprite->pos1.x -= sprite->data[0]; + right = sprite->pos1.x + 32; + if (right > 304) + { + if (sprite->data[2] == 1) + { + if (sprite->data[3] < 5) + FreeSpriteTilesByTag(0x1); + else + FreeSpriteTilesByTag(0x2); + } + + DestroySprite(sprite); + } +} + +static void sub_80F2C58(struct Sprite *sprite) +{ + int anim = !gUnknown_083DFEC4->regionMap.zoomed ? 1 : 2; + StartSpriteAnim(sprite, anim); +} + +void sub_80F2C80(u8 arg0) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F2CBC(arg0)); +} + +bool8 sub_80F2CBC(u8 arg0) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + sub_80F27DC(arg0); + gUnknown_083DFEC4->unk306++; + return TRUE; + case 1: + sub_80F29B8(arg0); + gUnknown_083DFEC4->unk306++; + return FALSE; + default: + return FALSE; + } +} + +static void sub_80F2D04(u8 arg0) +{ + u16 i; + + if (arg0 < 5) + { + for (i = 0; i < 2; i++) + gUnknown_083DFEC4->unk3B88[i]->callback = sub_80F2C14; + } + else + { + for (i = 0; i < 2; i++) + gUnknown_083DFEC4->unk3B90[i]->callback = sub_80F2C14; + } +} + +static void sub_80F2D6C(u8 arg0) +{ + u16 i; + + if (arg0 < 5) + { + FreeSpriteTilesByTag(0x1); + for (i = 0; i < 2; i++) + DestroySprite(gUnknown_083DFEC4->unk3B88[i]); + } + else + { + FreeSpriteTilesByTag(0x2); + for (i = 0; i < 2; i++) + DestroySprite(gUnknown_083DFEC4->unk3B90[i]); + } +} + +static void sub_80F2DD8(void) +{ + CreateRegionMapCursor(7, 7); + CreateRegionMapPlayerIcon(8, 8); + sub_80FBF94(); +} + +static void sub_80F2DF4(void) +{ + FreeRegionMapIconResources(); +} + +void sub_80F2E00(struct Sprite *sprite) +{ + sprite->pos1.x = gUnknown_083DFEC4->unk8766 + 38; +} + +static void sub_80F2E18(u8 arg0) +{ + u8 spriteId; + struct SpriteTemplate spriteTemplate; + struct SpritePalette spritePalette; + struct SpriteSheet spriteSheet; + + if (!gUnknown_083DFEC4->unk8768) + { + spriteSheet = gUnknown_083E4568; + spriteTemplate = gSpriteTemplate_83E4570; + spritePalette = gUnknown_083E4588; + + spriteSheet.data = gUnknown_083DFEC4->unkD1E4[arg0]; + spritePalette.data = gUnknown_083DFEC4->unk0[arg0]; + gUnknown_083DFEC4->unkD1DC = LoadSpritePalette(&spritePalette); + gUnknown_083DFEC4->unkD1DE = LoadSpriteSheet(&spriteSheet); + + spriteId = CreateSprite(&spriteTemplate, 38, 104, 0); + if (spriteId == MAX_SPRITES) + { + FreeSpriteTilesByTag(0x6); + FreeSpritePaletteByTag(0x6); + gUnknown_083DFEC4->unk8768 = NULL; + } + else + { + gUnknown_083DFEC4->unk8768 = &gSprites[spriteId]; + gUnknown_083DFEC4->unkD1E0 = (void *)(VRAM + 0x10000) + gUnknown_083DFEC4->unkD1DE * 32; + gUnknown_083DFEC4->unkD1DC = gUnknown_083DFEC4->unkD1DC * 16 + 0x100; + } + } + else + { + DmaCopy16Defvars(3, gUnknown_083DFEC4->unkD1E4[arg0], gUnknown_083DFEC4->unkD1E0, 0x800); + LoadPalette(gUnknown_083DFEC4->unk0[arg0], gUnknown_083DFEC4->unkD1DC, 0x20); + } +} + +void sub_80F2F48(void) +{ + if (gUnknown_083DFEC4->unk8768) + { + DestroySprite(gUnknown_083DFEC4->unk8768); + FreeSpriteTilesByTag(0x6); + FreeSpritePaletteByTag(0x6); + gUnknown_083DFEC4->unk8768 = NULL; + } +} + +void sub_80F2F7C(u8 arg0) +{ + sub_80F2E18(arg0); + gUnknown_083DFEC4->unkCED0 = gUnknown_083DFEC4->unk8768; + gUnknown_083DFEC4->unkCED0->callback = sub_80F2FEC; +} + +static void sub_80F2FB0(void) +{ + if (gUnknown_083DFEC4->unkCED0) + { + DestroySprite(gUnknown_083DFEC4->unkCED0); + FreeSpriteTilesByTag(0x6); + FreeSpritePaletteByTag(0x6); + gUnknown_083DFEC4->unkCED0 = NULL; + gUnknown_083DFEC4->unk8768 = NULL; + } +} + +static void sub_80F2FEC(struct Sprite *sprite) +{ + sprite->pos1.x = gUnknown_083DFEC4->unkD15A + 40; + sprite->pos1.y = 104; +} + +static void sub_80F3008(u8 arg0) +{ + u16 i; + u8 spriteId; + struct SpritePalette spritePalette; + struct SpriteSheet spriteSheets[3]; + + memcpy(spriteSheets, gUnknown_083E4590, sizeof(gUnknown_083E4590)); + spritePalette = gUnknown_083E45A8; + switch (arg0) + { + case 1: + case 2: + spritePalette.data = gUnknown_08E9F988; + break; + } + + LoadSpriteSheets(spriteSheets); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&gSpriteTemplate_83E45B8, 95, 0, 0); + if (spriteId == MAX_SPRITES) + { + gUnknown_083DFEC4->unk87CC = NULL; + } + else + { + gUnknown_083DFEC4->unk87CC = &gSprites[spriteId]; + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E45F0, 168, i * 128 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87D0[i] = &gSprites[spriteId]; + gSprites[spriteId].invisible = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].data[2] = i == 0 ? -1 : 1; + gSprites[spriteId].data[3] = i; + gSprites[spriteId].data[4] = 1; + StartSpriteAnim(&gSprites[spriteId], i); + } + else + { + gUnknown_083DFEC4->unk87D0[i] = NULL; + } + } + } +} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index bcfeed672..dd28bd148 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -243,7 +243,7 @@ static void sub_8136294(void) case 6: gUnknown_083DFEC4->unk76AA = 0; gUnknown_083DFEC4->unk87E0 = NULL; - gUnknown_083DFEC4->unk030C.val = 0x20; + gUnknown_083DFEC4->unk030C = 0x20; gUnknown_02039304->unk50++; break; case 7: @@ -285,7 +285,7 @@ static void sub_8136294(void) break; case 13: sub_80F2E18(0); - gUnknown_083DFEC4->unk8768->unk26 = 0xffd8; + gUnknown_083DFEC4->unk8768->pos2.y = 0xffd8; gUnknown_02039304->unk50++; break; case 14: |