summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mon_markings.s990
-rw-r--r--data/graphics.s4
-rw-r--r--data/mon_markings.s171
-rw-r--r--graphics/misc/markings2.pngbin0 -> 362 bytes
-rw-r--r--graphics_file_rules.mk3
-rw-r--r--include/graphics.h4
-rw-r--r--include/mon_markings.h24
-rw-r--r--ld_script.txt4
-rw-r--r--src/mon_markings.c513
-rw-r--r--sym_ewram.txt2
10 files changed, 549 insertions, 1166 deletions
diff --git a/asm/mon_markings.s b/asm/mon_markings.s
deleted file mode 100644
index a0dad2280..000000000
--- a/asm/mon_markings.s
+++ /dev/null
@@ -1,990 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80BE46C
-sub_80BE46C: @ 80BE46C
- ldr r1, _080BE474 @ =gUnknown_20399C0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080BE474: .4byte gUnknown_20399C0
- thumb_func_end sub_80BE46C
-
- thumb_func_start sub_80BE478
-sub_80BE478: @ 80BE478
- push {lr}
- sub sp, 0x4
- ldr r0, _080BE4B0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- lsrs r0, 3
- bl GetUserFrameGraphicsInfo
- ldr r3, _080BE4B4 @ =gUnknown_20399C0
- ldr r2, [r3]
- ldr r1, [r0]
- str r1, [r2, 0x2C]
- ldr r0, [r0, 0x4]
- str r0, [r2, 0x30]
- ldr r0, _080BE4B8 @ =0x000010b4
- adds r2, r0
- movs r1, 0
- strb r1, [r2]
- mov r0, sp
- strh r1, [r0]
- ldr r1, [r3]
- adds r1, 0x34
- ldr r2, _080BE4BC @ =0x01000800
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080BE4B0: .4byte gSaveBlock2Ptr
-_080BE4B4: .4byte gUnknown_20399C0
-_080BE4B8: .4byte 0x000010b4
-_080BE4BC: .4byte 0x01000800
- thumb_func_end sub_80BE478
-
- thumb_func_start sub_80BE4C0
-sub_80BE4C0: @ 80BE4C0
- push {r4-r7,lr}
- ldr r0, _080BE4E0 @ =gUnknown_20399C0
- ldr r1, [r0]
- ldr r2, _080BE4E4 @ =0x000010b4
- adds r0, r1, r2
- ldrb r2, [r0]
- lsls r0, r2, 8
- adds r0, 0x34
- adds r5, r1, r0
- cmp r2, 0xD
- beq _080BE590
- cmp r2, 0xD
- bgt _080BE4E8
- cmp r2, 0
- beq _080BE4EE
- b _080BE538
- .align 2, 0
-_080BE4E0: .4byte gUnknown_20399C0
-_080BE4E4: .4byte 0x000010b4
-_080BE4E8:
- cmp r2, 0xE
- beq _080BE5DC
- b _080BE538
-_080BE4EE:
- ldr r0, [r1, 0x2C]
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_080BE4FE:
- ldr r6, _080BE530 @ =gUnknown_20399C0
- 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 _080BE4FE
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0x40
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r0, _080BE534 @ =0x000010b4
- adds r1, r0
- b _080BE57E
- .align 2, 0
-_080BE530: .4byte gUnknown_20399C0
-_080BE534: .4byte 0x000010b4
-_080BE538:
- ldr r0, _080BE588 @ =gUnknown_20399C0
- 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
-_080BE54E:
- ldr r6, _080BE588 @ =gUnknown_20399C0
- 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 _080BE54E
- ldr r0, [r6]
- ldr r0, [r0, 0x2C]
- adds r0, 0xA0
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r2, _080BE58C @ =0x000010b4
- adds r1, r2
-_080BE57E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080BE5E8
- .align 2, 0
-_080BE588: .4byte gUnknown_20399C0
-_080BE58C: .4byte 0x000010b4
-_080BE590:
- 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
-_080BE5A2:
- ldr r6, _080BE5E0 @ =gUnknown_20399C0
- 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 _080BE5A2
- 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, _080BE5E4 @ =0x000010b4
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080BE5DC:
- movs r0, 0
- b _080BE5EA
- .align 2, 0
-_080BE5E0: .4byte gUnknown_20399C0
-_080BE5E4: .4byte 0x000010b4
-_080BE5E8:
- movs r0, 0x1
-_080BE5EA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80BE4C0
-
- thumb_func_start sub_80BE5F0
-sub_80BE5F0: @ 80BE5F0
- push {lr}
- bl sub_80BE478
-_080BE5F6:
- bl sub_80BE4C0
- lsls r0, 24
- cmp r0, 0
- bne _080BE5F6
- pop {r0}
- bx r0
- thumb_func_end sub_80BE5F0
-
- thumb_func_start sub_80BE604
-sub_80BE604: @ 80BE604
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r2, _080BE654 @ =gUnknown_20399C0
- 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
-_080BE622:
- 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 _080BE622
- 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_80BE7CC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE654: .4byte gUnknown_20399C0
- thumb_func_end sub_80BE604
-
- thumb_func_start sub_80BE658
-sub_80BE658: @ 80BE658
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080BE6EC @ =gUnknown_20399C0
-_080BE65E:
- ldr r0, [r5]
- ldrh r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpriteTilesByTag
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _080BE65E
- ldr r4, _080BE6EC @ =gUnknown_20399C0
- ldr r0, [r4]
- ldrh r0, [r0, 0x2]
- bl FreeSpritePaletteByTag
- ldr r0, [r4]
- ldrh r0, [r0, 0x2]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- movs r4, 0
-_080BE690:
- ldr r0, _080BE6EC @ =gUnknown_20399C0
- ldr r0, [r0]
- lsls r1, r4, 2
- adds r0, 0xC
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _080BE6E6
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080BE690
- movs r4, 0
-_080BE6B0:
- ldr r5, _080BE6EC @ =gUnknown_20399C0
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, 0x14
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _080BE6E6
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080BE6B0
- ldr r0, [r5]
- ldr r0, [r0, 0x24]
- cmp r0, 0
- beq _080BE6DA
- bl DestroySprite
-_080BE6DA:
- ldr r0, [r5]
- ldr r0, [r0, 0x28]
- cmp r0, 0
- beq _080BE6E6
- bl DestroySprite
-_080BE6E6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE6EC: .4byte gUnknown_20399C0
- thumb_func_end sub_80BE658
-
- thumb_func_start sub_80BE6F0
-sub_80BE6F0: @ 80BE6F0
- push {r4,r5,lr}
- ldr r0, _080BE720 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _080BE728
- movs r0, 0x5
- bl PlaySE
- ldr r2, _080BE724 @ =gUnknown_20399C0
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- cmp r0, 0
- bge _080BE7B0
- ldr r1, [r2]
- movs r0, 0x5
- strb r0, [r1, 0x5]
- b _080BE7B0
- .align 2, 0
-_080BE720: .4byte gMain
-_080BE724: .4byte gUnknown_20399C0
-_080BE728:
- movs r0, 0x80
- ands r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _080BE758
- movs r0, 0x5
- bl PlaySE
- ldr r2, _080BE754 @ =gUnknown_20399C0
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x5
- ble _080BE7B0
- ldr r0, [r2]
- strb r5, [r0, 0x5]
- b _080BE7B0
- .align 2, 0
-_080BE754: .4byte gUnknown_20399C0
-_080BE758:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080BE7B4
- movs r0, 0x5
- bl PlaySE
- ldr r2, _080BE788 @ =gUnknown_20399C0
- ldr r0, [r2]
- movs r1, 0x5
- ldrsb r1, [r0, r1]
- cmp r1, 0x4
- beq _080BE78C
- cmp r1, 0x5
- beq _080BE7C2
- adds r0, 0x6
- adds r1, r0, r1
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080BE7AE
- movs r2, 0x1
- b _080BE7AE
- .align 2, 0
-_080BE788: .4byte gUnknown_20399C0
-_080BE78C:
- strb r4, [r0, 0x4]
- movs r3, 0
- adds r4, r2, 0
-_080BE792:
- 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 _080BE792
- b _080BE7C2
-_080BE7AE:
- strb r2, [r1]
-_080BE7B0:
- movs r0, 0x1
- b _080BE7C4
-_080BE7B4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BE7B0
- movs r0, 0x5
- bl PlaySE
-_080BE7C2:
- movs r0, 0
-_080BE7C4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BE6F0
-
- thumb_func_start sub_80BE7CC
-sub_80BE7CC: @ 80BE7CC
- 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, _080BE9C4 @ =gUnknown_20399C0
- 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, _080BE9C8 @ =gUnknown_8E9CBBC
- 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, _080BE9CC @ =gUnknown_8E9CB9C
- 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, _080BE9D0 @ =gUnknown_83EE830
- str r0, [r4, 0x4]
- ldr r0, _080BE9D4 @ =gUnknown_83EE8C8
- str r0, [r4, 0x8]
- str r7, [r4, 0xC]
- ldr r0, _080BE9D8 @ =gDummySpriteAffineAnimTable
- str r0, [r4, 0x10]
- ldr r0, _080BE9DC @ =nullsub_62
- 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]
-_080BE8A4:
- 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 _080BE8BC
- b _080BEA48
-_080BE8BC:
- ldr r6, _080BE9C4 @ =gUnknown_20399C0
- 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, _080BE9E0 @ =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 _080BE8A4
- 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, _080BE9E4 @ =gUnknown_83EE890
- str r0, [r4, 0x8]
- ldr r0, _080BE9E8 @ =sub_80BEA8C
- str r0, [r4, 0x14]
- ldr r0, _080BE9EC @ =gUnknown_83EE838
- str r0, [r4, 0x4]
- movs r5, 0
- ldr r0, [sp, 0x48]
- movs r1, 0x80
- lsls r1, 14
- adds r0, r1
- mov r9, r0
-_080BE914:
- 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 _080BE93A
- b _080BEA58
-_080BE93A:
- ldr r6, _080BE9C4 @ =gUnknown_20399C0
- 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, _080BE9E0 @ =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 _080BE914
- ldr r0, _080BE9F0 @ =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 _080BE9F4
- 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 _080BE9FA
- .align 2, 0
-_080BE9C4: .4byte gUnknown_20399C0
-_080BE9C8: .4byte gUnknown_8E9CBBC
-_080BE9CC: .4byte gUnknown_8E9CB9C
-_080BE9D0: .4byte gUnknown_83EE830
-_080BE9D4: .4byte gUnknown_83EE8C8
-_080BE9D8: .4byte gDummySpriteAffineAnimTable
-_080BE9DC: .4byte nullsub_62
-_080BE9E0: .4byte gSprites
-_080BE9E4: .4byte gUnknown_83EE890
-_080BE9E8: .4byte sub_80BEA8C
-_080BE9EC: .4byte gUnknown_83EE838
-_080BE9F0: .4byte SpriteCallbackDummy
-_080BE9F4:
- ldr r1, [r6]
- movs r0, 0
- str r0, [r1, 0x28]
-_080BE9FA:
- ldr r0, _080BEA3C @ =sub_80BEAC8
- 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 _080BEA6C
- ldr r0, _080BEA40 @ =gUnknown_20399C0
- ldr r2, [r0]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- ldr r0, _080BEA44 @ =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 _080BEA74
- .align 2, 0
-_080BEA3C: .4byte sub_80BEAC8
-_080BEA40: .4byte gUnknown_20399C0
-_080BEA44: .4byte gSprites
-_080BEA48:
- ldr r0, _080BEA54 @ =gUnknown_20399C0
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0xC
- b _080BEA60
- .align 2, 0
-_080BEA54: .4byte gUnknown_20399C0
-_080BEA58:
- ldr r0, _080BEA68 @ =gUnknown_20399C0
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0x14
-_080BEA60:
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _080BEA74
- .align 2, 0
-_080BEA68: .4byte gUnknown_20399C0
-_080BEA6C:
- ldr r0, _080BEA84 @ =gUnknown_20399C0
- ldr r1, [r0]
- movs r0, 0
- str r0, [r1, 0x24]
-_080BEA74:
- add sp, 0x50
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEA84: .4byte gUnknown_20399C0
- thumb_func_end sub_80BE7CC
-
- thumb_func_start nullsub_62
-nullsub_62: @ 80BEA88
- bx lr
- thumb_func_end nullsub_62
-
- thumb_func_start sub_80BEA8C
-sub_80BEA8C: @ 80BEA8C
- push {lr}
- adds r2, r0, 0
- ldr r0, _080BEAB4 @ =gUnknown_20399C0
- ldr r0, [r0]
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- adds r0, 0x6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BEAB8
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- b _080BEAC2
- .align 2, 0
-_080BEAB4: .4byte gUnknown_20399C0
-_080BEAB8:
- lsls r1, 25
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
-_080BEAC2:
- pop {r0}
- bx r0
- thumb_func_end sub_80BEA8C
-
- thumb_func_start sub_80BEAC8
-sub_80BEAC8: @ 80BEAC8
- ldr r1, _080BEADC @ =gUnknown_20399C0
- 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
- .align 2, 0
-_080BEADC: .4byte gUnknown_20399C0
- thumb_func_end sub_80BEAC8
-
- thumb_func_start sub_80BEAE0
-sub_80BEAE0: @ 80BEAE0
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- bne _080BEAF0
- ldr r2, _080BEAFC @ =gUnknown_83EE008
-_080BEAF0:
- movs r3, 0x10
- bl sub_80BEB20
- pop {r1}
- bx r1
- .align 2, 0
-_080BEAFC: .4byte gUnknown_83EE008
- thumb_func_end sub_80BEAE0
-
- thumb_func_start sub_80BEB00
-sub_80BEB00: @ 80BEB00
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- bne _080BEB10
- ldr r2, _080BEB1C @ =gUnknown_83EE008
-_080BEB10:
- movs r3, 0x1
- bl sub_80BEB20
- pop {r1}
- bx r1
- .align 2, 0
-_080BEB1C: .4byte gUnknown_83EE008
- thumb_func_end sub_80BEB00
-
- thumb_func_start sub_80BEB20
-sub_80BEB20: @ 80BEB20
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _080BEB9C @ =gUnknown_83EE028
- 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, _080BEBA0 @ =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, _080BEBA4 @ =gUnknown_83EE8D0
- str r0, [sp, 0x4]
- ldr r0, _080BEBA8 @ =gUnknown_83EE958
- str r0, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r0, _080BEBAC @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _080BEBB0 @ =nullsub_62
- 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 _080BEBB4
- movs r0, 0
- b _080BEBBE
- .align 2, 0
-_080BEB9C: .4byte gUnknown_83EE028
-_080BEBA0: .4byte 0xffff0000
-_080BEBA4: .4byte gUnknown_83EE8D0
-_080BEBA8: .4byte gUnknown_83EE958
-_080BEBAC: .4byte gDummySpriteAffineAnimTable
-_080BEBB0: .4byte nullsub_62
-_080BEBB4:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BEBCC @ =gSprites
- adds r0, r1
-_080BEBBE:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080BEBCC: .4byte gSprites
- thumb_func_end sub_80BEB20
-
- thumb_func_start sub_80BEBD0
-sub_80BEBD0: @ 80BEBD0
- push {lr}
- lsls r0, 24
- lsrs r0, 17
- ldr r2, _080BEBE8 @ =gUnknown_83EE028
- adds r0, r2
- movs r2, 0x80
- movs r3, 0x1
- bl RequestDma3Copy
- pop {r0}
- bx r0
- .align 2, 0
-_080BEBE8: .4byte gUnknown_83EE028
- thumb_func_end sub_80BEBD0
-
- .section ewram_data
- .align 2, 0
-gUnknown_20399C0:
- .4byte 0
-
- .text
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/graphics.s b/data/graphics.s
index 67e88a6cd..7ead75c74 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16209,10 +16209,10 @@ gUnknown_8E9CAEC:: @ 8E9CAEC
.incbin "baserom.gba", 0xE9CAEC, 0xB0
gUnknown_8E9CB9C:: @ 8E9CB9C
- .incbin "baserom.gba", 0xE9CB9C, 0x20 @UNKNOWN
+ .incbin "graphics/misc/markings2.gbapal"
gUnknown_8E9CBBC:: @ 8E9CBBC
- .incbin "baserom.gba", 0xE9CBBC, 0x320 @UNKNOWN
+ .incbin "graphics/misc/markings2.4bpp"
gTradeMenu_Pal:: @ 8E9CEDC
.incbin "graphics/trade/menu.gbapal"
diff --git a/data/mon_markings.s b/data/mon_markings.s
deleted file mode 100644
index d2e211f95..000000000
--- a/data/mon_markings.s
+++ /dev/null
@@ -1,171 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnknown_83EE008:: @ 83EE008 gbapal
- .incbin "graphics/misc/mon_markings.gbapal"
-
-gUnknown_83EE028:: @ 83EE028 4bpp
- .incbin "graphics/misc/mon_markings.4bpp"
-
-gUnknown_83EE828:: @ 83EE828
- .4byte 0x02135009, 0x000000ff
-
-gUnknown_83EE830:: @ 83EE830 oamdata
- .4byte 0xc0000000, 0x00000000
-
-gUnknown_83EE838:: @ 83EE838 oamdata
- .4byte 0x00000000, 0x00000000
-
-gAnimCmd_83EE840::
- obj_image_anim_frame 0x0, 5
- obj_image_anim_end
-
-gAnimCmd_83EE848::
- obj_image_anim_frame 0x1, 5
- obj_image_anim_end
-
-gAnimCmd_83EE850::
- obj_image_anim_frame 0x2, 5
- obj_image_anim_end
-
-gAnimCmd_83EE858::
- obj_image_anim_frame 0x3, 5
- obj_image_anim_end
-
-gAnimCmd_83EE860::
- obj_image_anim_frame 0x4, 5
- obj_image_anim_end
-
-gAnimCmd_83EE868::
- obj_image_anim_frame 0x5, 5
- obj_image_anim_end
-
-gAnimCmd_83EE870::
- obj_image_anim_frame 0x6, 5
- obj_image_anim_end
-
-gAnimCmd_83EE878::
- obj_image_anim_frame 0x7, 5
- obj_image_anim_end
-
-gAnimCmd_83EE880::
- obj_image_anim_frame 0x8, 5
- obj_image_anim_end
-
-gAnimCmd_83EE888::
- obj_image_anim_frame 0x9, 5
- obj_image_anim_end
-
-gUnknown_83EE890:: @ 83EE890 animcmd
- .4byte gAnimCmd_83EE840
- .4byte gAnimCmd_83EE848
- .4byte gAnimCmd_83EE850
- .4byte gAnimCmd_83EE858
- .4byte gAnimCmd_83EE860
- .4byte gAnimCmd_83EE868
- .4byte gAnimCmd_83EE870
- .4byte gAnimCmd_83EE878
- .4byte gAnimCmd_83EE880
- .4byte gAnimCmd_83EE888
-
-gAnimCmd_83EE8B8::
- obj_image_anim_frame 0x0, 5
- obj_image_anim_end
-
-gAnimCmd_83EE8C0::
- obj_image_anim_frame 0x40, 5
- obj_image_anim_end
-
-gUnknown_83EE8C8:: @ 83EE8C8 animcmd
- .4byte gAnimCmd_83EE8B8
- .4byte gAnimCmd_83EE8C0
-
-gUnknown_83EE8D0:: @ 83EE8D0 oamdata
- .4byte 0x40004000, 0x00000000
-
-gAnimCmd_83EE8D8::
- obj_image_anim_frame 0x0, 5
- obj_image_anim_end
-
-gAnimCmd_83EE8E0::
- obj_image_anim_frame 0x4, 5
- obj_image_anim_end
-
-gAnimCmd_83EE8E8::
- obj_image_anim_frame 0x8, 5
- obj_image_anim_end
-
-gAnimCmd_83EE8F0::
- obj_image_anim_frame 0xc, 5
- obj_image_anim_end
-
-gAnimCmd_83EE8F8::
- obj_image_anim_frame 0x10, 5
- obj_image_anim_end
-
-gAnimCmd_83EE900::
- obj_image_anim_frame 0x14, 5
- obj_image_anim_end
-
-gAnimCmd_83EE908::
- obj_image_anim_frame 0x18, 5
- obj_image_anim_end
-
-gAnimCmd_83EE910::
- obj_image_anim_frame 0x1c, 5
- obj_image_anim_end
-
-gAnimCmd_83EE918::
- obj_image_anim_frame 0x20, 5
- obj_image_anim_end
-
-gAnimCmd_83EE920::
- obj_image_anim_frame 0x24, 5
- obj_image_anim_end
-
-gAnimCmd_83EE928::
- obj_image_anim_frame 0x28, 5
- obj_image_anim_end
-
-gAnimCmd_83EE930::
- obj_image_anim_frame 0x2c, 5
- obj_image_anim_end
-
-gAnimCmd_83EE938::
- obj_image_anim_frame 0x30, 5
- obj_image_anim_end
-
-gAnimCmd_83EE940::
- obj_image_anim_frame 0x34, 5
- obj_image_anim_end
-
-gAnimCmd_83EE948::
- obj_image_anim_frame 0x38, 5
- obj_image_anim_end
-
-gAnimCmd_83EE950::
- obj_image_anim_frame 0x3c, 5
- obj_image_anim_end
-
-gUnknown_83EE958:: @ 83EE958 animcmd
- .4byte gAnimCmd_83EE8D8
- .4byte gAnimCmd_83EE8E0
- .4byte gAnimCmd_83EE8E8
- .4byte gAnimCmd_83EE8F0
- .4byte gAnimCmd_83EE8F8
- .4byte gAnimCmd_83EE900
- .4byte gAnimCmd_83EE908
- .4byte gAnimCmd_83EE910
- .4byte gAnimCmd_83EE918
- .4byte gAnimCmd_83EE920
- .4byte gAnimCmd_83EE928
- .4byte gAnimCmd_83EE930
- .4byte gAnimCmd_83EE938
- .4byte gAnimCmd_83EE940
- .4byte gAnimCmd_83EE948
- .4byte gAnimCmd_83EE950
diff --git a/graphics/misc/markings2.png b/graphics/misc/markings2.png
new file mode 100644
index 000000000..0b62c124e
--- /dev/null
+++ b/graphics/misc/markings2.png
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 26c525272..f99dd148d 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -102,6 +102,9 @@ graphics/pokenav/region_map.8bpp: %.8bpp: %.png
$(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 29
+$(MISCGFXDIR)/markings2.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 25
+
$(INTERFACEGFXDIR)/menu.gbapal: $(INTERFACEGFXDIR)/menu_0.gbapal \
$(INTERFACEGFXDIR)/menu_1.gbapal
@cat $^ >$@
diff --git a/include/graphics.h b/include/graphics.h
index 56a51e67c..0e804e17c 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4222,4 +4222,8 @@ extern const u16 gUnknown_8E9E9FC[];
extern const u16 gTradeButtons_Gfx[];
extern const u16 gTradeMenuMonBox_Tilemap[];
+// mon_markings
+extern const u16 gUnknown_8E9CBBC[];
+extern const u16 gUnknown_8E9CB9C[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/mon_markings.h b/include/mon_markings.h
new file mode 100644
index 000000000..b428d9a34
--- /dev/null
+++ b/include/mon_markings.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_MON_MARKINGS_H
+#define GUARD_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 filler1034[0x80];
+ /*0x10B4*/ u8 tileLoadState;
+}; // 10b8
+
+#endif //GUARD_MON_MARKINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 4955916e3..ef4de7176 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -175,7 +175,7 @@ SECTIONS {
src/battle_intro.o(.text);
asm/bike.o(.text);
src/easy_chat.o(.text);
- asm/mon_markings.o(.text);
+ src/mon_markings.o(.text);
src/mail.o(.text);
src/menu_helpers.o(.text);
asm/script_pokemon_util_80BF8FC.o(.text);
@@ -461,7 +461,7 @@ SECTIONS {
src/battle_intro.o(.rodata);
data/bike.o(.rodata);
src/easy_chat.o(.rodata);
- data/mon_markings.o(.rodata);
+ src/mon_markings.o(.rodata);
src/mail.o(.rodata);
src/heal_location.o(.rodata);
data/region_map.o(.rodata);
diff --git a/src/mon_markings.c b/src/mon_markings.c
new file mode 100644
index 000000000..88ed0d6af
--- /dev/null
+++ b/src/mon_markings.c
@@ -0,0 +1,513 @@
+#include "global.h"
+#include "dma3.h"
+#include "text_window_graphics.h"
+#include "sound.h"
+#include "mon_markings.h"
+#include "graphics.h"
+#include "constants/songs.h"
+
+EWRAM_DATA struct PokemonMarkMenu * sMenu = NULL;
+
+void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag);
+void nullsub_62(struct Sprite * sprite);
+void sub_80BEA8C(struct Sprite * sprite);
+void sub_80BEAC8(struct Sprite * sprite);
+struct Sprite * sub_80BEB20(u16 tilesTag, u16 paletteTag, const u16 *palette, u16 size);
+
+const u16 gUnknown_83EE008[] = INCBIN_U16("graphics/misc/mon_markings.gbapal");
+const u16 gUnknown_83EE028[] = INCBIN_U16("graphics/misc/mon_markings.4bpp");
+const u8 gUnknown_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF};
+
+const struct OamData gUnknown_83EE830 = {
+ .shape = SPRITE_SHAPE(64x64),
+ .size = SPRITE_SIZE(64x64)
+};
+
+const struct OamData gUnknown_83EE838 = {
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8)
+};
+
+const union AnimCmd gAnimCmd_83EE840[] = {
+ ANIMCMD_FRAME(0x0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE848[] = {
+ ANIMCMD_FRAME(0x1, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE850[] = {
+ ANIMCMD_FRAME(0x2, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE858[] = {
+ ANIMCMD_FRAME(0x3, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE860[] = {
+ ANIMCMD_FRAME(0x4, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE868[] = {
+ ANIMCMD_FRAME(0x5, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE870[] = {
+ ANIMCMD_FRAME(0x6, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE878[] = {
+ ANIMCMD_FRAME(0x7, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE880[] = {
+ ANIMCMD_FRAME(0x8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE888[] = {
+ ANIMCMD_FRAME(0x9, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_83EE890[] = {
+ gAnimCmd_83EE840,
+ gAnimCmd_83EE848,
+ gAnimCmd_83EE850,
+ gAnimCmd_83EE858,
+ gAnimCmd_83EE860,
+ gAnimCmd_83EE868,
+ gAnimCmd_83EE870,
+ gAnimCmd_83EE878,
+ gAnimCmd_83EE880,
+ gAnimCmd_83EE888
+};
+
+const union AnimCmd gAnimCmd_83EE8B8[] = {
+ ANIMCMD_FRAME(0x0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE8C0[] = {
+ ANIMCMD_FRAME(0x40, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_83EE8C8[] = {
+ gAnimCmd_83EE8B8,
+ gAnimCmd_83EE8C0
+};
+
+const struct OamData gUnknown_83EE8D0 = {
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8)
+};
+
+const union AnimCmd gAnimCmd_83EE8D8[] = {
+ ANIMCMD_FRAME(0x0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE8E0[] = {
+ ANIMCMD_FRAME(0x4, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE8E8[] = {
+ ANIMCMD_FRAME(0x8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE8F0[] = {
+ ANIMCMD_FRAME(0xc, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE8F8[] = {
+ ANIMCMD_FRAME(0x10, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE900[] = {
+ ANIMCMD_FRAME(0x14, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE908[] = {
+ ANIMCMD_FRAME(0x18, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE910[] = {
+ ANIMCMD_FRAME(0x1c, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE918[] = {
+ ANIMCMD_FRAME(0x20, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE920[] = {
+ ANIMCMD_FRAME(0x24, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE928[] = {
+ ANIMCMD_FRAME(0x28, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE930[] = {
+ ANIMCMD_FRAME(0x2c, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE938[] = {
+ ANIMCMD_FRAME(0x30, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE940[] = {
+ ANIMCMD_FRAME(0x34, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE948[] = {
+ ANIMCMD_FRAME(0x38, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gAnimCmd_83EE950[] = {
+ ANIMCMD_FRAME(0x3c, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gUnknown_83EE958[] = {
+ gAnimCmd_83EE8D8,
+ gAnimCmd_83EE8E0,
+ gAnimCmd_83EE8E8,
+ gAnimCmd_83EE8F0,
+ gAnimCmd_83EE8F8,
+ gAnimCmd_83EE900,
+ gAnimCmd_83EE908,
+ gAnimCmd_83EE910,
+ gAnimCmd_83EE918,
+ gAnimCmd_83EE920,
+ gAnimCmd_83EE928,
+ gAnimCmd_83EE930,
+ gAnimCmd_83EE938,
+ gAnimCmd_83EE940,
+ gAnimCmd_83EE948,
+ gAnimCmd_83EE950
+};
+
+void sub_80BE46C(struct PokemonMarkMenu * markMenu)
+{
+ sMenu = markMenu;
+}
+
+void sub_80BE478(void)
+{
+ const struct TextWindowGraphics * frame = GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType);
+ sMenu->frameTiles = frame->tiles;
+ sMenu->framePalette = frame->palette;
+ sMenu->tileLoadState = 0;
+ CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles));
+}
+
+bool8 sub_80BE4C0(void)
+{
+ u16 i;
+ u8 *menuWindowSpriteTiles = &sMenu->menuWindowSpriteTiles[256 * sMenu->tileLoadState];
+ switch (sMenu->tileLoadState)
+ {
+ case 0:
+ CpuFastCopy(sMenu->frameTiles + 0x00, menuWindowSpriteTiles, 0x20);
+ for (i = 0; i < 6; i++)
+ CpuFastCopy(sMenu->frameTiles + 0x20, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20);
+ CpuFastCopy(sMenu->frameTiles + 0x40, menuWindowSpriteTiles + 0x20 * 7, 0x20);
+ sMenu->tileLoadState++;
+ break;
+ default:
+ CpuFastCopy(sMenu->frameTiles + 0x60, menuWindowSpriteTiles + 0x00, 0x20);
+ for (i = 0; i < 6; i++)
+ CpuFastCopy(sMenu->frameTiles + 0x80, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20);
+ CpuFastCopy(sMenu->frameTiles + 0xA0, menuWindowSpriteTiles + 0x20 * 7, 0x20);
+ sMenu->tileLoadState++;
+ break;
+ case 13:
+ CpuFastCopy(sMenu->frameTiles + 0xC0, menuWindowSpriteTiles + 0x00, 0x20);
+ for (i = 0; i < 6; i++)
+ CpuFastCopy(sMenu->frameTiles + 0xE0, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20);
+ CpuFastCopy(sMenu->frameTiles + 0x100, menuWindowSpriteTiles + 0x20 * 7, 0x20);
+ sMenu->tileLoadState++;
+ return FALSE;
+ case 14:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_80BE5F0(void)
+{
+ sub_80BE478();
+ while (sub_80BE4C0())
+ {}
+}
+
+void sub_80BE604(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_80BE7CC(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);;
+}
+
+void sub_80BE658(void)
+{
+ u16 i;
+ for (i = 0; i < 3; i++)
+ FreeSpriteTilesByTag(sMenu->baseTileTag + i);
+ FreeSpritePaletteByTag(sMenu->basePaletteTag);
+ FreeSpritePaletteByTag(sMenu->basePaletteTag + 1);
+ for (i = 0; i < 2; i++)
+ {
+ if (sMenu->menuWindowSprites[i] == NULL)
+ return; // break;
+ DestroySprite(sMenu->menuWindowSprites[i]);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sMenu->menuMarkingSprites[i] == NULL)
+ return; // break;
+ DestroySprite(sMenu->menuMarkingSprites[i]);
+ }
+ if (sMenu->unkSprite != NULL)
+ DestroySprite(sMenu->unkSprite);
+ if (sMenu->menuTextSprite != NULL)
+ DestroySprite(sMenu->menuTextSprite);
+}
+
+bool8 sub_80BE6F0(void)
+{
+ u16 i;
+ if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ if (--sMenu->cursorPos < 0)
+ sMenu->cursorPos = 5;
+ return TRUE;
+ }
+ if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ if (++sMenu->cursorPos > 5)
+ sMenu->cursorPos = 0;
+ return TRUE;
+ }
+ if (JOY_NEW(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] ? FALSE : TRUE;
+ return TRUE;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_80BE7CC(s16 x, s16 y, u16 tilesTag, u16 paletteTag)
+{
+ u16 i;
+ u8 spriteId;
+ struct SpriteSheet sheets[] = {
+ {
+ .data = sMenu->menuWindowSpriteTiles,
+ .size = 0x1000,
+ .tag = tilesTag
+ }, {
+ .data = gUnknown_8E9CBBC,
+ .size = 0x320,
+ .tag = tilesTag + 1
+ }, {}
+ };
+ struct SpritePalette palettes[] = {
+ {
+ .data = sMenu->framePalette,
+ .tag = paletteTag
+ }, {
+ .data = gUnknown_8E9CB9C,
+ .tag = paletteTag + 1
+ }, {}
+ };
+ struct SpriteTemplate sprTemplate = {
+ .tileTag = tilesTag,
+ .paletteTag = paletteTag,
+ .oam = &gUnknown_83EE830,
+ .anims = gUnknown_83EE8C8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_62
+ };
+ LoadSpriteSheets(sheets);
+ LoadSpritePalettes(palettes);
+
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ 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_83EE890;
+ sprTemplate.callback = sub_80BEA8C;
+ sprTemplate.oam = &gUnknown_83EE838;
+
+ for (i = 0; i < 4; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ 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 != MAX_SPRITES)
+ {
+ 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 + 32;
+ sMenu->menuTextSprite->pos1.y = y + 80;
+ CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0);
+ }
+ else
+ {
+ sMenu->menuTextSprite = NULL;
+ }
+
+ sprTemplate.callback = sub_80BEAC8;
+ spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sMenu->unkSprite = &gSprites[spriteId];
+ sMenu->unkSprite->data[0] = y + 16;
+ StartSpriteAnim(sMenu->unkSprite, 8);
+ }
+ else
+ {
+ sMenu->unkSprite = NULL;
+ }
+}
+
+void nullsub_62(struct Sprite * sprite)
+{}
+
+void sub_80BEA8C(struct Sprite * sprite)
+{
+ if (sMenu->markingsArray[sprite->data[0]])
+ StartSpriteAnim(sprite, 2 * sprite->data[0] + 1);
+ else
+ StartSpriteAnim(sprite, 2 * sprite->data[0] + 0);
+}
+
+void sub_80BEAC8(struct Sprite * sprite)
+{
+ sprite->pos1.y = 16 * sMenu->cursorPos + sprite->data[0];
+}
+
+struct Sprite * sub_80BEAE0(u16 tileTag, u16 paletteTag, const u16 *palette)
+{
+ if (palette == NULL)
+ palette = gUnknown_83EE008;
+ return sub_80BEB20(tileTag, paletteTag, palette, 16);
+}
+
+struct Sprite * sub_80BEB00(u16 tileTag, u16 paletteTag, const u16 *palette)
+{
+ if (palette == NULL)
+ palette = gUnknown_83EE008;
+ return sub_80BEB20(tileTag, paletteTag, palette, 1);
+}
+
+struct Sprite * sub_80BEB20(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size)
+{
+ u8 spriteId;
+ struct SpriteTemplate sprTemplate;
+ struct SpriteSheet sheet = { gUnknown_83EE028, 0x80, tileTag };
+ struct SpritePalette sprPalette = { palette, paletteTag };
+
+ sprTemplate.tileTag = tileTag;
+ sprTemplate.paletteTag = paletteTag;
+ sprTemplate.oam = &gUnknown_83EE8D0;
+ sprTemplate.anims = gUnknown_83EE958;
+ sprTemplate.images = NULL;
+ sprTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sprTemplate.callback = nullsub_62;
+
+ sheet.size = size * 0x80;
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&sprPalette);
+
+ spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ return &gSprites[spriteId];
+ else
+ return NULL;
+}
+
+void sub_80BEBD0(u8 markings, void * dest)
+{
+ RequestDma3Copy(&gUnknown_83EE028[64 * markings], dest, 0x80, 1);
+}
+
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 5d5cbaaeb..d3e29a065 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -371,7 +371,7 @@ gUnknown_203999C: @ 203999C
.align 2
.include "src/easy_chat.o"
.align 2
- .include "asm/mon_markings.o" @ TODO: Move to src
+ .include "src/mon_markings.o"
.align 2
.include "src/mail.o"
.align 2