summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKDSKardabox <bollygame94@gmail.com>2018-04-17 14:24:39 +0530
committerKDSKardabox <bollygame94@gmail.com>2018-04-17 14:24:39 +0530
commitf5cbefc2958e5dec050be0b6a8ccaf46c42693a1 (patch)
tree1251a94d6749abca11abb9e442725528b7ed7a28
parent936bb5925ae797a9cf59ef43940f52547c8f60a7 (diff)
Decompile mon markings
-rw-r--r--asm/mon_markings.s946
-rw-r--r--data/mon_markings.s157
-rw-r--r--include/graphics.h4
-rw-r--r--include/mon_markings.h24
-rw-r--r--include/text_window.h4
-rw-r--r--ld_script.txt4
-rw-r--r--src/mon_markings.c616
-rw-r--r--src/text_window.c40
-rw-r--r--sym_ewram.txt4
9 files changed, 669 insertions, 1130 deletions
diff --git a/asm/mon_markings.s b/asm/mon_markings.s
deleted file mode 100644
index dfc375fdf..000000000
--- a/asm/mon_markings.s
+++ /dev/null
@@ -1,946 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_811F90C
-sub_811F90C: @ 811F90C
- ldr r1, =gUnknown_0203A124
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_811F90C
-
- thumb_func_start sub_811F918
-sub_811F918: @ 811F918
- push {lr}
- sub sp, 0x4
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- lsrs r0, 3
- bl GetWindowFrameTilesPal
- ldr r3, =gUnknown_0203A124
- ldr r2, [r3]
- ldr r1, [r0]
- str r1, [r2, 0x2C]
- ldr r0, [r0, 0x4]
- str r0, [r2, 0x30]
- ldr r0, =0x000010b4
- adds r2, r0
- movs r1, 0
- strb r1, [r2]
- mov r0, sp
- strh r1, [r0]
- ldr r1, [r3]
- adds r1, 0x34
- ldr r2, =0x01000800
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811F918
-
- thumb_func_start sub_811F960
-sub_811F960: @ 811F960
- push {r4-r7,lr}
- ldr r0, =gUnknown_0203A124
- ldr r1, [r0]
- ldr r2, =0x000010b4
- adds r0, r1, r2
- ldrb r2, [r0]
- lsls r0, r2, 8
- adds r0, 0x34
- adds r5, r1, r0
- cmp r2, 0xD
- beq _0811FA30
- cmp r2, 0xD
- bgt _0811F988
- cmp r2, 0
- beq _0811F98E
- b _0811F9D8
- .pool
-_0811F988:
- cmp r2, 0xE
- beq _0811FA7C
- b _0811F9D8
-_0811F98E:
- ldr r0, [r1, 0x2C]
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_0811F99E:
- ldr r6, =gUnknown_0203A124
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0x20
- adds r4, 0x1
- lsls r1, r4, 5
- adds r1, r5, r1
- movs r2, 0x8
- bl CpuFastSet
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x5
- bls _0811F99E
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0x40
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r0, =0x000010b4
- adds r1, r0
- b _0811FA1E
- .pool
-_0811F9D8:
- ldr r0, =gUnknown_0203A124
- ldr r0, [r0]
- ldr r0, [r0, 0x2C]
- adds r0, 0x60
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_0811F9EE:
- ldr r6, =gUnknown_0203A124
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0x80
- adds r4, 0x1
- lsls r1, r4, 5
- adds r1, r5, r1
- movs r2, 0x8
- bl CpuFastSet
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x5
- bls _0811F9EE
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0xA0
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r2, =0x000010b4
- adds r1, r2
-_0811FA1E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0811FA88
- .pool
-_0811FA30:
- ldr r0, [r1, 0x2C]
- adds r0, 0xC0
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_0811FA42:
- ldr r6, =gUnknown_0203A124
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0xE0
- adds r4, 0x1
- lsls r1, r4, 5
- adds r1, r5, r1
- movs r2, 0x8
- bl CpuFastSet
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x5
- bls _0811FA42
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r2, =0x000010b4
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0811FA7C:
- movs r0, 0
- b _0811FA8A
- .pool
-_0811FA88:
- movs r0, 0x1
-_0811FA8A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811F960
-
- thumb_func_start sub_811FA90
-sub_811FA90: @ 811FA90
- push {lr}
- bl sub_811F918
-_0811FA96:
- bl sub_811F960
- lsls r0, 24
- cmp r0, 0
- bne _0811FA96
- pop {r0}
- bx r0
- thumb_func_end sub_811FA90
-
- thumb_func_start sub_811FAA4
-sub_811FAA4: @ 811FAA4
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r2, =gUnknown_0203A124
- ldr r3, [r2]
- movs r1, 0
- strb r1, [r3, 0x5]
- ldr r1, [r2]
- strb r0, [r1, 0x4]
- movs r3, 0
- adds r7, r2, 0
- adds r4, r7, 0
- movs r2, 0x1
-_0811FAC2:
- ldr r0, [r4]
- adds r1, r0, 0x6
- adds r1, r3
- ldrb r0, [r0, 0x4]
- asrs r0, r3
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _0811FAC2
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, r6, 16
- asrs r1, 16
- ldr r3, [r7]
- ldrh r2, [r3]
- ldrh r3, [r3, 0x2]
- bl sub_811FC80
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811FAA4
-
- thumb_func_start sub_811FAF8
-sub_811FAF8: @ 811FAF8
- push {r4-r7,lr}
- movs r5, 0
- ldr r4, =gUnknown_0203A124
-_0811FAFE:
- ldr r0, [r4]
- ldrh r0, [r0]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- ldrh r0, [r0, 0x2]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _0811FAFE
- movs r5, 0
- ldr r6, =gUnknown_0203A124
-_0811FB28:
- ldr r0, [r6]
- lsls r4, r5, 2
- adds r0, 0xC
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _0811FB9A
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0xC
- adds r0, r4
- movs r1, 0
- str r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _0811FB28
- movs r5, 0
- ldr r6, =gUnknown_0203A124
-_0811FB52:
- ldr r0, [r6]
- lsls r4, r5, 2
- adds r0, 0x14
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _0811FB9A
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0x14
- adds r0, r4
- movs r7, 0
- str r7, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _0811FB52
- ldr r4, =gUnknown_0203A124
- ldr r0, [r4]
- ldr r0, [r0, 0x24]
- cmp r0, 0
- beq _0811FB8A
- bl DestroySprite
- ldr r0, [r4]
- str r7, [r0, 0x24]
-_0811FB8A:
- ldr r0, [r4]
- ldr r0, [r0, 0x28]
- cmp r0, 0
- beq _0811FB9A
- bl DestroySprite
- ldr r0, [r4]
- str r7, [r0, 0x28]
-_0811FB9A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811FAF8
-
- thumb_func_start sub_811FBA4
-sub_811FBA4: @ 811FBA4
- push {r4,r5,lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _0811FBDC
- movs r0, 0x5
- bl PlaySE
- ldr r2, =gUnknown_0203A124
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- cmp r0, 0
- bge _0811FC64
- ldr r1, [r2]
- movs r0, 0x5
- strb r0, [r1, 0x5]
- b _0811FC64
- .pool
-_0811FBDC:
- movs r0, 0x80
- ands r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _0811FC0C
- movs r0, 0x5
- bl PlaySE
- ldr r2, =gUnknown_0203A124
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x5
- ble _0811FC64
- ldr r0, [r2]
- strb r5, [r0, 0x5]
- b _0811FC64
- .pool
-_0811FC0C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811FC68
- movs r0, 0x5
- bl PlaySE
- ldr r2, =gUnknown_0203A124
- ldr r0, [r2]
- movs r1, 0x5
- ldrsb r1, [r0, r1]
- cmp r1, 0x4
- beq _0811FC40
- cmp r1, 0x5
- beq _0811FC76
- adds r0, 0x6
- adds r1, r0, r1
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _0811FC62
- movs r2, 0x1
- b _0811FC62
- .pool
-_0811FC40:
- strb r4, [r0, 0x4]
- movs r3, 0
- adds r4, r2, 0
-_0811FC46:
- ldr r2, [r4]
- adds r0, r2, 0x6
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, r3
- ldrb r1, [r2, 0x4]
- orrs r0, r1
- strb r0, [r2, 0x4]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _0811FC46
- b _0811FC76
-_0811FC62:
- strb r2, [r1]
-_0811FC64:
- movs r0, 0x1
- b _0811FC78
-_0811FC68:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811FC64
- movs r0, 0x5
- bl PlaySE
-_0811FC76:
- movs r0, 0
-_0811FC78:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811FBA4
-
- thumb_func_start sub_811FC80
-sub_811FC80: @ 811FC80
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x50
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- ldr r4, =gUnknown_0203A124
- ldr r0, [r4]
- adds r0, 0x34
- str r0, [sp, 0x18]
- add r1, sp, 0x1C
- movs r7, 0
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r1]
- mov r0, sp
- adds r0, 0x1E
- strh r5, [r0]
- add r1, sp, 0x20
- ldr r0, =gPokenavConditionMarker_Gfx
- str r0, [sp, 0x20]
- movs r0, 0xC8
- lsls r0, 2
- strh r0, [r1, 0x4]
- adds r0, r5, 0x1
- strh r0, [r1, 0x6]
- add r0, sp, 0x28
- movs r1, 0
- movs r2, 0x8
- bl memset
- add r2, sp, 0x18
- mov r10, r2
- mov r0, sp
- mov r1, r10
- movs r2, 0x18
- bl memcpy
- ldr r0, [r4]
- ldr r0, [r0, 0x30]
- str r0, [sp, 0x30]
- add r0, sp, 0x34
- strh r6, [r0]
- add r1, sp, 0x38
- ldr r0, =gPokenavConditionMarker_Pal
- str r0, [sp, 0x38]
- adds r0, r6, 0x1
- strh r0, [r1, 0x4]
- add r0, sp, 0x40
- movs r1, 0
- movs r2, 0x8
- bl memset
- add r4, sp, 0x30
- mov r0, r10
- adds r1, r4, 0
- movs r2, 0x18
- bl memcpy
- strh r5, [r4]
- strh r6, [r4, 0x2]
- ldr r0, =gUnknown_0859EE7C
- str r0, [r4, 0x4]
- ldr r0, =gUnknown_0859EF14
- str r0, [r4, 0x8]
- str r7, [r4, 0xC]
- ldr r0, =gDummySpriteAffineAnimTable
- str r0, [r4, 0x10]
- ldr r0, =TaskDummy7
- str r0, [r4, 0x14]
- mov r0, sp
- bl LoadSpriteSheets
- mov r0, r10
- bl LoadSpritePalettes
- movs r5, 0
- mov r3, r8
- lsls r3, 16
- mov r8, r3
- movs r0, 0x80
- lsls r0, 14
- add r0, r8
- mov r10, r0
- mov r1, r8
- str r1, [sp, 0x48]
- mov r2, r9
- lsls r2, 16
- mov r9, r2
- movs r7, 0x80
- lsls r7, 14
- add r7, r9
- mov r3, r9
- str r3, [sp, 0x4C]
-_0811FD58:
- adds r0, r4, 0
- mov r2, r10
- asrs r1, r2, 16
- asrs r2, r7, 16
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- bne _0811FD70
- b _0811FEFC
-_0811FD70:
- ldr r6, =gUnknown_0203A124
- ldr r2, [r6]
- lsls r0, r5, 2
- adds r2, 0xC
- adds r2, r0
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- str r0, [r2]
- lsls r1, r5, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _0811FD58
- ldr r0, [r6]
- ldr r1, [r0, 0x10]
- ldr r3, [sp, 0x4C]
- asrs r0, r3, 16
- adds r0, 0x60
- strh r0, [r1, 0x22]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- ldr r0, =gUnknown_0859EEDC
- str r0, [r4, 0x8]
- ldr r0, =sub_811FF40
- str r0, [r4, 0x14]
- ldr r0, =gUnknown_0859EE84
- str r0, [r4, 0x4]
- movs r5, 0
- ldr r0, [sp, 0x48]
- movs r1, 0x80
- lsls r1, 14
- adds r0, r1
- mov r9, r0
-_0811FDC8:
- lsls r2, r5, 4
- adds r2, 0x10
- ldr r3, [sp, 0x4C]
- asrs r3, 16
- mov r8, r3
- add r2, r8
- lsls r2, 16
- asrs r2, 16
- adds r0, r4, 0
- mov r3, r9
- asrs r1, r3, 16
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- bne _0811FDEE
- b _0811FF0C
-_0811FDEE:
- ldr r6, =gUnknown_0203A124
- ldr r1, [r6]
- lsls r0, r5, 2
- adds r1, 0x14
- adds r1, r0
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r7, =gSprites
- adds r0, r7
- str r0, [r1]
- strh r5, [r0, 0x2E]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _0811FDC8
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x14]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _0811FEA8
- ldr r0, [r6]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- adds r1, r7
- str r1, [r0, 0x28]
- ldrb r3, [r1, 0x1]
- movs r2, 0x3F
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1, 0x1]
- ldr r0, [r6]
- ldr r1, [r0, 0x28]
- ldrb r0, [r1, 0x3]
- ands r2, r0
- movs r0, 0x80
- orrs r2, r0
- strb r2, [r1, 0x3]
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- movs r1, 0x9
- bl StartSpriteAnim
- ldr r1, [r6]
- ldr r2, [r1, 0x28]
- ldr r3, [sp, 0x48]
- asrs r0, r3, 16
- adds r0, 0x20
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x28]
- mov r0, r8
- adds r0, 0x50
- strh r0, [r2, 0x22]
- ldr r0, [r1, 0x28]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0
- bl CalcCenterToCornerVec
- b _0811FEAE
- .pool
-_0811FEA8:
- ldr r1, [r6]
- movs r0, 0
- str r0, [r1, 0x28]
-_0811FEAE:
- ldr r0, =sub_811FF7C
- str r0, [r4, 0x14]
- ldr r0, [sp, 0x48]
- movs r2, 0xC0
- lsls r2, 12
- adds r1, r0, r2
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _0811FF20
- ldr r0, =gUnknown_0203A124
- ldr r2, [r0]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- str r1, [r2, 0x24]
- ldr r3, [sp, 0x4C]
- asrs r0, r3, 16
- adds r0, 0x10
- strh r0, [r1, 0x2E]
- ldr r0, [r2, 0x24]
- movs r1, 0x8
- bl StartSpriteAnim
- b _0811FF28
- .pool
-_0811FEFC:
- ldr r0, =gUnknown_0203A124
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0xC
- b _0811FF14
- .pool
-_0811FF0C:
- ldr r0, =gUnknown_0203A124
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0x14
-_0811FF14:
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _0811FF28
- .pool
-_0811FF20:
- ldr r0, =gUnknown_0203A124
- ldr r1, [r0]
- movs r0, 0
- str r0, [r1, 0x24]
-_0811FF28:
- add sp, 0x50
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811FC80
-
- thumb_func_start TaskDummy7
-TaskDummy7: @ 811FF3C
- bx lr
- thumb_func_end TaskDummy7
-
- thumb_func_start sub_811FF40
-sub_811FF40: @ 811FF40
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A124
- ldr r0, [r0]
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- adds r0, 0x6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811FF6C
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- b _0811FF76
- .pool
-_0811FF6C:
- lsls r1, 25
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
-_0811FF76:
- pop {r0}
- bx r0
- thumb_func_end sub_811FF40
-
- thumb_func_start sub_811FF7C
-sub_811FF7C: @ 811FF7C
- ldr r1, =gUnknown_0203A124
- ldr r1, [r1]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 4
- ldrh r2, [r0, 0x2E]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .pool
- thumb_func_end sub_811FF7C
-
- thumb_func_start sub_811FF94
-sub_811FF94: @ 811FF94
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- bne _0811FFA4
- ldr r2, =gUnknown_0859E65C
-_0811FFA4:
- movs r3, 0x10
- bl sub_811FFD4
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811FF94
-
- thumb_func_start sub_811FFB4
-sub_811FFB4: @ 811FFB4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- bne _0811FFC4
- ldr r2, =gUnknown_0859E65C
-_0811FFC4:
- movs r3, 0x1
- bl sub_811FFD4
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811FFB4
-
- thumb_func_start sub_811FFD4
-sub_811FFD4: @ 811FFD4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r4, =gUnknown_0859E67C
- str r4, [sp, 0x18]
- movs r4, 0x80
- add r5, sp, 0x18
- lsrs r6, r0, 16
- orrs r0, r4
- str r0, [r5, 0x4]
- str r2, [sp, 0x20]
- ldr r0, =0xffff0000
- mov r8, r0
- add r4, sp, 0x20
- ldr r0, [r4, 0x4]
- mov r2, r8
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- movs r2, 0
- strh r6, [r0]
- strh r1, [r0, 0x2]
- ldr r0, =gUnknown_0859EF1C
- str r0, [sp, 0x4]
- ldr r0, =gUnknown_0859EFA4
- str r0, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r0, =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, =TaskDummy7
- str r0, [sp, 0x14]
- lsls r3, 23
- lsrs r3, 16
- ldr r0, [r5, 0x4]
- mov r1, r8
- ands r0, r1
- orrs r0, r3
- str r0, [r5, 0x4]
- adds r0, r5, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _08120068
- movs r0, 0
- b _08120072
- .pool
-_08120068:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
-_08120072:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811FFD4
-
- thumb_func_start sub_8120084
-sub_8120084: @ 8120084
- push {lr}
- lsls r0, 24
- lsrs r0, 17
- ldr r2, =gUnknown_0859E67C
- adds r0, r2
- movs r2, 0x80
- movs r3, 0x10
- bl RequestDma3Copy
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8120084
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/mon_markings.s b/data/mon_markings.s
deleted file mode 100644
index 7d30c0012..000000000
--- a/data/mon_markings.s
+++ /dev/null
@@ -1,157 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0859E65C:: @ 859E65C
- .incbin "graphics/misc/mon_markings.gbapal"
-
-gUnknown_0859E67C:: @ 859E67C
- .incbin "graphics/misc/mon_markings.4bpp"
-
-gUnknown_0859EE7C:: @ 859EE7C
- .2byte 0, 0xC000, 0, 0
-
-gUnknown_0859EE84:: @ 859EE84
- .2byte 0, 0, 0, 0
-
-gUnknown_0859EE8C:: @ 859EE8C
- .2byte 0, 5, -1, 0
-
-gUnknown_0859EE94:: @ 859EE94
- .2byte 1, 5, -1, 0
-
-gUnknown_0859EE9C:: @ 859EE9C
- .2byte 2, 5, -1, 0
-
-gUnknown_0859EEA4:: @ 859EEA4
- .2byte 3, 5, -1, 0
-
-gUnknown_0859EEAC:: @ 859EEAC
- .2byte 4, 5, -1, 0
-
-gUnknown_0859EEB4:: @ 859EEB4
- .2byte 5, 5, -1, 0
-
-gUnknown_0859EEBC:: @ 859EEBC
- .2byte 6, 5, -1, 0
-
-gUnknown_0859EEC4:: @ 859EEC4
- .2byte 7, 5, -1, 0
-
-gUnknown_0859EECC:: @ 859EECC
- .2byte 8, 5, -1, 0
-
-gUnknown_0859EED4:: @ 859EED4
- .2byte 9, 5, -1, 0
-
-gUnknown_0859EEDC:: @ 859EEDC
- .4byte gUnknown_0859EE8C
- .4byte gUnknown_0859EE94
- .4byte gUnknown_0859EE9C
- .4byte gUnknown_0859EEA4
- .4byte gUnknown_0859EEAC
- .4byte gUnknown_0859EEB4
- .4byte gUnknown_0859EEBC
- .4byte gUnknown_0859EEC4
- .4byte gUnknown_0859EECC
- .4byte gUnknown_0859EED4
-
-gUnknown_0859EF04:: @ 859EF04
- .2byte 0, 5, -1, 0
-
-gUnknown_0859EF0C:: @ 859EF0C
- .2byte 64, 5, -1, 0
-
-gUnknown_0859EF14:: @ 859EF14
- .4byte gUnknown_0859EF04
- .4byte gUnknown_0859EF0C
-
-gUnknown_0859EF1C:: @ 859EF1C
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0
- .2byte 0
-
-gUnknown_0859EF24:: @ 859EF24
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
-gUnknown_0859EF2C:: @ 859EF2C
- obj_image_anim_frame 4, 5
- obj_image_anim_end
-
-gUnknown_0859EF34:: @ 859EF34
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
-gUnknown_0859EF3C:: @ 859EF3C
- obj_image_anim_frame 12, 5
- obj_image_anim_end
-
-gUnknown_0859EF44:: @ 859EF44
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
-gUnknown_0859EF4C:: @ 859EF4C
- obj_image_anim_frame 20, 5
- obj_image_anim_end
-
-gUnknown_0859EF54:: @ 859EF54
- obj_image_anim_frame 24, 5
- obj_image_anim_end
-
-gUnknown_0859EF5C:: @ 859EF5C
- obj_image_anim_frame 28, 5
- obj_image_anim_end
-
-gUnknown_0859EF64:: @ 859EF64
- obj_image_anim_frame 32, 5
- obj_image_anim_end
-
-gUnknown_0859EF6C:: @ 859EF6C
- obj_image_anim_frame 36, 5
- obj_image_anim_end
-
-gUnknown_0859EF74:: @ 859EF74
- obj_image_anim_frame 40, 5
- obj_image_anim_end
-
-gUnknown_0859EF7C:: @ 859EF7C
- obj_image_anim_frame 44, 5
- obj_image_anim_end
-
-gUnknown_0859EF84:: @ 859EF84
- obj_image_anim_frame 48, 5
- obj_image_anim_end
-
-gUnknown_0859EF8C:: @ 859EF8C
- obj_image_anim_frame 52, 5
- obj_image_anim_end
-
-gUnknown_0859EF94:: @ 859EF94
- obj_image_anim_frame 56, 5
- obj_image_anim_end
-
-gUnknown_0859EF9C:: @ 859EF9C
- obj_image_anim_frame 60, 5
- obj_image_anim_end
-
-gUnknown_0859EFA4:: @ 859EFA4
- .4byte gUnknown_0859EF24
- .4byte gUnknown_0859EF2C
- .4byte gUnknown_0859EF34
- .4byte gUnknown_0859EF3C
- .4byte gUnknown_0859EF44
- .4byte gUnknown_0859EF4C
- .4byte gUnknown_0859EF54
- .4byte gUnknown_0859EF5C
- .4byte gUnknown_0859EF64
- .4byte gUnknown_0859EF6C
- .4byte gUnknown_0859EF74
- .4byte gUnknown_0859EF7C
- .4byte gUnknown_0859EF84
- .4byte gUnknown_0859EF8C
- .4byte gUnknown_0859EF94
- .4byte gUnknown_0859EF9C
diff --git a/include/graphics.h b/include/graphics.h
index 9afcb75ad..1313ddc3a 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2864,4 +2864,8 @@ extern const u8 gBerryPalette_Enigma[];
//credits
extern const u8 gCreditsCopyrightEnd_Gfx[];
+//pokenav condition marker
+extern const u8 gPokenavConditionMarker_Gfx[];
+extern const u16 gPokenavConditionMarker_Pal[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/mon_markings.h b/include/mon_markings.h
new file mode 100644
index 000000000..852e8b4eb
--- /dev/null
+++ b/include/mon_markings.h
@@ -0,0 +1,24 @@
+#ifndef POKEEMERALD_MON_MARKINGS_H
+#define POKEEMERALD_MON_MARKINGS_H
+
+struct PokemonMarkMenu
+{
+ /*0x0000*/ u16 baseTileTag;
+ /*0x0002*/ u16 basePaletteTag;
+ /*0x0004*/ u8 markings; // bit flags
+ /*0x0005*/ s8 cursorPos;
+ /*0x0006*/ bool8 markingsArray[4];
+ /*0x000A*/ u8 cursorBaseY;
+ /*0x000B*/ bool8 spriteSheetLoadRequired;
+ /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
+ /*0x0014*/ struct Sprite *menuMarkingSprites[4];
+ /*0x0024*/ struct Sprite *unkSprite;
+ /*0x0028*/ struct Sprite *menuTextSprite;
+ /*0x002C*/ const u8 *frameTiles;
+ /*0x0030*/ const u16 *framePalette;
+ /*0x0034*/ u8 menuWindowSpriteTiles[0x1000];
+ /*0x1034*/ u8 filler1030[0x80];
+ /*0x10B4*/ u8 tileLoadState;
+}; // 10b8
+
+#endif //POKEEMERALD_MON_MARKINGS_H
diff --git a/include/text_window.h b/include/text_window.h
index e6a753fcb..2ac13fab7 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -5,11 +5,11 @@
struct TilesPal
{
- const u32 *tiles;
+ const u8 *tiles;
const u16 *pal;
};
-extern const u32 gTextWindowFrame1_Gfx[];
+extern const u8 gTextWindowFrame1_Gfx[];
extern const u16 gTextWindowFrame1_Pal[];
const struct TilesPal* GetWindowFrameTilesPal(u8 id);
diff --git a/ld_script.txt b/ld_script.txt
index 7f3026980..056e83828 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -161,7 +161,7 @@ SECTIONS {
asm/battle_anim_80FE840.o(.text);
src/bike.o(.text);
asm/easy_chat.o(.text);
- asm/mon_markings.o(.text);
+ src/mon_markings.o(.text);
asm/mauville_old_man.o(.text);
src/mail.o(.text);
asm/menu_helpers.o(.text);
@@ -455,7 +455,7 @@ SECTIONS {
data/battle_anim_80FE840.o(.rodata);
src/bike.o(.rodata);
data/easy_chat.o(.rodata);
- data/mon_markings.o(.rodata);
+ src/mon_markings.o(.rodata);
data/mauville_old_man.o(.rodata);
src/mail.o(.rodata);
data/menu_helpers.o(.rodata);
diff --git a/src/mon_markings.c b/src/mon_markings.c
new file mode 100644
index 000000000..37be1b764
--- /dev/null
+++ b/src/mon_markings.c
@@ -0,0 +1,616 @@
+#include "global.h"
+#include "dma3.h"
+#include "graphics.h"
+#include "main.h"
+#include "menu_indicators.h"
+#include "mon_markings.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "text_window.h"
+
+
+#ifdef GERMAN
+#define MENU_TEXT_SPRITE_X_OFFSET 24
+#else
+#define MENU_TEXT_SPRITE_X_OFFSET 32
+#endif
+
+// static functions
+static void sub_811FC80(s16, s16, u16, u16);
+static void TaskDummy7(struct Sprite *);
+static void sub_811FF40(struct Sprite *);
+static void sub_811FF7C(struct Sprite *);
+static struct Sprite *sub_811FFD4(u16, u16, const u16 *, u16);
+
+// .rodata
+static const u16 gUnknown_0859E65C[] = INCBIN_U16("graphics/misc/mon_markings.gbapal");
+static const u8 gUnknown_0859E67C[] = INCBIN_U8("graphics/misc/mon_markings.4bpp");
+
+static const struct OamData gUnknown_0859EE7C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData gUnknown_0859EE84 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gUnknown_0859EE8C[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EE94[] =
+{
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EE9C[] =
+{
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EEA4[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EEAC[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EEB4[] =
+{
+ ANIMCMD_FRAME(5, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EEBC[] =
+{
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EEC4[] =
+{
+ ANIMCMD_FRAME(7, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EECC[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EED4[] =
+{
+ ANIMCMD_FRAME(9, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_0859EEDC[] =
+{
+ gUnknown_0859EE8C,
+ gUnknown_0859EE94,
+ gUnknown_0859EE9C,
+ gUnknown_0859EEA4,
+ gUnknown_0859EEAC,
+ gUnknown_0859EEB4,
+ gUnknown_0859EEBC,
+ gUnknown_0859EEC4,
+ gUnknown_0859EECC,
+ gUnknown_0859EED4,
+};
+
+static const union AnimCmd gUnknown_0859EF04[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF0C[] =
+{
+ ANIMCMD_FRAME(64, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_0859EF14[] =
+{
+ gUnknown_0859EF04,
+ gUnknown_0859EF0C,
+};
+
+static const struct OamData gUnknown_0859EF1C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd gUnknown_0859EF24[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF2C[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF34[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF3C[] =
+{
+ ANIMCMD_FRAME(12, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF44[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF4C[] =
+{
+ ANIMCMD_FRAME(20, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF54[] =
+{
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF5C[] =
+{
+ ANIMCMD_FRAME(28, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF64[] =
+{
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF6C[] =
+{
+ ANIMCMD_FRAME(36, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF74[] =
+{
+ ANIMCMD_FRAME(40, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF7C[] =
+{
+ ANIMCMD_FRAME(44, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF84[] =
+{
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF8C[] =
+{
+ ANIMCMD_FRAME(52, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF94[] =
+{
+ ANIMCMD_FRAME(56, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gUnknown_0859EF9C[] =
+{
+ ANIMCMD_FRAME(60, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gUnknown_0859EFA4[] =
+{
+ gUnknown_0859EF24,
+ gUnknown_0859EF2C,
+ gUnknown_0859EF34,
+ gUnknown_0859EF3C,
+ gUnknown_0859EF44,
+ gUnknown_0859EF4C,
+ gUnknown_0859EF54,
+ gUnknown_0859EF5C,
+ gUnknown_0859EF64,
+ gUnknown_0859EF6C,
+ gUnknown_0859EF74,
+ gUnknown_0859EF7C,
+ gUnknown_0859EF84,
+ gUnknown_0859EF8C,
+ gUnknown_0859EF94,
+ gUnknown_0859EF9C,
+};
+
+static EWRAM_DATA struct PokemonMarkMenu *sMenu = NULL;
+
+void sub_811F90C(struct PokemonMarkMenu *ptr)
+{
+ sMenu = ptr;
+}
+
+void sub_811F918(void)
+{
+ const struct TilesPal *frame = GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType);
+ sMenu->frameTiles = frame->tiles;
+ sMenu->framePalette = frame->pal;
+ sMenu->tileLoadState = 0;
+ CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles));
+}
+
+bool8 sub_811F960(void)
+{
+ u16 i;
+ u8 *dest = sMenu->menuWindowSpriteTiles + sMenu->tileLoadState * 0x100;
+
+ switch (sMenu->tileLoadState)
+ {
+ case 0:
+ CpuFastCopy(sMenu->frameTiles, dest, TILE_SIZE_4BPP);
+ for (i = 0; i < 6; i++)
+ {
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
+ }
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 2, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
+ sMenu->tileLoadState++;
+ break;
+ default:
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 3, dest, TILE_SIZE_4BPP);
+ for (i = 0; i < 6; i++)
+ {
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 4, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
+ }
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 5, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
+ sMenu->tileLoadState++;
+ break;
+ case 13:
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 6, dest, TILE_SIZE_4BPP);
+ for (i = 0; i < 6; i++)
+ {
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 7, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
+ }
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 8, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
+ sMenu->tileLoadState++;
+ return FALSE;
+ case 14:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_811FA90(void)
+{
+ sub_811F918();
+ while (sub_811F960());
+}
+
+void sub_811FAA4(u8 markings, s16 x, s16 y)
+{
+ u16 i;
+ sMenu->cursorPos = 0;
+ sMenu->markings = markings;
+ for (i = 0; i < 4; i++)
+ sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
+ sub_811FC80(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);
+}
+
+void sub_811FAF8(void)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ FreeSpriteTilesByTag(sMenu->baseTileTag + i);
+ FreeSpritePaletteByTag(sMenu->basePaletteTag + i);
+ }
+ for (i = 0; i < 2; i++)
+ {
+ if (!sMenu->menuWindowSprites[i])
+ return;
+ DestroySprite(sMenu->menuWindowSprites[i]);
+ sMenu->menuWindowSprites[i] = NULL;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (!sMenu->menuMarkingSprites[i])
+ return;
+ DestroySprite(sMenu->menuMarkingSprites[i]);
+ sMenu->menuMarkingSprites[i] = NULL;
+ }
+ if (sMenu->unkSprite)
+ {
+ DestroySprite(sMenu->unkSprite);
+ sMenu->unkSprite = NULL;
+ }
+ if (sMenu->menuTextSprite)
+ {
+ DestroySprite(sMenu->menuTextSprite);
+ sMenu->menuTextSprite = NULL;
+ }
+}
+
+
+bool8 sub_811FBA4(void)
+{
+ u16 i;
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ s8 pos;
+ PlaySE(SE_SELECT);
+ pos = --sMenu->cursorPos;
+ if (pos < 0)
+ sMenu->cursorPos = 5;
+ return TRUE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ s8 pos;
+ PlaySE(SE_SELECT);
+ pos = ++sMenu->cursorPos;
+ if (pos > 5)
+ sMenu->cursorPos = 0;
+ return TRUE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+
+ switch (sMenu->cursorPos)
+ {
+ case 4:
+ sMenu->markings = 0;
+ for (i = 0; i < 4; i++)
+ sMenu->markings |= sMenu->markingsArray[i] << i;
+ return FALSE;
+ case 5:
+ return FALSE;
+ }
+
+ sMenu->markingsArray[sMenu->cursorPos] = !sMenu->markingsArray[sMenu->cursorPos];
+ return TRUE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void sub_811FC80(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
+{
+ u16 i;
+ u8 spriteId;
+
+ struct SpriteSheet sheets[] =
+ {
+ { sMenu->menuWindowSpriteTiles, 0x1000, baseTileTag },
+ { gPokenavConditionMarker_Gfx, 0x320, baseTileTag + 1 },
+ { NULL, 0 }
+ };
+
+ struct SpritePalette palettes[] =
+ {
+ { sMenu->framePalette, basePaletteTag },
+ { gPokenavConditionMarker_Pal, basePaletteTag + 1},
+ { NULL, 0 }
+ };
+
+ struct SpriteTemplate sprTemplate =
+ {
+ baseTileTag,
+ basePaletteTag,
+ &gUnknown_0859EE7C,
+ gUnknown_0859EF14,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ TaskDummy7,
+ };
+
+ LoadSpriteSheets(sheets);
+ LoadSpritePalettes(palettes);
+
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 1);
+ if (spriteId != 64)
+ {
+ sMenu->menuWindowSprites[i] = &gSprites[spriteId];
+ StartSpriteAnim(&gSprites[spriteId], i);
+ }
+ else
+ {
+ sMenu->menuWindowSprites[i] = NULL;
+ return;
+ }
+ }
+
+ sMenu->menuWindowSprites[1]->pos1.y = y + 96;
+
+ sprTemplate.tileTag++;
+ sprTemplate.paletteTag++;
+ sprTemplate.anims = gUnknown_0859EEDC;
+ sprTemplate.callback = sub_811FF40;
+ sprTemplate.oam = &gUnknown_0859EE84;
+
+ for (i = 0; i < 4; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
+ if (spriteId != 64)
+ {
+ sMenu->menuMarkingSprites[i] = &gSprites[spriteId];
+ gSprites[spriteId].data[0] = i;
+ }
+ else
+ {
+ sMenu->menuMarkingSprites[i] = NULL;
+ return;
+ }
+ }
+
+ sprTemplate.callback = SpriteCallbackDummy;
+
+ spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
+
+ if (spriteId != 64)
+ {
+ sMenu->menuTextSprite = &gSprites[spriteId];
+ sMenu->menuTextSprite->oam.shape = ST_OAM_SQUARE;
+ sMenu->menuTextSprite->oam.size = 2;
+ StartSpriteAnim(sMenu->menuTextSprite, 9);
+ sMenu->menuTextSprite->pos1.x = x + MENU_TEXT_SPRITE_X_OFFSET;
+ sMenu->menuTextSprite->pos1.y = y + 80;
+ CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0);
+ }
+ else
+ {
+ sMenu->menuTextSprite = NULL;
+ }
+
+ sprTemplate.callback = sub_811FF7C;
+ spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0);
+ if(spriteId != 64)
+ {
+ sMenu->unkSprite = &gSprites[spriteId];
+ sMenu->unkSprite->data[0] = y + 16;
+ StartSpriteAnim(sMenu->unkSprite, 8);
+ }
+ else
+ {
+ sMenu->unkSprite = NULL;
+ }
+
+}
+
+static void TaskDummy7(struct Sprite *sprite)
+{
+}
+
+static void sub_811FF40(struct Sprite *sprite)
+{
+ if (sMenu->markingsArray[sprite->data[0]])
+ StartSpriteAnim(sprite, 2 * sprite->data[0] + 1);
+ else
+ StartSpriteAnim(sprite, 2 * sprite->data[0]);
+}
+
+static void sub_811FF7C(struct Sprite *sprite)
+{
+ sprite->pos1.y = (16 * sMenu->cursorPos) + sprite->data[0];
+}
+
+struct Sprite *sub_811FF94(u16 tileTag, u16 paletteTag, const u16 *palette)
+{
+ if (!palette)
+ palette = gUnknown_0859E65C;
+ return sub_811FFD4(tileTag, paletteTag, palette, 16);
+}
+
+struct Sprite *sub_811FFB4(u16 tileTag, u16 paletteTag, const u16 *palette)
+{
+ if (!palette)
+ palette = gUnknown_0859E65C;
+ return sub_811FFD4(tileTag, paletteTag, palette, 1);
+}
+
+static struct Sprite *sub_811FFD4(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size)
+{
+ u8 spriteId;
+ struct SpriteTemplate sprTemplate;
+ struct SpriteSheet sheet = { gUnknown_0859E67C, 0x80, tileTag };
+ struct SpritePalette sprPalette = { palette, paletteTag };
+
+ sprTemplate.tileTag = tileTag;
+ sprTemplate.paletteTag = paletteTag;
+ sprTemplate.oam = &gUnknown_0859EF1C;
+ sprTemplate.anims = gUnknown_0859EFA4;
+ sprTemplate.images = NULL;
+ sprTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sprTemplate.callback = TaskDummy7;
+
+ sheet.size = size * 0x80;
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&sprPalette);
+
+ spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
+ if (spriteId != 64)
+ return &gSprites[spriteId];
+ else
+ return NULL;
+}
+
+void sub_8120084(u8 markings, void *dest)
+{
+ RequestDma3Copy(gUnknown_0859E67C + markings * 0x80, dest, 0x80, 0x10);
+}
diff --git a/src/text_window.c b/src/text_window.c
index 33cd7cffe..c3b9f7197 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -7,26 +7,26 @@
#include "graphics.h"
// const rom data
-const u32 gTextWindowFrame1_Gfx[] = INCBIN_U32("graphics/text_window/1.4bpp");
-static const u32 sTextWindowFrame2_Gfx[] = INCBIN_U32("graphics/text_window/2.4bpp");
-static const u32 sTextWindowFrame3_Gfx[] = INCBIN_U32("graphics/text_window/3.4bpp");
-static const u32 sTextWindowFrame4_Gfx[] = INCBIN_U32("graphics/text_window/4.4bpp");
-static const u32 sTextWindowFrame5_Gfx[] = INCBIN_U32("graphics/text_window/5.4bpp");
-static const u32 sTextWindowFrame6_Gfx[] = INCBIN_U32("graphics/text_window/6.4bpp");
-static const u32 sTextWindowFrame7_Gfx[] = INCBIN_U32("graphics/text_window/7.4bpp");
-static const u32 sTextWindowFrame8_Gfx[] = INCBIN_U32("graphics/text_window/8.4bpp");
-static const u32 sTextWindowFrame9_Gfx[] = INCBIN_U32("graphics/text_window/9.4bpp");
-static const u32 sTextWindowFrame10_Gfx[] = INCBIN_U32("graphics/text_window/10.4bpp");
-static const u32 sTextWindowFrame11_Gfx[] = INCBIN_U32("graphics/text_window/11.4bpp");
-static const u32 sTextWindowFrame12_Gfx[] = INCBIN_U32("graphics/text_window/12.4bpp");
-static const u32 sTextWindowFrame13_Gfx[] = INCBIN_U32("graphics/text_window/13.4bpp");
-static const u32 sTextWindowFrame14_Gfx[] = INCBIN_U32("graphics/text_window/14.4bpp");
-static const u32 sTextWindowFrame15_Gfx[] = INCBIN_U32("graphics/text_window/15.4bpp");
-static const u32 sTextWindowFrame16_Gfx[] = INCBIN_U32("graphics/text_window/16.4bpp");
-static const u32 sTextWindowFrame17_Gfx[] = INCBIN_U32("graphics/text_window/17.4bpp");
-static const u32 sTextWindowFrame18_Gfx[] = INCBIN_U32("graphics/text_window/18.4bpp");
-static const u32 sTextWindowFrame19_Gfx[] = INCBIN_U32("graphics/text_window/19.4bpp");
-static const u32 sTextWindowFrame20_Gfx[] = INCBIN_U32("graphics/text_window/20.4bpp");
+const u8 gTextWindowFrame1_Gfx[] = INCBIN_U8("graphics/text_window/1.4bpp");
+static const u8 sTextWindowFrame2_Gfx[] = INCBIN_U8("graphics/text_window/2.4bpp");
+static const u8 sTextWindowFrame3_Gfx[] = INCBIN_U8("graphics/text_window/3.4bpp");
+static const u8 sTextWindowFrame4_Gfx[] = INCBIN_U8("graphics/text_window/4.4bpp");
+static const u8 sTextWindowFrame5_Gfx[] = INCBIN_U8("graphics/text_window/5.4bpp");
+static const u8 sTextWindowFrame6_Gfx[] = INCBIN_U8("graphics/text_window/6.4bpp");
+static const u8 sTextWindowFrame7_Gfx[] = INCBIN_U8("graphics/text_window/7.4bpp");
+static const u8 sTextWindowFrame8_Gfx[] = INCBIN_U8("graphics/text_window/8.4bpp");
+static const u8 sTextWindowFrame9_Gfx[] = INCBIN_U8("graphics/text_window/9.4bpp");
+static const u8 sTextWindowFrame10_Gfx[] = INCBIN_U8("graphics/text_window/10.4bpp");
+static const u8 sTextWindowFrame11_Gfx[] = INCBIN_U8("graphics/text_window/11.4bpp");
+static const u8 sTextWindowFrame12_Gfx[] = INCBIN_U8("graphics/text_window/12.4bpp");
+static const u8 sTextWindowFrame13_Gfx[] = INCBIN_U8("graphics/text_window/13.4bpp");
+static const u8 sTextWindowFrame14_Gfx[] = INCBIN_U8("graphics/text_window/14.4bpp");
+static const u8 sTextWindowFrame15_Gfx[] = INCBIN_U8("graphics/text_window/15.4bpp");
+static const u8 sTextWindowFrame16_Gfx[] = INCBIN_U8("graphics/text_window/16.4bpp");
+static const u8 sTextWindowFrame17_Gfx[] = INCBIN_U8("graphics/text_window/17.4bpp");
+static const u8 sTextWindowFrame18_Gfx[] = INCBIN_U8("graphics/text_window/18.4bpp");
+static const u8 sTextWindowFrame19_Gfx[] = INCBIN_U8("graphics/text_window/19.4bpp");
+static const u8 sTextWindowFrame20_Gfx[] = INCBIN_U8("graphics/text_window/20.4bpp");
const u16 gTextWindowFrame1_Pal[] = INCBIN_U16("graphics/text_window/1.gbapal");
static const u16 sTextWindowFrame2_Pal[] = INCBIN_U16("graphics/text_window/2.gbapal");
diff --git a/sym_ewram.txt b/sym_ewram.txt
index b7f3ebdf3..f84c5c1be 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -556,9 +556,7 @@ gUnknown_0203A11C: @ 203A11C
gUnknown_0203A120: @ 203A120
.space 0x4
-
-gUnknown_0203A124: @ 203A124
- .space 0x4
+ .include "src/mon_markings.o"
gUnknown_0203A128: @ 203A128
.space 0x4