summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarijn van der Werf <marijn.vanderwerf@gmail.com>2016-12-13 23:01:24 +0100
committerMarijn van der Werf <marijn.vanderwerf@gmail.com>2017-01-06 04:06:24 +0100
commit076d9e8deffa269c19829ef8c82a546035e65f25 (patch)
tree82a1f879870656e094ed78ca7c8c54e778ac2129
parent2bf932b4f0fdfc821396b58250c02fc4eabf47e7 (diff)
Contest painting
-rw-r--r--asm/contest_painting.s1293
-rw-r--r--data/data_83760F0.s49
-rw-r--r--ld_script.txt2
-rw-r--r--shared_syms.txt1
-rw-r--r--src/contest_painting.c1353
5 files changed, 1374 insertions, 1324 deletions
diff --git a/asm/contest_painting.s b/asm/contest_painting.s
deleted file mode 100644
index ef4d35b8d..000000000
--- a/asm/contest_painting.s
+++ /dev/null
@@ -1,1293 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8106630
-sub_8106630: @ 8106630
- push {r4-r7,lr}
- ldr r2, _0810665C @ =0x02015de0
- subs r4, r2, 0x2
- subs r5, r2, 0x1
- ldr r3, _08106660 @ =gSaveBlock1
- subs r0, 0x1
- lsls r1, r0, 5
- adds r1, r3
- ldr r3, _08106664 @ =0x00002dfc
- adds r1, r3
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r6,r7}
- stm r2!, {r6,r7}
- strb r0, [r4]
- movs r0, 0
- strb r0, [r5]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810665C: .4byte 0x02015de0
-_08106660: .4byte gSaveBlock1
-_08106664: .4byte 0x00002dfc
- thumb_func_end sub_8106630
-
- thumb_func_start CB2_ContestPainting
-CB2_ContestPainting: @ 8106668
- push {lr}
- bl ShowContestPainting
- pop {r0}
- bx r0
- thumb_func_end CB2_ContestPainting
-
- thumb_func_start ShowContestPainting
-ShowContestPainting: @ 8106674
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _08106694 @ =gMain
- ldr r2, _08106698 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x4
- bls _08106688
- b _081067E0
-_08106688:
- lsls r0, 2
- ldr r1, _0810669C @ =_081066A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08106694: .4byte gMain
-_08106698: .4byte 0x0000043c
-_0810669C: .4byte _081066A0
- .align 2, 0
-_081066A0:
- .4byte _081066B4
- .4byte _081066D8
- .4byte _08106734
- .4byte _0810675C
- .4byte _0810678C
-_081066B4:
- bl remove_some_task
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, _081066D0 @ =gUnknown_03005E8C
- ldr r0, _081066D4 @ =0x02015de0
- str r0, [r1]
- movs r0, 0x1
- bl ContestPaintingInitVars
- bl ContestPaintingInitBG
- b _0810676E
- .align 2, 0
-_081066D0: .4byte gUnknown_03005E8C
-_081066D4: .4byte 0x02015de0
-_081066D8:
- bl ResetPaletteFade
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- movs r5, 0
- ldr r1, _08106724 @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- ldr r6, _08106728 @ =0x85000400
- movs r7, 0x85
- lsls r7, 24
-_081066F2:
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _081066F2
- str r5, [sp]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetSpriteData
- ldr r1, _0810672C @ =gMain
- ldr r2, _08106730 @ =0x0000043c
- adds r1, r2
- b _08106774
- .align 2, 0
-_08106724: .4byte 0x040000d4
-_08106728: .4byte 0x85000400
-_0810672C: .4byte gMain
-_08106730: .4byte 0x0000043c
-_08106734:
- ldrh r0, [r4, 0x20]
- bl SeedRng
- bl InitKeys
- ldr r0, _08106750 @ =0x02000000
- ldr r1, _08106754 @ =0x00015ddf
- adds r0, r1
- ldrb r0, [r0]
- bl ContestPaintingInitWindow
- ldr r2, _08106758 @ =0x0000043c
- adds r1, r4, r2
- b _08106774
- .align 2, 0
-_08106750: .4byte 0x02000000
-_08106754: .4byte 0x00015ddf
-_08106758: .4byte 0x0000043c
-_0810675C:
- ldr r1, _0810677C @ =0x02000000
- ldr r2, _08106780 @ =0x00015dde
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- bl sub_8107090
-_0810676E:
- ldr r1, _08106784 @ =gMain
- ldr r0, _08106788 @ =0x0000043c
- adds r1, r0
-_08106774:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081067E0
- .align 2, 0
-_0810677C: .4byte 0x02000000
-_08106780: .4byte 0x00015dde
-_08106784: .4byte gMain
-_08106788: .4byte 0x0000043c
-_0810678C:
- ldr r1, _081067E8 @ =0x02000000
- ldr r2, _081067EC @ =0x00015dde
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- bl ContestPaintingPrintCaption
- ldr r0, _081067F0 @ =gUnknown_083F6140
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r1, 0xA0
- lsls r1, 19
- movs r4, 0
- str r4, [sp]
- ldr r0, _081067F4 @ =0x040000d4
- mov r2, sp
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _081067F8 @ =0x85000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0x2
- bl BeginFastPaletteFade
- ldr r0, _081067FC @ =VBlankCB_ContestPainting
- bl SetVBlankCallback
- ldr r0, _08106800 @ =gUnknown_03000750
- strb r4, [r0]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08106804 @ =CB2_HoldContestPainting
- bl SetMainCallback2
-_081067E0:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081067E8: .4byte 0x02000000
-_081067EC: .4byte 0x00015dde
-_081067F0: .4byte gUnknown_083F6140
-_081067F4: .4byte 0x040000d4
-_081067F8: .4byte 0x85000100
-_081067FC: .4byte VBlankCB_ContestPainting
-_08106800: .4byte gUnknown_03000750
-_08106804: .4byte CB2_HoldContestPainting
- thumb_func_end ShowContestPainting
-
- thumb_func_start CB2_HoldContestPainting
-CB2_HoldContestPainting: @ 8106808
- push {lr}
- bl HoldContestPainting
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end CB2_HoldContestPainting
-
- thumb_func_start CB2_QuitContestPainting
-CB2_QuitContestPainting: @ 8106818
- push {lr}
- ldr r0, _08106828 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08106828: .4byte gMain
- thumb_func_end CB2_QuitContestPainting
-
- thumb_func_start HoldContestPainting
-HoldContestPainting: @ 810682C
- push {lr}
- sub sp, 0x4
- ldr r3, _08106844 @ =gUnknown_03000750
- ldrb r1, [r3]
- cmp r1, 0x1
- beq _08106880
- cmp r1, 0x1
- bgt _08106848
- cmp r1, 0
- beq _0810684E
- b _081068E6
- .align 2, 0
-_08106844: .4byte gUnknown_03000750
-_08106848:
- cmp r1, 0x2
- beq _081068C0
- b _081068E6
-_0810684E:
- ldr r0, _08106874 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810685E
- movs r0, 0x1
- strb r0, [r3]
-_0810685E:
- ldr r0, _08106878 @ =gUnknown_03000756
- ldrb r0, [r0]
- cmp r0, 0
- beq _081068E6
- ldr r1, _0810687C @ =gUnknown_03000754
- ldrh r0, [r1]
- cmp r0, 0
- beq _081068E6
- subs r0, 0x1
- b _081068E4
- .align 2, 0
-_08106874: .4byte gPaletteFade
-_08106878: .4byte gUnknown_03000756
-_0810687C: .4byte gUnknown_03000754
-_08106880:
- ldr r0, _081068B4 @ =gMain
- ldrh r2, [r0, 0x2E]
- ands r1, r2
- cmp r1, 0
- bne _08106892
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _081068A4
-_08106892:
- movs r0, 0x2
- strb r0, [r3]
- subs r0, 0x3
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_081068A4:
- ldr r0, _081068B8 @ =gUnknown_03000756
- ldrb r0, [r0]
- cmp r0, 0
- beq _081068E6
- ldr r1, _081068BC @ =gUnknown_03000754
- movs r0, 0
- b _081068E4
- .align 2, 0
-_081068B4: .4byte gMain
-_081068B8: .4byte gUnknown_03000756
-_081068BC: .4byte gUnknown_03000754
-_081068C0:
- ldr r0, _081068EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081068D2
- ldr r0, _081068F0 @ =CB2_QuitContestPainting
- bl SetMainCallback2
-_081068D2:
- ldr r0, _081068F4 @ =gUnknown_03000756
- ldrb r0, [r0]
- cmp r0, 0
- beq _081068E6
- ldr r1, _081068F8 @ =gUnknown_03000754
- ldrh r0, [r1]
- cmp r0, 0x1D
- bhi _081068E6
- adds r0, 0x1
-_081068E4:
- strh r0, [r1]
-_081068E6:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_081068EC: .4byte gPaletteFade
-_081068F0: .4byte CB2_QuitContestPainting
-_081068F4: .4byte gUnknown_03000756
-_081068F8: .4byte gUnknown_03000754
- thumb_func_end HoldContestPainting
-
- thumb_func_start ContestPaintingInitWindow
-ContestPaintingInitWindow: @ 81068FC
- push {r4,lr}
- ldr r4, _08106914 @ =gWindowConfig_81E7160
- adds r0, r4, 0
- bl InitMenuWindow
- adds r0, r4, 0
- bl SetUpWindowConfig
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08106914: .4byte gWindowConfig_81E7160
- thumb_func_end ContestPaintingInitWindow
-
- thumb_func_start ContestPaintingPrintCaption
-ContestPaintingPrintCaption: @ 8106918
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _081069BE
- ldr r2, _08106974 @ =gUnknown_03005E40
- ldr r6, _08106978 @ =gUnknown_03005E8C
- ldr r0, [r6]
- ldrb r0, [r0, 0xA]
- cmp r3, 0x7
- bhi _08106988
- ldr r1, _0810697C @ =gUnknown_083F60AC
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r1, _08106980 @ =gContestText_ContestWinner
- bl StringCopy
- adds r2, r0, 0
- ldr r1, [r6]
- adds r1, 0x16
- bl StringCopy
- adds r2, r0, 0
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x16
- strb r0, [r2, 0x1]
- adds r2, 0x2
- ldr r1, _08106984 @ =gOtherText_Unknown1
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r1, [r6]
- adds r1, 0xB
- bl StringCopy10
- movs r1, 0x6
- b _081069AE
- .align 2, 0
-_08106974: .4byte gUnknown_03005E40
-_08106978: .4byte gUnknown_03005E8C
-_0810697C: .4byte gUnknown_083F60AC
-_08106980: .4byte gContestText_ContestWinner
-_08106984: .4byte gOtherText_Unknown1
-_08106988:
- ldr r4, _081069C4 @ =gUnknown_083F60C0
- lsls r5, r0, 3
- adds r0, r5, r4
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r1, [r6]
- adds r1, 0xB
- bl StringCopy10
- adds r2, r0, 0
- adds r4, 0x4
- adds r5, r4
- ldr r1, [r5]
- bl StringCopy
- movs r1, 0x3
-_081069AE:
- movs r2, 0xE
- ldr r0, _081069C8 @ =gUnknown_03005E40
- lsls r1, 3
- adds r1, 0x1
- lsls r2, 3
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_081069BE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081069C4: .4byte gUnknown_083F60C0
-_081069C8: .4byte gUnknown_03005E40
- thumb_func_end ContestPaintingPrintCaption
-
- thumb_func_start ContestPaintingInitBG
-ContestPaintingInitBG: @ 81069CC
- movs r0, 0x80
- lsls r0, 19
- movs r3, 0
- strh r3, [r0]
- ldr r2, _081069FC @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _08106A00 @ =REG_BG0CNT
- ldr r2, _08106A04 @ =0x00000c42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _08106A08 @ =0x00000a45
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08106A0C @ =REG_BLDCNT
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
- bx lr
- .align 2, 0
-_081069FC: .4byte 0x04000200
-_08106A00: .4byte REG_BG0CNT
-_08106A04: .4byte 0x00000c42
-_08106A08: .4byte 0x00000a45
-_08106A0C: .4byte REG_BLDCNT
- thumb_func_end ContestPaintingInitBG
-
- thumb_func_start ContestPaintingInitVars
-ContestPaintingInitVars: @ 8106A10
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08106A34
- ldr r0, _08106A28 @ =gUnknown_03000756
- strb r1, [r0]
- ldr r0, _08106A2C @ =gUnknown_03000752
- strh r1, [r0]
- ldr r0, _08106A30 @ =gUnknown_03000754
- strh r1, [r0]
- b _08106A46
- .align 2, 0
-_08106A28: .4byte gUnknown_03000756
-_08106A2C: .4byte gUnknown_03000752
-_08106A30: .4byte gUnknown_03000754
-_08106A34:
- ldr r1, _08106A4C @ =gUnknown_03000756
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _08106A50 @ =gUnknown_03000752
- movs r0, 0xF
- strh r0, [r1]
- ldr r1, _08106A54 @ =gUnknown_03000754
- movs r0, 0x1E
- strh r0, [r1]
-_08106A46:
- pop {r0}
- bx r0
- .align 2, 0
-_08106A4C: .4byte gUnknown_03000756
-_08106A50: .4byte gUnknown_03000752
-_08106A54: .4byte gUnknown_03000754
- thumb_func_end ContestPaintingInitVars
-
- thumb_func_start ContestPaintingMosaic
-ContestPaintingMosaic: @ 8106A58
- push {lr}
- ldr r0, _08106A68 @ =gUnknown_03000756
- ldrb r1, [r0]
- cmp r1, 0
- bne _08106A70
- ldr r0, _08106A6C @ =REG_MOSAIC
- strh r1, [r0]
- b _08106A92
- .align 2, 0
-_08106A68: .4byte gUnknown_03000756
-_08106A6C: .4byte REG_MOSAIC
-_08106A70:
- ldr r1, _08106A98 @ =REG_BG1CNT
- ldr r2, _08106A9C @ =0x00000a45
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _08106AA0 @ =gUnknown_03000752
- ldr r0, _08106AA4 @ =gUnknown_03000754
- ldrh r1, [r0]
- lsrs r1, 1
- strh r1, [r2]
- ldr r3, _08106AA8 @ =REG_MOSAIC
- lsls r0, r1, 12
- lsls r2, r1, 8
- orrs r0, r2
- lsls r2, r1, 4
- orrs r0, r2
- orrs r0, r1
- strh r0, [r3]
-_08106A92:
- pop {r0}
- bx r0
- .align 2, 0
-_08106A98: .4byte REG_BG1CNT
-_08106A9C: .4byte 0x00000a45
-_08106AA0: .4byte gUnknown_03000752
-_08106AA4: .4byte gUnknown_03000754
-_08106AA8: .4byte REG_MOSAIC
- thumb_func_end ContestPaintingMosaic
-
- thumb_func_start VBlankCB_ContestPainting
-VBlankCB_ContestPainting: @ 8106AAC
- push {lr}
- bl ContestPaintingMosaic
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end VBlankCB_ContestPainting
-
- thumb_func_start sub_8106AC4
-sub_8106AC4: @ 8106AC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r4, r1, 0
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _08106B28 @ =gUnknown_03005E8C
- ldr r0, [r7]
- ldr r1, [r0, 0x4]
- ldr r2, [r0]
- adds r0, r6, 0
- bl species_and_otid_get_pal
- ldr r1, _08106B2C @ =gUnknown_03005E90
- mov r8, r1
- ldr r1, [r1]
- bl LZDecompressVram
- cmp r4, 0
- bne _08106B40
- lsls r0, r6, 3
- ldr r1, _08106B30 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08106B34 @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08106B38 @ =gUnknown_081FAF4C
- ldr r5, [r4, 0x4]
- str r5, [sp]
- str r6, [sp, 0x4]
- ldr r4, [r7]
- ldr r4, [r4]
- str r4, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- mov r2, r8
- ldr r1, [r2]
- ldr r0, _08106B3C @ =gUnknown_03005E10
- ldr r2, [r0]
- adds r0, r5, 0
- bl sub_8106B90
- b _08106B74
- .align 2, 0
-_08106B28: .4byte gUnknown_03005E8C
-_08106B2C: .4byte gUnknown_03005E90
-_08106B30: .4byte gMonFrontPicTable
-_08106B34: .4byte gMonFrontPicCoords
-_08106B38: .4byte gUnknown_081FAF4C
-_08106B3C: .4byte gUnknown_03005E10
-_08106B40:
- lsls r0, r6, 3
- ldr r1, _08106B80 @ =gMonBackPicTable
- adds r0, r1
- ldr r1, _08106B84 @ =gMonBackPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08106B88 @ =gUnknown_081FAF4C
- ldr r5, [r4]
- str r5, [sp]
- str r6, [sp, 0x4]
- ldr r4, [r7]
- ldr r4, [r4]
- str r4, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- mov r0, r8
- ldr r1, [r0]
- ldr r0, _08106B8C @ =gUnknown_03005E10
- ldr r2, [r0]
- adds r0, r5, 0
- bl sub_8106B90
-_08106B74:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08106B80: .4byte gMonBackPicTable
-_08106B84: .4byte gMonBackPicCoords
-_08106B88: .4byte gUnknown_081FAF4C
-_08106B8C: .4byte gUnknown_03005E10
- thumb_func_end sub_8106AC4
-
- thumb_func_start sub_8106B90
-sub_8106B90: @ 8106B90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r10, r0
- mov r9, r1
- str r2, [sp]
- movs r0, 0
-_08106BA4:
- movs r3, 0
- adds r1, r0, 0x1
- str r1, [sp, 0x4]
- lsls r0, 3
- str r0, [sp, 0x8]
-_08106BAE:
- movs r1, 0
- adds r2, r3, 0x1
- mov r8, r2
- ldr r7, [sp, 0x8]
- adds r0, r7, r3
- lsls r0, 5
- mov r12, r0
- lsls r4, r3, 3
-_08106BBE:
- movs r3, 0
- lsls r0, r1, 2
- adds r6, r1, 0x1
- mov r2, r12
- adds r5, r2, r0
- ldr r7, [sp, 0x8]
- adds r0, r7, r1
- lsls r0, 7
- ldr r1, [sp]
- adds r2, r0, r1
-_08106BD2:
- lsrs r0, r3, 1
- adds r0, r5, r0
- add r0, r10
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08106BE6
- lsrs r1, 4
- b _08106BEA
-_08106BE6:
- movs r0, 0xF
- ands r1, r0
-_08106BEA:
- cmp r1, 0
- bne _08106BFC
- adds r0, r4, r3
- lsls r0, 1
- adds r0, r2
- movs r7, 0x80
- lsls r7, 8
- adds r1, r7, 0
- b _08106C08
-_08106BFC:
- adds r0, r4, r3
- lsls r0, 1
- adds r0, r2
- lsls r1, 1
- add r1, r9
- ldrh r1, [r1]
-_08106C08:
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x7
- bls _08106BD2
- lsls r0, r6, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bls _08106BBE
- mov r1, r8
- lsls r0, r1, 16
- lsrs r3, r0, 16
- cmp r3, 0x7
- bls _08106BAE
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0x7
- bls _08106BA4
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8106B90
-
- thumb_func_start sub_8106C40
-sub_8106C40: @ 8106C40
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08106C7C @ =gPictureFramePalettes
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- cmp r4, 0x1
- beq _08106C5E
- b _08106DB4
-_08106C5E:
- ldr r0, _08106C80 @ =gUnknown_03005E8C
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _08106D1C
- lsls r0, 2
- ldr r1, _08106C84 @ =_08106C88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08106C7C: .4byte gPictureFramePalettes
-_08106C80: .4byte gUnknown_03005E8C
-_08106C84: .4byte _08106C88
- .align 2, 0
-_08106C88:
- .4byte _08106C9C
- .4byte _08106CB4
- .4byte _08106CCC
- .4byte _08106CE4
- .4byte _08106D08
-_08106C9C:
- ldr r0, _08106CAC @ =gPictureFrameTiles_0
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106CB0 @ =gPictureFrameTilemap_0
- b _08106CF0
- .align 2, 0
-_08106CAC: .4byte gPictureFrameTiles_0
-_08106CB0: .4byte gPictureFrameTilemap_0
-_08106CB4:
- ldr r0, _08106CC4 @ =gPictureFrameTiles_1
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106CC8 @ =gPictureFrameTilemap_1
- b _08106CF0
- .align 2, 0
-_08106CC4: .4byte gPictureFrameTiles_1
-_08106CC8: .4byte gPictureFrameTilemap_1
-_08106CCC:
- ldr r0, _08106CDC @ =gPictureFrameTiles_2
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106CE0 @ =gPictureFrameTilemap_2
- b _08106CF0
- .align 2, 0
-_08106CDC: .4byte gPictureFrameTiles_2
-_08106CE0: .4byte gPictureFrameTilemap_2
-_08106CE4:
- ldr r0, _08106CFC @ =gPictureFrameTiles_3
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106D00 @ =gPictureFrameTilemap_3
-_08106CF0:
- ldr r1, _08106D04 @ =gUnknown_03005E10
- ldr r1, [r1]
- bl RLUnCompWram
- b _08106D1C
- .align 2, 0
-_08106CFC: .4byte gPictureFrameTiles_3
-_08106D00: .4byte gPictureFrameTilemap_3
-_08106D04: .4byte gUnknown_03005E10
-_08106D08:
- ldr r0, _08106D98 @ =gPictureFrameTiles_4
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106D9C @ =gPictureFrameTilemap_4
- ldr r1, _08106DA0 @ =gUnknown_03005E10
- ldr r1, [r1]
- bl RLUnCompWram
-_08106D1C:
- movs r1, 0
- ldr r5, _08106DA4 @ =0x06006000
- ldr r0, _08106DA8 @ =0x00001015
- adds r4, r0, 0
-_08106D24:
- movs r3, 0
- lsls r2, r1, 5
-_08106D28:
- adds r0, r2, r3
- lsls r0, 1
- adds r0, r5
- strh r4, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _08106D28
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x13
- bls _08106D24
- movs r1, 0
- ldr r0, _08106DAC @ =0x0600608c
- mov r12, r0
- ldr r7, _08106DA0 @ =gUnknown_03005E10
-_08106D4C:
- movs r3, 0
- adds r6, r1, 0x1
- lsls r5, r1, 5
- lsls r4, r1, 6
-_08106D54:
- adds r2, r5, r3
- lsls r2, 1
- add r2, r12
- ldr r0, [r7]
- adds r0, r4, r0
- lsls r1, r3, 1
- adds r0, r1
- adds r0, 0x8C
- ldrh r0, [r0]
- strh r0, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x11
- bls _08106D54
- lsls r0, r6, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- bls _08106D4C
- movs r3, 0
- ldr r4, _08106DB0 @ =0x0600608e
- ldr r2, _08106DA0 @ =gUnknown_03005E10
-_08106D80:
- lsls r1, r3, 1
- adds r1, r4
- ldr r0, [r2]
- adds r0, 0x8E
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _08106D80
- b _08106E86
- .align 2, 0
-_08106D98: .4byte gPictureFrameTiles_4
-_08106D9C: .4byte gPictureFrameTilemap_4
-_08106DA0: .4byte gUnknown_03005E10
-_08106DA4: .4byte 0x06006000
-_08106DA8: .4byte 0x00001015
-_08106DAC: .4byte 0x0600608c
-_08106DB0: .4byte 0x0600608e
-_08106DB4:
- cmp r5, 0x7
- bhi _08106DD0
- ldr r0, _08106DC8 @ =gPictureFrameTiles_5
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106DCC @ =gPictureFrameTilemap_5
- b _08106E60
- .align 2, 0
-_08106DC8: .4byte gPictureFrameTiles_5
-_08106DCC: .4byte gPictureFrameTilemap_5
-_08106DD0:
- ldr r0, _08106DF0 @ =gUnknown_03005E8C
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _08106E86
- lsls r0, 2
- ldr r1, _08106DF4 @ =_08106DF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08106DF0: .4byte gUnknown_03005E8C
-_08106DF4: .4byte _08106DF8
- .align 2, 0
-_08106DF8:
- .4byte _08106E0C
- .4byte _08106E24
- .4byte _08106E3C
- .4byte _08106E54
- .4byte _08106E74
-_08106E0C:
- ldr r0, _08106E1C @ =gPictureFrameTiles_0
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106E20 @ =gPictureFrameTilemap_0
- b _08106E60
- .align 2, 0
-_08106E1C: .4byte gPictureFrameTiles_0
-_08106E20: .4byte gPictureFrameTilemap_0
-_08106E24:
- ldr r0, _08106E34 @ =gPictureFrameTiles_1
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106E38 @ =gPictureFrameTilemap_1
- b _08106E60
- .align 2, 0
-_08106E34: .4byte gPictureFrameTiles_1
-_08106E38: .4byte gPictureFrameTilemap_1
-_08106E3C:
- ldr r0, _08106E4C @ =gPictureFrameTiles_2
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106E50 @ =gPictureFrameTilemap_2
- b _08106E60
- .align 2, 0
-_08106E4C: .4byte gPictureFrameTiles_2
-_08106E50: .4byte gPictureFrameTilemap_2
-_08106E54:
- ldr r0, _08106E68 @ =gPictureFrameTiles_3
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106E6C @ =gPictureFrameTilemap_3
-_08106E60:
- ldr r1, _08106E70 @ =0x06006000
- bl RLUnCompVram
- b _08106E86
- .align 2, 0
-_08106E68: .4byte gPictureFrameTiles_3
-_08106E6C: .4byte gPictureFrameTilemap_3
-_08106E70: .4byte 0x06006000
-_08106E74:
- ldr r0, _08106E8C @ =gPictureFrameTiles_4
- movs r1, 0xC0
- lsls r1, 19
- bl RLUnCompVram
- ldr r0, _08106E90 @ =gPictureFrameTilemap_4
- ldr r1, _08106E94 @ =0x06006000
- bl RLUnCompVram
-_08106E86:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08106E8C: .4byte gPictureFrameTiles_4
-_08106E90: .4byte gPictureFrameTilemap_4
-_08106E94: .4byte 0x06006000
- thumb_func_end sub_8106C40
-
- thumb_func_start sub_8106E98
-sub_8106E98: @ 8106E98
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08106ED0 @ =gMain
- ldr r1, _08106ED4 @ =gOamData_83F6138
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [r4, 0x3C]
- str r2, [r4, 0x40]
- adds r3, r4, 0
- adds r3, 0x40
- ldrh r2, [r3]
- ldr r1, _08106ED8 @ =0xfffffc00
- ands r1, r2
- strh r1, [r3]
- ldrh r1, [r4, 0x3E]
- ldr r0, _08106EDC @ =0xfffffe00
- ands r0, r1
- movs r1, 0x58
- orrs r0, r1
- strh r0, [r4, 0x3E]
- adds r1, r4, 0
- adds r1, 0x3C
- movs r0, 0x18
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08106ED0: .4byte gMain
-_08106ED4: .4byte gOamData_83F6138
-_08106ED8: .4byte 0xfffffc00
-_08106EDC: .4byte 0xfffffe00
- thumb_func_end sub_8106E98
-
- thumb_func_start sub_8106EE0
-sub_8106EE0: @ 8106EE0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _08106EF8
- ldr r0, _08106EF4 @ =gUnknown_03005E8C
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- b _08106F08
- .align 2, 0
-_08106EF4: .4byte gUnknown_03005E8C
-_08106EF8:
- ldr r0, _08106F18 @ =gUnknown_03005E8C
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
-_08106F08:
- cmp r0, 0x4
- bhi _08106F46
- lsls r0, 2
- ldr r1, _08106F1C @ =_08106F20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08106F18: .4byte gUnknown_03005E8C
-_08106F1C: .4byte _08106F20
- .align 2, 0
-_08106F20:
- .4byte _08106F34
- .4byte _08106F38
- .4byte _08106F3C
- .4byte _08106F40
- .4byte _08106F44
-_08106F34:
- movs r0, 0x9
- b _08106F46
-_08106F38:
- movs r0, 0xD
- b _08106F46
-_08106F3C:
- movs r0, 0x2
- b _08106F46
-_08106F40:
- movs r0, 0x24
- b _08106F46
-_08106F44:
- movs r0, 0x6
-_08106F46:
- pop {r1}
- bx r1
- thumb_func_end sub_8106EE0
-
- thumb_func_start sub_8106F4C
-sub_8106F4C: @ 8106F4C
- ldr r0, _08106F5C @ =gUnknown_03005E90
- ldr r1, _08106F60 @ =0x02017e00
- str r1, [r0]
- ldr r0, _08106F64 @ =gUnknown_03005E10
- ldr r2, _08106F68 @ =0xffffe000
- adds r1, r2
- str r1, [r0]
- bx lr
- .align 2, 0
-_08106F5C: .4byte gUnknown_03005E90
-_08106F60: .4byte 0x02017e00
-_08106F64: .4byte gUnknown_03005E10
-_08106F68: .4byte 0xffffe000
- thumb_func_end sub_8106F4C
-
- thumb_func_start sub_8106F6C
-sub_8106F6C: @ 8106F6C
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _08106FAC @ =gUnknown_03005E20
- ldr r0, _08106FB0 @ =gUnknown_03005E10
- ldr r0, [r0]
- str r0, [r1, 0x4]
- ldr r0, _08106FB4 @ =gUnknown_03005E90
- ldr r0, [r0]
- str r0, [r1, 0x8]
- movs r2, 0
- strb r2, [r1, 0x18]
- ldr r0, _08106FB8 @ =gUnknown_03005E8C
- ldr r0, [r0]
- ldrb r0, [r0]
- strb r0, [r1, 0x1F]
- strb r2, [r1, 0x19]
- strb r2, [r1, 0x1A]
- movs r0, 0x40
- strb r0, [r1, 0x1B]
- strb r0, [r1, 0x1C]
- strb r0, [r1, 0x1D]
- strb r0, [r1, 0x1E]
- subs r0, r3, 0x2
- adds r4, r1, 0
- cmp r0, 0x22
- bhi _08107050
- lsls r0, 2
- ldr r1, _08106FBC @ =_08106FC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08106FAC: .4byte gUnknown_03005E20
-_08106FB0: .4byte gUnknown_03005E10
-_08106FB4: .4byte gUnknown_03005E90
-_08106FB8: .4byte gUnknown_03005E8C
-_08106FBC: .4byte _08106FC0
- .align 2, 0
-_08106FC0:
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _0810704C
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _08107050
- .4byte _0810704C
-_0810704C:
- movs r0, 0x3
- b _08107052
-_08107050:
- movs r0, 0x1
-_08107052:
- strh r0, [r4, 0x14]
- movs r0, 0x2
- strh r0, [r4, 0x16]
- strb r3, [r4]
- ldr r0, _08107088 @ =0x06010000
- str r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80FC7A0
- adds r0, r4, 0
- bl sub_80FDA18
- adds r0, r4, 0
- bl sub_80FD8CC
- ldr r0, _0810708C @ =gUnknown_03005E90
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x80
- lsls r2, 2
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08107088: .4byte 0x06010000
-_0810708C: .4byte gUnknown_03005E90
- thumb_func_end sub_8106F6C
-
- thumb_func_start sub_8107090
-sub_8107090: @ 8107090
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- bl sub_8106F4C
- ldr r0, _081070D0 @ =gUnknown_03005E8C
- ldr r0, [r0]
- ldrh r0, [r0, 0x8]
- movs r1, 0
- bl sub_8106AC4
- adds r0, r4, 0
- bl sub_8106EE0
- lsls r0, 24
- lsrs r0, 24
- bl sub_8106F6C
- adds r0, r4, 0
- bl sub_8106E98
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8106C40
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081070D0: .4byte gUnknown_03005E8C
- thumb_func_end sub_8107090
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/data_83760F0.s b/data/data_83760F0.s
index 631623864..a3303a026 100644
--- a/data/data_83760F0.s
+++ b/data/data_83760F0.s
@@ -15212,36 +15212,25 @@ gUnknown_083F60AC:: @ 83F60AC
.align 2
gUnknown_083F60C0:: @ 83F60C0
- .4byte OtherText_NonstopSuperCool
- .4byte OtherText_Terminator6
- .4byte OtherText_GoodLookingPoke
- .4byte OtherText_Terminator7
- .4byte OtherText_MarvelousGreat
- .4byte OtherText_Terminator8
- .4byte OtherText_CenturyLastVenus
- .4byte OtherText_Terminator9
- .4byte OtherText_Terminator10
- .4byte OtherText_DazzlingSlime
- .4byte OtherText_PokeCenterIdol
- .4byte OtherText_Terminator11
- .4byte OtherText_LovelyAndSweet
- .4byte OtherText_Terminator12
- .4byte OtherText_ThePretty
- .4byte OtherText_WinningPortrait
- .4byte OtherText_GiveUsWink
- .4byte OtherText_Terminator13
- .4byte OtherText_SmartnessMaestro
- .4byte OtherText_Terminator15
- .4byte OtherText_ChosenPokeAmong
- .4byte OtherText_Terminator15
- .4byte OtherText_TheExcellent
- .4byte OtherText_ItsMomentOfElegance
- .4byte OtherText_PowerfullyMuscular
- .4byte OtherText_Terminator16
- .4byte OtherText_StrongErEst
- .4byte OtherText_Terminator17
- .4byte OtherText_MightyTough
- .4byte OtherText_Exclamation
+ .4byte OtherText_NonstopSuperCool, OtherText_Terminator6
+ .4byte OtherText_GoodLookingPoke, OtherText_Terminator7
+ .4byte OtherText_MarvelousGreat, OtherText_Terminator8
+
+ .4byte OtherText_CenturyLastVenus, OtherText_Terminator9
+ .4byte OtherText_Terminator10, OtherText_DazzlingSlime
+ .4byte OtherText_PokeCenterIdol, OtherText_Terminator11
+
+ .4byte OtherText_LovelyAndSweet, OtherText_Terminator12
+ .4byte OtherText_ThePretty, OtherText_WinningPortrait
+ .4byte OtherText_GiveUsWink, OtherText_Terminator13
+
+ .4byte OtherText_SmartnessMaestro, OtherText_Terminator15
+ .4byte OtherText_ChosenPokeAmong, OtherText_Terminator15
+ .4byte OtherText_TheExcellent, OtherText_ItsMomentOfElegance
+
+ .4byte OtherText_PowerfullyMuscular, OtherText_Terminator16
+ .4byte OtherText_StrongErEst, OtherText_Terminator17
+ .4byte OtherText_MightyTough, OtherText_Exclamation
.align 2
gOamData_83F6138:: @ 83F6138
diff --git a/ld_script.txt b/ld_script.txt
index 6423e5d22..cf2f6e29a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -191,7 +191,7 @@ SECTIONS {
src/decoration.o(.text);
asm/decoration.o(.text_80FE868);
asm/slot_machine.o(.text);
- asm/contest_painting.o(.text);
+ src/contest_painting.o(.text);
src/battle_ai.o(.text);
asm/battle_ai.o(.text);
asm/trader.o(.text);
diff --git a/shared_syms.txt b/shared_syms.txt
index d805ebfde..523f1bd22 100644
--- a/shared_syms.txt
+++ b/shared_syms.txt
@@ -8,6 +8,7 @@ unk_2007900 = 0x2007900;
unk_2008000 = 0x2008000;
+unk_2015de0 = 0x2015de0;
unk_2016000 = 0x2016000;
unk_20160BC = 0x20160BC;
diff --git a/src/contest_painting.c b/src/contest_painting.c
new file mode 100644
index 000000000..2e8a73ec4
--- /dev/null
+++ b/src/contest_painting.c
@@ -0,0 +1,1353 @@
+#include "global.h"
+#include "asm.h"
+#include "decompress.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "rng.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "text.h"
+
+#define MOSAIC_BIT_BG_HSIZE (0)
+#define MOSAIC_BIT_BG_VSIZE (4)
+#define MOSAIC_BIT_OBJ_HSIZE (8)
+#define MOSAIC_BIT_OBJ_VSIZE (12)
+
+enum {
+ CONTEST_COOL,
+ CONTEST_BEAUTY,
+ CONTEST_CUTE,
+ CONTEST_SMART,
+ CONTEST_TOUGH,
+};
+
+enum {
+ CONTESTRESULT_COOL = 9,
+ CONTESTRESULT_BEAUTY = 13,
+ CONTESTRESULT_CUTE = 2,
+ CONTESTRESULT_SMART = 36,
+ CONTESTRESULT_TOUGH = 6,
+};
+
+struct ContestEntry {
+ /* 0x00 */ u8 var0;
+ /* 0x04 */ u32 var4;
+ /* 0x08 */ u16 var8;
+ /* 0x0A */ u8 contestType;
+ /* 0x0B */ u8 pokemon_name[POKEMON_NAME_LENGTH];
+ /* 0x15 */ u8 pad15;
+ /* 0x16 */ u8 trainer_name[OT_NAME_LENGTH];
+};
+
+struct Unk3000756 {
+ /* 0x00 */ u8 var_0;
+};
+
+struct LabelPair {
+ u8 (*prefix)[];
+ u8 (*suffix)[];
+};
+
+struct Unk03005E20 {
+ u8 var_0;
+ u8 pad1[3];
+ u16 (*var_4)[][32];
+ u16 (*var_8)[];
+ u8 pad0C[4];
+ u32 var_10;
+ u16 var_14;
+ u16 var_16;
+ u8 var_18;
+ u8 var_19;
+ u8 var_1A;
+ u8 var_1B;
+ u8 var_1C;
+ u8 var_1D;
+ u8 var_1E;
+ u8 var_1F;
+};
+
+extern struct Unk03005E20 gUnknown_03005E20;
+extern u16 (*gUnknown_03005E90)[];
+
+extern u8 gUnknown_03005E40[];
+
+extern u8 unk_2000000[];
+extern u8 unk_2015de0[];
+extern u16 gUnknown_03000752;
+extern u16 gUnknown_03000754;
+extern struct Unk3000756 gUnknown_03000756;
+extern struct ContestEntry *gUnknown_03005E8C;
+
+extern u16 (*gUnknown_03005E10)[32][32];
+
+extern const struct SpriteSheet gMonFrontPicTable[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct SpriteSheet gMonBackPicTable[];
+extern const struct MonCoords gMonBackPicCoords[];
+
+extern void *gUnknown_081FAF4C[];
+
+extern u16 gPictureFramePalettes[];
+
+extern u8 gPictureFrameTiles_0[];
+extern u8 gPictureFrameTiles_1[];
+extern u8 gPictureFrameTiles_2[];
+extern u8 gPictureFrameTiles_3[];
+extern u8 gPictureFrameTiles_4[];
+extern u8 gPictureFrameTiles_5[];
+
+extern u8 gPictureFrameTilemap_0[];
+extern u8 gPictureFrameTilemap_1[];
+extern u8 gPictureFrameTilemap_2[];
+extern u8 gPictureFrameTilemap_3[];
+extern u8 gPictureFrameTilemap_4[];
+extern u8 gPictureFrameTilemap_5[];
+
+extern u8 *gUnknown_083F60AC[];
+extern struct LabelPair gUnknown_083F60C0[];
+extern struct OamData gOamData_83F6138;
+extern u16 gUnknown_083F6140[];
+
+extern u8 gContestText_ContestWinner[];
+extern u8 gOtherText_Unknown1[];
+
+void HoldContestPainting(void);
+void ShowContestPainting();
+void ContestPaintingInitWindow(u8 arg0);
+void ContestPaintingInitVars(u8 arg0);
+void sub_8107090(u8 arg0, u8 arg1);
+void ContestPaintingPrintCaption(u8 arg0, u8 arg1);
+void ContestPaintingInitBG(void);
+void CB2_HoldContestPainting(void);
+void VBlankCB_ContestPainting(void);
+
+void sub_80FC7A0(struct Unk03005E20*);
+void sub_80FDA18(struct Unk03005E20*);
+void sub_80FD8CC(struct Unk03005E20*);
+extern void *species_and_otid_get_pal();
+void sub_8106B90();
+
+__attribute__((naked))
+void sub_8106630(u32 arg0) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r2, _0810665C @ =0x02015de0\n\
+ subs r4, r2, 0x2\n\
+ subs r5, r2, 0x1\n\
+ ldr r3, _08106660 @ =gSaveBlock1\n\
+ subs r0, 0x1\n\
+ lsls r1, r0, 5\n\
+ adds r1, r3\n\
+ ldr r3, _08106664 @ =0x00002dfc\n\
+ adds r1, r3\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r6,r7}\n\
+ stm r2!, {r6,r7}\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ strb r0, [r5]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0810665C: .4byte 0x02015de0\n\
+_08106660: .4byte gSaveBlock1\n\
+_08106664: .4byte 0x00002dfc\n\
+ .syntax divided\n");
+}
+
+void CB2_ContestPainting(void) {
+ ShowContestPainting();
+}
+
+#ifdef NONMATCHING
+void ShowContestPainting(void) {
+ switch (gMain.state) {
+ case 0:
+ remove_some_task();
+ SetVBlankCallback(NULL);
+ gUnknown_03005E8C->data = &unk_2015de0;
+ ContestPaintingInitVars(FALSE);
+ ContestPaintingInitBG();
+ gMain.state += 1;
+ break;
+
+ case 1:
+ ResetPaletteFade();
+
+ // DMA STUFF
+
+ ResetSpriteData();
+ gMain.state += 1;
+ break;
+
+ case 2:
+ SeedRng(gMain.vblankCounter1);
+ InitKeys();
+ ContestPaintingInitWindow(unk_2000000[0x15DDF]);
+ gMain.state += 1;
+ break;
+
+ case 3:
+ sub_8107090(unk_2000000[0x15DDE], unk_2000000[0x15DDF]);
+ gMain.state += 1;
+ break;
+
+ case 4:
+ ContestPaintingPrintCaption(unk_2000000[0x15DDE], unk_2000000[0x15DDF]);
+ LoadPalette(gUnknown_083F6140, 0, 1 * 2);
+ // DMA STUFF
+ BeginFastPaletteFade(2);
+ SetVBlankCallback(VBlankCB_ContestPainting);
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON;
+ SetMainCallback2(CB2_HoldContestPainting);
+ break;
+ }
+}
+#else
+__attribute__((naked))
+void ShowContestPainting(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ ldr r1, _08106694 @ =gMain\n\
+ ldr r2, _08106698 @ =0x0000043c\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r4, r1, 0\n\
+ cmp r0, 0x4\n\
+ bls _08106688\n\
+ b _081067E0\n\
+_08106688:\n\
+ lsls r0, 2\n\
+ ldr r1, _0810669C @ =_081066A0\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08106694: .4byte gMain\n\
+_08106698: .4byte 0x0000043c\n\
+_0810669C: .4byte _081066A0\n\
+ .align 2, 0\n\
+_081066A0:\n\
+ .4byte _081066B4\n\
+ .4byte _081066D8\n\
+ .4byte _08106734\n\
+ .4byte _0810675C\n\
+ .4byte _0810678C\n\
+_081066B4:\n\
+ bl remove_some_task\n\
+ movs r0, 0\n\
+ bl SetVBlankCallback\n\
+ ldr r1, _081066D0 @ =gUnknown_03005E8C\n\
+ ldr r0, _081066D4 @ =0x02015de0\n\
+ str r0, [r1]\n\
+ movs r0, 0x1\n\
+ bl ContestPaintingInitVars\n\
+ bl ContestPaintingInitBG\n\
+ b _0810676E\n\
+ .align 2, 0\n\
+_081066D0: .4byte gUnknown_03005E8C\n\
+_081066D4: .4byte 0x02015de0\n\
+_081066D8:\n\
+ bl ResetPaletteFade\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ movs r3, 0xC0\n\
+ lsls r3, 9\n\
+ movs r5, 0\n\
+ ldr r1, _08106724 @ =0x040000d4\n\
+ movs r4, 0x80\n\
+ lsls r4, 5\n\
+ ldr r6, _08106728 @ =0x85000400\n\
+ movs r7, 0x85\n\
+ lsls r7, 24\n\
+_081066F2:\n\
+ str r5, [sp]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ str r6, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r4\n\
+ subs r3, r4\n\
+ cmp r3, r4\n\
+ bhi _081066F2\n\
+ str r5, [sp]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ lsrs r0, r3, 2\n\
+ orrs r0, r7\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ bl ResetSpriteData\n\
+ ldr r1, _0810672C @ =gMain\n\
+ ldr r2, _08106730 @ =0x0000043c\n\
+ adds r1, r2\n\
+ b _08106774\n\
+ .align 2, 0\n\
+_08106724: .4byte 0x040000d4\n\
+_08106728: .4byte 0x85000400\n\
+_0810672C: .4byte gMain\n\
+_08106730: .4byte 0x0000043c\n\
+_08106734:\n\
+ ldrh r0, [r4, 0x20]\n\
+ bl SeedRng\n\
+ bl InitKeys\n\
+ ldr r0, _08106750 @ =0x02000000\n\
+ ldr r1, _08106754 @ =0x00015ddf\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl ContestPaintingInitWindow\n\
+ ldr r2, _08106758 @ =0x0000043c\n\
+ adds r1, r4, r2\n\
+ b _08106774\n\
+ .align 2, 0\n\
+_08106750: .4byte 0x02000000\n\
+_08106754: .4byte 0x00015ddf\n\
+_08106758: .4byte 0x0000043c\n\
+_0810675C:\n\
+ ldr r1, _0810677C @ =0x02000000\n\
+ ldr r2, _08106780 @ =0x00015dde\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ bl sub_8107090\n\
+_0810676E:\n\
+ ldr r1, _08106784 @ =gMain\n\
+ ldr r0, _08106788 @ =0x0000043c\n\
+ adds r1, r0\n\
+_08106774:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _081067E0\n\
+ .align 2, 0\n\
+_0810677C: .4byte 0x02000000\n\
+_08106780: .4byte 0x00015dde\n\
+_08106784: .4byte gMain\n\
+_08106788: .4byte 0x0000043c\n\
+_0810678C:\n\
+ ldr r1, _081067E8 @ =0x02000000\n\
+ ldr r2, _081067EC @ =0x00015dde\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ bl ContestPaintingPrintCaption\n\
+ ldr r0, _081067F0 @ =gUnknown_083F6140\n\
+ movs r1, 0\n\
+ movs r2, 0x2\n\
+ bl LoadPalette\n\
+ movs r1, 0xA0\n\
+ lsls r1, 19\n\
+ movs r4, 0\n\
+ str r4, [sp]\n\
+ ldr r0, _081067F4 @ =0x040000d4\n\
+ mov r2, sp\n\
+ str r2, [r0]\n\
+ str r1, [r0, 0x4]\n\
+ ldr r1, _081067F8 @ =0x85000100\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ movs r0, 0x2\n\
+ bl BeginFastPaletteFade\n\
+ ldr r0, _081067FC @ =VBlankCB_ContestPainting\n\
+ bl SetVBlankCallback\n\
+ ldr r0, _08106800 @ =gUnknown_03000750\n\
+ strb r4, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 19\n\
+ movs r2, 0x9A\n\
+ lsls r2, 5\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _08106804 @ =CB2_HoldContestPainting\n\
+ bl SetMainCallback2\n\
+_081067E0:\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_081067E8: .4byte 0x02000000\n\
+_081067EC: .4byte 0x00015dde\n\
+_081067F0: .4byte gUnknown_083F6140\n\
+_081067F4: .4byte 0x040000d4\n\
+_081067F8: .4byte 0x85000100\n\
+_081067FC: .4byte VBlankCB_ContestPainting\n\
+_08106800: .4byte gUnknown_03000750\n\
+_08106804: .4byte CB2_HoldContestPainting\n\
+ .syntax divided\n");
+}
+
+#endif
+
+void CB2_HoldContestPainting(void) {
+ HoldContestPainting();
+ UpdatePaletteFade();
+}
+
+void CB2_QuitContestPainting(void) {
+ SetMainCallback2(gMain.savedCallback);
+}
+
+__attribute__((naked))
+void HoldContestPainting(void) {
+ asm(".syntax unified\n\
+ push {lr}\n\
+ sub sp, 0x4\n\
+ ldr r3, _08106844 @ =gUnknown_03000750\n\
+ ldrb r1, [r3]\n\
+ cmp r1, 0x1\n\
+ beq _08106880\n\
+ cmp r1, 0x1\n\
+ bgt _08106848\n\
+ cmp r1, 0\n\
+ beq _0810684E\n\
+ b _081068E6\n\
+ .align 2, 0\n\
+_08106844: .4byte gUnknown_03000750\n\
+_08106848:\n\
+ cmp r1, 0x2\n\
+ beq _081068C0\n\
+ b _081068E6\n\
+_0810684E:\n\
+ ldr r0, _08106874 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0810685E\n\
+ movs r0, 0x1\n\
+ strb r0, [r3]\n\
+_0810685E:\n\
+ ldr r0, _08106878 @ =gUnknown_03000756\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _081068E6\n\
+ ldr r1, _0810687C @ =gUnknown_03000754\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0\n\
+ beq _081068E6\n\
+ subs r0, 0x1\n\
+ b _081068E4\n\
+ .align 2, 0\n\
+_08106874: .4byte gPaletteFade\n\
+_08106878: .4byte gUnknown_03000756\n\
+_0810687C: .4byte gUnknown_03000754\n\
+_08106880:\n\
+ ldr r0, _081068B4 @ =gMain\n\
+ ldrh r2, [r0, 0x2E]\n\
+ ands r1, r2\n\
+ cmp r1, 0\n\
+ bne _08106892\n\
+ movs r0, 0x2\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _081068A4\n\
+_08106892:\n\
+ movs r0, 0x2\n\
+ strb r0, [r3]\n\
+ subs r0, 0x3\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0\n\
+ movs r3, 0x10\n\
+ bl BeginNormalPaletteFade\n\
+_081068A4:\n\
+ ldr r0, _081068B8 @ =gUnknown_03000756\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _081068E6\n\
+ ldr r1, _081068BC @ =gUnknown_03000754\n\
+ movs r0, 0\n\
+ b _081068E4\n\
+ .align 2, 0\n\
+_081068B4: .4byte gMain\n\
+_081068B8: .4byte gUnknown_03000756\n\
+_081068BC: .4byte gUnknown_03000754\n\
+_081068C0:\n\
+ ldr r0, _081068EC @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _081068D2\n\
+ ldr r0, _081068F0 @ =CB2_QuitContestPainting\n\
+ bl SetMainCallback2\n\
+_081068D2:\n\
+ ldr r0, _081068F4 @ =gUnknown_03000756\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _081068E6\n\
+ ldr r1, _081068F8 @ =gUnknown_03000754\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0x1D\n\
+ bhi _081068E6\n\
+ adds r0, 0x1\n\
+_081068E4:\n\
+ strh r0, [r1]\n\
+_081068E6:\n\
+ add sp, 0x4\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_081068EC: .4byte gPaletteFade\n\
+_081068F0: .4byte CB2_QuitContestPainting\n\
+_081068F4: .4byte gUnknown_03000756\n\
+_081068F8: .4byte gUnknown_03000754\n\
+ .syntax divided\n");
+}
+
+void ContestPaintingInitWindow(u8 arg0) {
+ InitMenuWindow(&gWindowConfig_81E7160);
+ SetUpWindowConfig(&gWindowConfig_81E7160);
+}
+
+void ContestPaintingPrintCaption(u8 contestType, u8 arg1) {
+ u8 xPos, yPos;
+ u8 *ptr;
+ u8 type;
+
+ if (arg1 == TRUE) {
+ return;
+ }
+
+ ptr = gUnknown_03005E40;
+ type = gUnknown_03005E8C->contestType;
+ if (contestType < 8) {
+ ptr = StringCopy(ptr, gUnknown_083F60AC[type]);
+ ptr = StringCopy(ptr, gContestText_ContestWinner);
+ ptr = StringCopy(ptr, gUnknown_03005E8C->trainer_name);
+
+ // {ENG}
+ ptr[0] = 0xFC;
+ ptr[1] = 0x16;
+ ptr += 2;
+
+ ptr = StringCopy(ptr, gOtherText_Unknown1);
+ ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
+
+ xPos = 6;
+ yPos = 14;
+ } else {
+ ptr = StringCopy(ptr, *gUnknown_083F60C0[type].prefix);
+ ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
+ ptr = StringCopy(ptr, *gUnknown_083F60C0[type].suffix);
+
+ xPos = 3;
+ yPos = 14;
+ }
+
+ MenuPrint_PixelCoords(gUnknown_03005E40, xPos * 8 + 1, yPos * 8, 1);
+}
+
+void ContestPaintingInitBG(void) {
+ REG_DISPCNT = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_BG0CNT = 0x0C42;
+ REG_BG1CNT = 0x0A45;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+}
+
+void ContestPaintingInitVars(bool8 arg0) {
+ if (arg0 == 0) {
+ gUnknown_03000756.var_0 = FALSE;
+ gUnknown_03000752 = 0;
+ gUnknown_03000754 = 0;
+ } else {
+ gUnknown_03000756.var_0 = TRUE;
+ gUnknown_03000752 = 15;
+ gUnknown_03000754 = 30;
+ }
+}
+
+void ContestPaintingMosaic(void) {
+ if (gUnknown_03000756.var_0 == FALSE) {
+ REG_MOSAIC = 0;
+ return;
+ }
+
+ REG_BG1CNT = 0xA45;
+ gUnknown_03000752 = gUnknown_03000754 / 2;
+
+ REG_MOSAIC = (gUnknown_03000752 << 12) | (gUnknown_03000752 << 8) | (gUnknown_03000752 << 4) | (gUnknown_03000752 << 0);
+}
+
+void VBlankCB_ContestPainting(void) {
+ ContestPaintingMosaic();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+struct MonCoords {
+ u8 x, y;
+};
+
+#ifdef NONMATCHING
+void sub_8106AC4(u16 species, u8 arg1) {
+ void *pal;
+
+ // Unsure what gUnknown_03005E8C->var0 is supposed to be.
+ pal = species_and_otid_get_pal(species, gUnknown_03005E8C->var4, gUnknown_03005E8C->var0);
+ LZDecompressVram(pal, gUnknown_03005E90);
+
+ if (arg1 == 1) {
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].x,
+ gMonFrontPicCoords[species].y,
+ 0x2000000,
+ gUnknown_081FAF4C[1],
+ species,
+ (u32) gUnknown_03005E8C->var0
+ );
+ sub_8106B90(gUnknown_081FAF4C[1], gUnknown_03005E90, gUnknown_03005E10);
+ } else {
+ HandleLoadSpecialPokePic(
+ &gMonBackPicTable[species],
+ gMonBackPicCoords[species].x,
+ gMonBackPicCoords[species].y,
+ 0x2000000,
+ gUnknown_081FAF4C[0],
+ species,
+ (u32) gUnknown_03005E8C->var0
+ );
+ sub_8106B90(gUnknown_081FAF4C[0], gUnknown_03005E90, gUnknown_03005E10);
+ }
+}
+#else
+__attribute__((naked))
+void sub_8106AC4(u16 arg0, u8 arg2) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ adds r4, r1, 0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
+ ldr r0, [r7]\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r2, [r0]\n\
+ adds r0, r6, 0\n\
+ bl species_and_otid_get_pal\n\
+ ldr r1, _08106B2C @ =gUnknown_03005E90\n\
+ mov r8, r1\n\
+ ldr r1, [r1]\n\
+ bl LZDecompressVram\n\
+ cmp r4, 0\n\
+ bne _08106B40\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B30 @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4, 0x4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r2, r8\n\
+ ldr r1, [r2]\n\
+ ldr r0, _08106B3C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
+ b _08106B74\n\
+ .align 2, 0\n\
+_08106B28: .4byte gUnknown_03005E8C\n\
+_08106B2C: .4byte gUnknown_03005E90\n\
+_08106B30: .4byte gMonFrontPicTable\n\
+_08106B34: .4byte gMonFrontPicCoords\n\
+_08106B38: .4byte gUnknown_081FAF4C\n\
+_08106B3C: .4byte gUnknown_03005E10\n\
+_08106B40:\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B80 @ =gMonBackPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B84 @ =gMonBackPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r0, r8\n\
+ ldr r1, [r0]\n\
+ ldr r0, _08106B8C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
+_08106B74:\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08106B80: .4byte gMonBackPicTable\n\
+_08106B84: .4byte gMonBackPicCoords\n\
+_08106B88: .4byte gUnknown_081FAF4C\n\
+_08106B8C: .4byte gUnknown_03005E10\n\
+ .syntax divided\n");
+}
+#endif
+
+__attribute__((naked))
+void sub_8106B90() {
+ 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\
+ mov r10, r0\n\
+ mov r9, r1\n\
+ str r2, [sp]\n\
+ movs r0, 0\n\
+_08106BA4:\n\
+ movs r3, 0\n\
+ adds r1, r0, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0x8]\n\
+_08106BAE:\n\
+ movs r1, 0\n\
+ adds r2, r3, 0x1\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r3\n\
+ lsls r0, 5\n\
+ mov r12, r0\n\
+ lsls r4, r3, 3\n\
+_08106BBE:\n\
+ movs r3, 0\n\
+ lsls r0, r1, 2\n\
+ adds r6, r1, 0x1\n\
+ mov r2, r12\n\
+ adds r5, r2, r0\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r1\n\
+ lsls r0, 7\n\
+ ldr r1, [sp]\n\
+ adds r2, r0, r1\n\
+_08106BD2:\n\
+ lsrs r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ add r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08106BE6\n\
+ lsrs r1, 4\n\
+ b _08106BEA\n\
+_08106BE6:\n\
+ movs r0, 0xF\n\
+ ands r1, r0\n\
+_08106BEA:\n\
+ cmp r1, 0\n\
+ bne _08106BFC\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ movs r7, 0x80\n\
+ lsls r7, 8\n\
+ adds r1, r7, 0\n\
+ b _08106C08\n\
+_08106BFC:\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ ldrh r1, [r1]\n\
+_08106C08:\n\
+ strh r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BD2\n\
+ lsls r0, r6, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x7\n\
+ bls _08106BBE\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BAE\n\
+ ldr r2, [sp, 0x4]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x7\n\
+ bls _08106BA4\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 {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+#ifdef NONMATCHING
+void sub_8106C40(u8 arg0, u8 arg1) {
+ LoadPalette(gPictureFramePalettes, 0, 128 * 2);
+
+ if (arg1 == 1) {
+ switch (gUnknown_03005E8C->contestType / 3) {
+ case CONTEST_COOL:
+ RLUnCompVram(gPictureFrameTiles_0, (void *) VRAM);
+ RLUnCompWram(gPictureFrameTilemap_0, gUnknown_03005E10);
+ break;
+
+ case CONTEST_BEAUTY:
+ RLUnCompVram(gPictureFrameTiles_1, (void *) VRAM);
+ RLUnCompWram(gPictureFrameTilemap_1, gUnknown_03005E10);
+ break;
+
+ case CONTEST_CUTE:
+ RLUnCompVram(gPictureFrameTiles_2, (void *) VRAM);
+ RLUnCompWram(gPictureFrameTilemap_2, gUnknown_03005E10);
+ break;
+
+ case CONTEST_SMART:
+ RLUnCompVram(gPictureFrameTiles_3, (void *) VRAM);
+ RLUnCompWram(gPictureFrameTilemap_3, gUnknown_03005E10);
+ break;
+
+ case CONTEST_TOUGH:
+ RLUnCompVram(gPictureFrameTiles_4, (void *) VRAM);
+ RLUnCompWram(gPictureFrameTilemap_4, gUnknown_03005E10);
+ break;
+ }
+
+ {
+ u8 x;
+ u8 y;
+
+ u16 (*vram)[32][32] = (void *) (VRAM + 0x6000);
+
+ // Set the background
+ for (y = 0; y < 20; y++) {
+ for (x = 0; x < 32; x++) {
+ (*vram)[y][x] = 1 << 12 | 21;
+ }
+ }
+
+ // Copy the image frame
+ for (y = 0; y < 10; y++) {
+ for (x = 0; x < 18; x++) {
+ (*vram)[y + 2][x + 6] = (*gUnknown_03005E10)[y + 2][x + 6];
+ }
+ }
+
+ // Re-set the entire top row to the first top frame part
+ for (x = 0; x < 16; x++) {
+ (*vram)[2][x + 7] = (*gUnknown_03005E10)[2][7];
+ }
+ }
+
+ // def_8106C7A
+ } else {
+ if (arg0 < 8) {
+ RLUnCompVram(gPictureFrameTiles_5, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTilemap_5, (void *) (VRAM + 0x6000));
+ return;
+ }
+
+ switch (gUnknown_03005E8C->contestType / 3) {
+ case CONTEST_COOL:
+ RLUnCompVram(gPictureFrameTiles_0, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTilemap_0, (void *) (VRAM + 0x6000));
+ break;
+
+ case CONTEST_BEAUTY:
+ RLUnCompVram(gPictureFrameTiles_1, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTilemap_1, (void *) (VRAM + 0x6000));
+ break;
+
+ case CONTEST_CUTE:
+ RLUnCompVram(gPictureFrameTiles_2, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTilemap_2, (void *) (VRAM + 0x6000));
+ break;
+
+ case CONTEST_SMART:
+ RLUnCompVram(gPictureFrameTiles_3, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTilemap_3, (void *) (VRAM + 0x6000));
+ break;
+
+ case CONTEST_TOUGH:
+ RLUnCompVram(gPictureFrameTiles_4, (void *) VRAM);
+ RLUnCompVram(gPictureFrameTilemap_4, (void *) (VRAM + 0x6000));
+ break;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_8106C40(u8 arg0, u8 arg1) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r4, r1, 0\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r0, _08106C7C @ =gPictureFramePalettes\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ movs r1, 0\n\
+ bl LoadPalette\n\
+ cmp r4, 0x1\n\
+ beq _08106C5E\n\
+ b _08106DB4\n\
+_08106C5E:\n\
+ ldr r0, _08106C80 @ =gUnknown_03005E8C\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0xA]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x4\n\
+ bhi _08106D1C\n\
+ lsls r0, 2\n\
+ ldr r1, _08106C84 @ =_08106C88\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08106C7C: .4byte gPictureFramePalettes\n\
+_08106C80: .4byte gUnknown_03005E8C\n\
+_08106C84: .4byte _08106C88\n\
+ .align 2, 0\n\
+_08106C88:\n\
+ .4byte _08106C9C\n\
+ .4byte _08106CB4\n\
+ .4byte _08106CCC\n\
+ .4byte _08106CE4\n\
+ .4byte _08106D08\n\
+_08106C9C:\n\
+ ldr r0, _08106CAC @ =gPictureFrameTiles_0\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106CB0 @ =gPictureFrameTilemap_0\n\
+ b _08106CF0\n\
+ .align 2, 0\n\
+_08106CAC: .4byte gPictureFrameTiles_0\n\
+_08106CB0: .4byte gPictureFrameTilemap_0\n\
+_08106CB4:\n\
+ ldr r0, _08106CC4 @ =gPictureFrameTiles_1\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106CC8 @ =gPictureFrameTilemap_1\n\
+ b _08106CF0\n\
+ .align 2, 0\n\
+_08106CC4: .4byte gPictureFrameTiles_1\n\
+_08106CC8: .4byte gPictureFrameTilemap_1\n\
+_08106CCC:\n\
+ ldr r0, _08106CDC @ =gPictureFrameTiles_2\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106CE0 @ =gPictureFrameTilemap_2\n\
+ b _08106CF0\n\
+ .align 2, 0\n\
+_08106CDC: .4byte gPictureFrameTiles_2\n\
+_08106CE0: .4byte gPictureFrameTilemap_2\n\
+_08106CE4:\n\
+ ldr r0, _08106CFC @ =gPictureFrameTiles_3\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106D00 @ =gPictureFrameTilemap_3\n\
+_08106CF0:\n\
+ ldr r1, _08106D04 @ =gUnknown_03005E10\n\
+ ldr r1, [r1]\n\
+ bl RLUnCompWram\n\
+ b _08106D1C\n\
+ .align 2, 0\n\
+_08106CFC: .4byte gPictureFrameTiles_3\n\
+_08106D00: .4byte gPictureFrameTilemap_3\n\
+_08106D04: .4byte gUnknown_03005E10\n\
+_08106D08:\n\
+ ldr r0, _08106D98 @ =gPictureFrameTiles_4\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106D9C @ =gPictureFrameTilemap_4\n\
+ ldr r1, _08106DA0 @ =gUnknown_03005E10\n\
+ ldr r1, [r1]\n\
+ bl RLUnCompWram\n\
+_08106D1C:\n\
+ movs r1, 0\n\
+ ldr r5, _08106DA4 @ =0x06006000\n\
+ ldr r0, _08106DA8 @ =0x00001015\n\
+ adds r4, r0, 0\n\
+_08106D24:\n\
+ movs r3, 0\n\
+ lsls r2, r1, 5\n\
+_08106D28:\n\
+ adds r0, r2, r3\n\
+ lsls r0, 1\n\
+ adds r0, r5\n\
+ strh r4, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x1F\n\
+ bls _08106D28\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x13\n\
+ bls _08106D24\n\
+ movs r1, 0\n\
+ ldr r0, _08106DAC @ =0x0600608c\n\
+ mov r12, r0\n\
+ ldr r7, _08106DA0 @ =gUnknown_03005E10\n\
+_08106D4C:\n\
+ movs r3, 0\n\
+ adds r6, r1, 0x1\n\
+ lsls r5, r1, 5\n\
+ lsls r4, r1, 6\n\
+_08106D54:\n\
+ adds r2, r5, r3\n\
+ lsls r2, 1\n\
+ add r2, r12\n\
+ ldr r0, [r7]\n\
+ adds r0, r4, r0\n\
+ lsls r1, r3, 1\n\
+ adds r0, r1\n\
+ adds r0, 0x8C\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r2]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x11\n\
+ bls _08106D54\n\
+ lsls r0, r6, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x9\n\
+ bls _08106D4C\n\
+ movs r3, 0\n\
+ ldr r4, _08106DB0 @ =0x0600608e\n\
+ ldr r2, _08106DA0 @ =gUnknown_03005E10\n\
+_08106D80:\n\
+ lsls r1, r3, 1\n\
+ adds r1, r4\n\
+ ldr r0, [r2]\n\
+ adds r0, 0x8E\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0xF\n\
+ bls _08106D80\n\
+ b _08106E86\n\
+ .align 2, 0\n\
+_08106D98: .4byte gPictureFrameTiles_4\n\
+_08106D9C: .4byte gPictureFrameTilemap_4\n\
+_08106DA0: .4byte gUnknown_03005E10\n\
+_08106DA4: .4byte 0x06006000\n\
+_08106DA8: .4byte 0x00001015\n\
+_08106DAC: .4byte 0x0600608c\n\
+_08106DB0: .4byte 0x0600608e\n\
+_08106DB4:\n\
+ cmp r5, 0x7\n\
+ bhi _08106DD0\n\
+ ldr r0, _08106DC8 @ =gPictureFrameTiles_5\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106DCC @ =gPictureFrameTilemap_5\n\
+ b _08106E60\n\
+ .align 2, 0\n\
+_08106DC8: .4byte gPictureFrameTiles_5\n\
+_08106DCC: .4byte gPictureFrameTilemap_5\n\
+_08106DD0:\n\
+ ldr r0, _08106DF0 @ =gUnknown_03005E8C\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0xA]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x4\n\
+ bhi _08106E86\n\
+ lsls r0, 2\n\
+ ldr r1, _08106DF4 @ =_08106DF8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08106DF0: .4byte gUnknown_03005E8C\n\
+_08106DF4: .4byte _08106DF8\n\
+ .align 2, 0\n\
+_08106DF8:\n\
+ .4byte _08106E0C\n\
+ .4byte _08106E24\n\
+ .4byte _08106E3C\n\
+ .4byte _08106E54\n\
+ .4byte _08106E74\n\
+_08106E0C:\n\
+ ldr r0, _08106E1C @ =gPictureFrameTiles_0\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106E20 @ =gPictureFrameTilemap_0\n\
+ b _08106E60\n\
+ .align 2, 0\n\
+_08106E1C: .4byte gPictureFrameTiles_0\n\
+_08106E20: .4byte gPictureFrameTilemap_0\n\
+_08106E24:\n\
+ ldr r0, _08106E34 @ =gPictureFrameTiles_1\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106E38 @ =gPictureFrameTilemap_1\n\
+ b _08106E60\n\
+ .align 2, 0\n\
+_08106E34: .4byte gPictureFrameTiles_1\n\
+_08106E38: .4byte gPictureFrameTilemap_1\n\
+_08106E3C:\n\
+ ldr r0, _08106E4C @ =gPictureFrameTiles_2\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106E50 @ =gPictureFrameTilemap_2\n\
+ b _08106E60\n\
+ .align 2, 0\n\
+_08106E4C: .4byte gPictureFrameTiles_2\n\
+_08106E50: .4byte gPictureFrameTilemap_2\n\
+_08106E54:\n\
+ ldr r0, _08106E68 @ =gPictureFrameTiles_3\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106E6C @ =gPictureFrameTilemap_3\n\
+_08106E60:\n\
+ ldr r1, _08106E70 @ =0x06006000\n\
+ bl RLUnCompVram\n\
+ b _08106E86\n\
+ .align 2, 0\n\
+_08106E68: .4byte gPictureFrameTiles_3\n\
+_08106E6C: .4byte gPictureFrameTilemap_3\n\
+_08106E70: .4byte 0x06006000\n\
+_08106E74:\n\
+ ldr r0, _08106E8C @ =gPictureFrameTiles_4\n\
+ movs r1, 0xC0\n\
+ lsls r1, 19\n\
+ bl RLUnCompVram\n\
+ ldr r0, _08106E90 @ =gPictureFrameTilemap_4\n\
+ ldr r1, _08106E94 @ =0x06006000\n\
+ bl RLUnCompVram\n\
+_08106E86:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08106E8C: .4byte gPictureFrameTiles_4\n\
+_08106E90: .4byte gPictureFrameTilemap_4\n\
+_08106E94: .4byte 0x06006000\n\
+ .syntax divided\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_8106E98(u8 arg0 ) {
+ gMain.oamBuffer[0] = gOamData_83F6138;
+
+ gMain.oamBuffer[0].tileNum = 0;
+ gMain.oamBuffer[0].x = 88;
+ gMain.oamBuffer[0].y = 24;
+}
+#else
+__attribute__((naked))
+void sub_8106E98(u8 arg0) {
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r4, _08106ED0 @ =gMain\n\
+ ldr r1, _08106ED4 @ =gOamData_83F6138\n\
+ ldr r2, [r1, 0x4]\n\
+ ldr r1, [r1]\n\
+ str r1, [r4, 0x3C]\n\
+ str r2, [r4, 0x40]\n\
+ adds r3, r4, 0\n\
+ adds r3, 0x40\n\
+ ldrh r2, [r3]\n\
+ ldr r1, _08106ED8 @ =0xfffffc00\n\
+ ands r1, r2\n\
+ strh r1, [r3]\n\
+ ldrh r1, [r4, 0x3E]\n\
+ ldr r0, _08106EDC @ =0xfffffe00\n\
+ ands r0, r1\n\
+ movs r1, 0x58\n\
+ orrs r0, r1\n\
+ strh r0, [r4, 0x3E]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x3C\n\
+ movs r0, 0x18\n\
+ strb r0, [r1]\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08106ED0: .4byte gMain\n\
+_08106ED4: .4byte gOamData_83F6138\n\
+_08106ED8: .4byte 0xfffffc00\n\
+_08106EDC: .4byte 0xfffffe00\n\
+ .syntax divided\n");
+}
+#endif
+
+u8 sub_8106EE0(u8 arg0) {
+ u8 contestType;
+
+ if (arg0 < 8) {
+ contestType = gUnknown_03005E8C->contestType;
+ } else {
+ contestType = gUnknown_03005E8C->contestType / 3;
+ }
+
+ switch (contestType) {
+ case CONTEST_COOL:
+ return CONTESTRESULT_COOL;
+
+ case CONTEST_BEAUTY:
+ return CONTESTRESULT_BEAUTY;
+
+ case CONTEST_CUTE:
+ return CONTESTRESULT_CUTE;
+
+ case CONTEST_SMART:
+ return CONTESTRESULT_SMART;
+
+ case CONTEST_TOUGH:
+ return CONTESTRESULT_TOUGH;
+ }
+
+ return contestType;
+}
+
+#ifdef NONMATCHING
+void sub_8106F4C(void) {
+ gUnknown_03005E90 = (void *) 0x02017e00;
+ gUnknown_03005E10 = (void *) 0x02015e00;
+}
+#else
+__attribute__((naked))
+void sub_8106F4C(void) {
+ asm(".syntax unified\n\
+ ldr r0, _08106F5C @ =gUnknown_03005E90\n\
+ ldr r1, _08106F60 @ =0x02017e00\n\
+ str r1, [r0]\n\
+ ldr r0, _08106F64 @ =gUnknown_03005E10\n\
+ ldr r2, _08106F68 @ =0xffffe000\n\
+ adds r1, r2\n\
+ str r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
+_08106F5C: .4byte gUnknown_03005E90\n\
+_08106F60: .4byte 0x02017e00\n\
+_08106F64: .4byte gUnknown_03005E10\n\
+_08106F68: .4byte 0xffffe000\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8106F6C(u8 arg0) {
+ gUnknown_03005E20.var_4 = gUnknown_03005E10;
+ gUnknown_03005E20.var_8 = gUnknown_03005E90;
+ gUnknown_03005E20.var_18 = 0;
+ gUnknown_03005E20.var_1F = gUnknown_03005E8C->var0;
+ gUnknown_03005E20.var_19 = 0;
+ gUnknown_03005E20.var_1A = 0;
+ gUnknown_03005E20.var_1B = 64;
+ gUnknown_03005E20.var_1C = 64;
+ gUnknown_03005E20.var_1D = 64;
+ gUnknown_03005E20.var_1E = 64;
+
+ switch (arg0) {
+ case CONTESTRESULT_SMART:
+ case CONTESTRESULT_TOUGH:
+ gUnknown_03005E20.var_14 = 3;
+ break;
+
+ case CONTESTRESULT_COOL:
+ case CONTESTRESULT_BEAUTY:
+ case CONTESTRESULT_CUTE:
+ default:
+ gUnknown_03005E20.var_14 = 1;
+ break;
+ }
+
+ gUnknown_03005E20.var_16 = 2;
+ gUnknown_03005E20.var_0 = arg0;
+ gUnknown_03005E20.var_10 = 0x6010000;
+
+ sub_80FC7A0(&gUnknown_03005E20);
+ sub_80FDA18(&gUnknown_03005E20);
+ sub_80FD8CC(&gUnknown_03005E20);
+
+ LoadPalette(gUnknown_03005E90, 256, 256 * 2);
+}
+
+void sub_8107090(u8 arg0, u8 arg1) {
+ u8 local0;
+
+ sub_8106F4C();
+ sub_8106AC4(gUnknown_03005E8C->var8, 0);
+
+ local0 = sub_8106EE0(arg0);
+ sub_8106F6C(local0);
+
+ sub_8106E98(arg0);
+ sub_8106C40(arg0, arg1);
+}