summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2018-08-16 20:42:30 -0500
committerMarcus Huderle <huderlem@gmail.com>2018-08-16 20:57:02 -0500
commit01d44429a35584b44d820a14751ba03734e63701 (patch)
tree77df278c8f0385e087bd17fc1620872dacff90ba
parentc4162d997dd0ca440fe95ac4fbe54f1d85c365f3 (diff)
Decompile even more pokenav
-rw-r--r--asm/pokenav.s3478
-rw-r--r--include/pokenav.h67
-rw-r--r--include/region_map.h1
-rw-r--r--include/use_pokeblock.h1
-rw-r--r--src/pokenav_before.c1549
-rw-r--r--src/use_pokeblock.c4
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: