summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest.s7728
-rw-r--r--asm/contest_ai.s34
-rw-r--r--asm/contest_link_80F57C4.s98
-rw-r--r--asm/contest_link_80FC4F4.s32
-rw-r--r--asm/contest_link_81D9DE4.s18
-rw-r--r--asm/easy_chat.s1266
-rw-r--r--asm/field_player_avatar.s1274
-rw-r--r--asm/pokemon_storage_system.s1533
-rw-r--r--asm/script_pokemon_util_80F87D8.s46
-rw-r--r--asm/slot_machine.s3129
-rw-r--r--common_syms/contest.txt1
-rw-r--r--data/contest.s2
-rw-r--r--data/event_scripts.s2
-rw-r--r--data/field_player_avatar.s58
-rw-r--r--data/graphics.s4
-rw-r--r--data/pokemon_storage_system.s12
-rw-r--r--data/slot_machine.s90
-rw-r--r--data/specials.inc2
-rw-r--r--include/battle_anim.h2
-rw-r--r--include/contest.h405
-rw-r--r--include/contest_effect.h22
-rw-r--r--include/contest_link_80F57C4.h1
-rw-r--r--include/contest_link_80FC4F4.h8
-rw-r--r--include/data2.h1
-rw-r--r--include/event_object_movement.h2
-rw-r--r--include/event_scripts.h4
-rw-r--r--include/field_player_avatar.h18
-rw-r--r--include/gba/types.h11
-rw-r--r--include/global.h2
-rw-r--r--include/global.tv.h4
-rw-r--r--include/link.h1
-rw-r--r--include/main_menu.h1
-rw-r--r--include/pc_screen_effect.h16
-rw-r--r--include/pokemon_storage_system.h72
-rw-r--r--include/rotating_gate.h1
-rw-r--r--include/script_pokemon_util_80F87D8.h7
-rw-r--r--include/slot_machine.h2
-rw-r--r--include/strings.h4
-rw-r--r--include/tv.h1
-rw-r--r--ld_script.txt6
-rw-r--r--src/contest.c2761
-rw-r--r--src/easy_chat.c807
-rw-r--r--src/field_player_avatar.c581
-rw-r--r--src/pokemon_storage_system.c523
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/slot_machine.c1366
-rw-r--r--src/tv.c4
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt58
49 files changed, 7065 insertions, 14961 deletions
diff --git a/asm/contest.s b/asm/contest.s
index 978421c3d..6504e7bf1 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -5,7588 +5,6 @@
.text
- thumb_func_start TaskDummy1
-TaskDummy1: @ 80D7668
- bx lr
- thumb_func_end TaskDummy1
-
- thumb_func_start ResetLinkContestBoolean
-ResetLinkContestBoolean: @ 80D766C
- ldr r1, =gUnknown_02039F2A
- movs r0, 0
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end ResetLinkContestBoolean
-
- thumb_func_start sub_80D7678
-sub_80D7678: @ 80D7678
- push {r4,lr}
- movs r0, 0
- movs r1, 0x40
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r4, =0x00003f3f
- movs r0, 0x48
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x4A
- adds r1, r4, 0
- bl SetGpuReg
- movs r1, 0xFE
- lsls r1, 7
- movs r0, 0
- bl SetGpuRegBits
- ldr r0, =gBattle_BG0_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG0_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG1_X
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG3_X
- strh r1, [r0]
- ldr r0, =gBattle_BG3_Y
- strh r1, [r0]
- ldr r0, =gBattle_WIN0H
- strh r1, [r0]
- ldr r0, =gBattle_WIN0V
- strh r1, [r0]
- ldr r0, =gBattle_WIN1H
- strh r1, [r0]
- ldr r0, =gBattle_WIN1V
- strh r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7678
-
- thumb_func_start LoadContestBgAfterMoveAnim
-LoadContestBgAfterMoveAnim: @ 80D7724
- push {r4,r5,lr}
- ldr r0, =gUnknown_08C17AB0
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, =gUnknown_08C1850C
- ldr r1, =0x06002000
- bl LZDecompressVram
- ldr r1, =gUnknown_08C16FA8
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_08C16E90
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadCompressedPalette
- bl sub_80D782C
- movs r4, 0
- movs r5, 0xA0
-_080D775E:
- ldr r0, =gHeap+0x1A004
- adds r0, r5, r0
- ldr r1, =gUnknown_02039F26
- adds r1, r4, r1
- ldrb r1, [r1]
- adds r1, 0x5
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- adds r5, 0x20
- adds r4, 0x1
- cmp r4, 0x3
- ble _080D775E
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end LoadContestBgAfterMoveAnim
-
- thumb_func_start sub_80D779C
-sub_80D779C: @ 80D779C
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_08587F34
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0x3
- movs r1, 0x6
- movs r2, 0x1
- bl SetBgAttribute
- movs r4, 0
-_080D77BA:
- lsls r0, r4, 24
- lsrs r0, 24
- ldr r1, =gContestResources
- ldr r1, [r1]
- lsls r2, r4, 2
- adds r1, 0x24
- adds r1, r2
- ldr r1, [r1]
- bl SetBgTilemapBuffer
- adds r4, 0x1
- cmp r4, 0x3
- ble _080D77BA
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D779C
-
- thumb_func_start sub_80D77E4
-sub_80D77E4: @ 80D77E4
- push {lr}
- ldr r0, =gUnknown_08587F44
- bl InitWindows
- bl DeactivateAllTextPrinters
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D7818
- ldr r2, =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- b _080D7822
- .pool
-_080D7818:
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
-_080D7822:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D77E4
-
- thumb_func_start sub_80D782C
-sub_80D782C: @ 80D782C
- push {r4,r5,lr}
- ldr r0, =gUnknown_08587C30
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- movs r5, 0xA
- movs r4, 0xFA
- lsls r4, 16
-_080D7848:
- lsrs r1, r4, 16
- ldr r0, =gPlttBufferUnfaded + 0x1E2
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x1
- cmp r5, 0xD
- ble _080D7848
- ldr r0, =0x00007e3f
- movs r1, 0xF3
- movs r2, 0x2
- bl FillPalette
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D782C
-
- thumb_func_start sub_80D787C
-sub_80D787C: @ 80D787C
- push {r4-r7,lr}
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0x5C
- bl memset
- movs r5, 0
- movs r2, 0xFF
-_080D7890:
- ldr r0, [r4]
- ldr r1, [r0]
- adds r1, 0x2
- adds r1, r5
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- adds r5, 0x1
- cmp r5, 0x3
- ble _080D7890
- movs r4, 0
- ldr r6, =gContestResources
- movs r5, 0x3
-_080D78AA:
- ldr r0, [r6]
- ldr r0, [r0, 0x4]
- adds r0, r4, r0
- movs r1, 0
- movs r2, 0x1C
- bl memset
- adds r4, 0x1C
- subs r5, 0x1
- cmp r5, 0
- bge _080D78AA
- ldr r4, =gContestResources
- movs r7, 0x4
- negs r7, r7
- movs r6, 0xFF
- movs r3, 0
- movs r5, 0x3
-_080D78CC:
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- adds r1, r3, r1
- ldrb r2, [r1, 0xB]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1, 0xB]
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- adds r1, r3, r1
- ldrb r0, [r1, 0x13]
- orrs r0, r6
- strb r0, [r1, 0x13]
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- adds r1, r3, r1
- ldrb r0, [r1, 0x14]
- orrs r0, r6
- strb r0, [r1, 0x14]
- adds r3, 0x1C
- subs r5, 0x1
- cmp r5, 0
- bge _080D78CC
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- movs r1, 0
- movs r2, 0x14
- bl memset
- ldr r0, [r4]
- ldr r0, [r0, 0xC]
- movs r1, 0
- movs r2, 0x44
- bl memset
- ldr r2, [r4]
- ldr r1, [r2, 0x10]
- movs r0, 0
- str r0, [r1]
- ldr r0, [r2, 0x14]
- movs r1, 0
- movs r2, 0x10
- bl memset
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080D7938
- movs r0, 0
- bl sub_80DCE58
-_080D7938:
- movs r5, 0
- adds r2, r4, 0
- movs r6, 0xFF
- movs r3, 0
- ldr r4, =gUnknown_02039F26
-_080D7942:
- ldr r0, [r2]
- ldr r1, [r0, 0x4]
- adds r1, r3, r1
- ldrb r0, [r1, 0x19]
- orrs r0, r6
- strb r0, [r1, 0x19]
- ldr r0, [r2]
- ldr r1, [r0]
- adds r1, 0x14
- adds r1, r5
- adds r0, r5, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1C
- adds r5, 0x1
- cmp r5, 0x3
- ble _080D7942
- bl sub_80DD590
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0, 0x1C]
- movs r1, 0
- movs r2, 0x40
- bl memset
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D787C
-
- thumb_func_start sub_80D7988
-sub_80D7988: @ 80D7988
- push {r4,r5,lr}
- ldr r4, =gContestResources
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x5C
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1]
- movs r0, 0x70
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x4]
- movs r0, 0x14
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x8]
- movs r0, 0x44
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0xC]
- movs r0, 0x10
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x10]
- movs r0, 0x10
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x14]
- movs r0, 0x14
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x18]
- movs r0, 0x40
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x1C]
- movs r0, 0xC
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x20]
- movs r5, 0x80
- lsls r5, 5
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x24]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x28]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x2C]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x30]
- movs r5, 0x80
- lsls r5, 4
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x34]
- adds r0, r5, 0
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x38]
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- ldr r2, [r4]
- str r0, [r2, 0x3C]
- ldr r1, =gUnknown_0202305C
- str r0, [r1]
- ldr r1, =gUnknown_02023060
- ldr r0, [r2, 0x28]
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7988
-
- thumb_func_start sub_80D7A5C
-sub_80D7A5C: @ 80D7A5C
- push {r4,r5,lr}
- ldr r5, =gContestResources
- ldr r0, [r5]
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- movs r4, 0
- str r4, [r0]
- ldr r0, [r0, 0x4]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x4]
- ldr r0, [r0, 0x8]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x8]
- ldr r0, [r0, 0xC]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0xC]
- ldr r0, [r0, 0x10]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x10]
- ldr r0, [r0, 0x14]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x14]
- ldr r0, [r0, 0x18]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x18]
- ldr r0, [r0, 0x1C]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x1C]
- ldr r0, [r0, 0x20]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x20]
- ldr r0, [r0, 0x24]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x24]
- ldr r0, [r0, 0x28]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x28]
- ldr r0, [r0, 0x2C]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x2C]
- ldr r0, [r0, 0x30]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x30]
- ldr r0, [r0, 0x34]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x34]
- ldr r0, [r0, 0x38]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x38]
- ldr r0, [r0, 0x3C]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x3C]
- bl Free
- str r4, [r5]
- ldr r0, =gUnknown_0202305C
- str r4, [r0]
- ldr r0, =gUnknown_02023060
- str r4, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7A5C
-
- thumb_func_start sub_80D7B24
-sub_80D7B24: @ 80D7B24
- push {r4-r6,lr}
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r6, r0, r1
- ldrb r5, [r6]
- cmp r5, 0x1
- beq _080D7BD4
- cmp r5, 0x1
- bgt _080D7B44
- cmp r5, 0
- beq _080D7B4E
- b _080D7C56
- .pool
-_080D7B44:
- cmp r5, 0x2
- beq _080D7BDA
- cmp r5, 0x3
- beq _080D7C04
- b _080D7C56
-_080D7B4E:
- ldr r0, =gUnknown_02039F38
- strb r5, [r0]
- bl sub_80D7988
- bl AllocateMonSpritesGfx
- ldr r4, =gMonSpritesGfxPtr
- ldr r0, [r4]
- ldr r0, [r0]
- bl Free
- ldr r0, [r4]
- str r5, [r0]
- movs r0, 0x80
- lsls r0, 7
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- bl sub_80D779C
- bl sub_80D77E4
- bl sub_80D7678
- bl ScanlineEffect_Clear
- bl ResetPaletteFade
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- bl ResetSpriteData
- bl ResetTasks
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, =gHeap
- movs r1, 0xD0
- lsls r1, 9
- adds r0, r1
- strb r5, [r0]
- bl ClearBattleMonForms
- bl sub_80D787C
- b _080D7BF6
- .pool
-_080D7BD4:
- movs r0, 0x2
- strb r0, [r6]
- b _080D7C56
-_080D7BDA:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- adds r0, 0x59
- bl sub_80D7E44
- lsls r0, 24
- cmp r0, 0
- beq _080D7C56
- ldr r0, [r4]
- ldr r0, [r0]
- adds r0, 0x59
- movs r1, 0
- strb r1, [r0]
-_080D7BF6:
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _080D7C56
- .pool
-_080D7C04:
- bl sub_80DE224
- ldr r0, =gBattle_BG1_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- movs r0, 0x2
- bl BeginFastPaletteFade
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, =vblank_cb_battle
- bl SetVBlankCallback
- ldr r0, =sub_80D7C7C
- movs r1, 0xA
- bl CreateTask
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r1, [r1]
- strb r0, [r1, 0x8]
- ldr r0, =sub_80D823C
- bl SetMainCallback2
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080D7C56
- bl sub_800E0E8
- movs r0, 0x8
- movs r1, 0x8
- bl CreateWirelessStatusIndicatorSprite
-_080D7C56:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7B24
-
- thumb_func_start sub_80D7C7C
-sub_80D7C7C: @ 80D7C7C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080D7CA2
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- strh r2, [r1, 0x8]
- ldr r0, =sub_80D7CB4
- str r0, [r1]
-_080D7CA2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7C7C
-
- thumb_func_start sub_80D7CB4
-sub_80D7CB4: @ 80D7CB4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D7D90
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080D7D3A
- ldr r2, =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r4, r0, r2
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- adds r6, r1, 0
- cmp r0, 0x1
- beq _080D7D04
- cmp r0, 0x1
- bgt _080D7CF4
- cmp r0, 0
- beq _080D7CFA
- b _080D7D3A
- .pool
-_080D7CF4:
- cmp r0, 0x2
- beq _080D7D28
- b _080D7D3A
-_080D7CFA:
- bl sub_80DBF68
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080D7D04:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080D7D9E
- bl sub_800ADF8
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080D7D9E
- .pool
-_080D7D28:
- bl sub_800A520
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080D7D9E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080D7D3A:
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080D7D9E
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080D7D62
- bl sub_80DBF68
-_080D7D62:
- ldr r0, =sub_80D7DAC
- movs r1, 0
- bl CreateTask
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- ldr r1, =TaskDummy1
- str r1, [r0]
- b _080D7D9E
- .pool
-_080D7D90:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D80C8
- str r0, [r1]
-_080D7D9E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7CB4
-
- thumb_func_start sub_80D7DAC
-sub_80D7DAC: @ 80D7DAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =sub_80FC998
- ldr r2, =sub_80D7DC8
- bl SetTaskFuncWithFollowupFunc
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7DAC
-
- thumb_func_start sub_80D7DC8
-sub_80D7DC8: @ 80D7DC8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
- ldr r0, =sub_80D7DE8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80D7DC8
-
- thumb_func_start sub_80D7DE8
-sub_80D7DE8: @ 80D7DE8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r5
- ldrh r1, [r0, 0x8]
- subs r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- cmp r1, 0
- bgt _080D7E2A
- bl GetMultiplayerId
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x8]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- ldr r1, =sub_80D80C8
- str r1, [r0]
- ldr r1, =gRngValue
- ldr r0, =gUnknown_030060B8
- ldr r0, [r0]
- str r0, [r1]
-_080D7E2A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D7DE8
-
- thumb_func_start sub_80D7E44
-sub_80D7E44: @ 80D7E44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x40
- mov r10, r0
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _080D7E5A
- b _080D80A4
-_080D7E5A:
- lsls r0, 2
- ldr r1, =_080D7E68
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080D7E68:
- .4byte _080D7E84
- .4byte _080D7EC8
- .4byte _080D7ED8
- .4byte _080D7F28
- .4byte _080D7F40
- .4byte _080D7F7C
- .4byte _080D8004
-_080D7E84:
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r1, 0xC0
- lsls r1, 19
- movs r4, 0x80
- lsls r4, 8
- movs r0, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldr r1, =0x06008000
- movs r0, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldr r1, =0x06010000
- movs r0, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl RequestDma3Fill
- b _080D80AE
- .pool
-_080D7EC8:
- ldr r0, =gUnknown_08C17AB0
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- b _080D80AE
- .pool
-_080D7ED8:
- ldr r0, =gUnknown_08C1850C
- ldr r4, =0x06002000
- adds r1, r4, 0
- bl LZDecompressVram
- ldr r3, =gHeap+0x18000
- movs r5, 0x80
- lsls r5, 6
- ldr r1, =0x040000d4
- ldr r6, =0x84000400
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x84
- lsls r7, 24
-_080D7EF4:
- str r4, [r1]
- str r3, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r4, r2
- adds r3, r2
- subs r5, r2
- cmp r5, r2
- bhi _080D7EF4
- str r4, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r5, 2
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- b _080D80AE
- .pool
-_080D7F28:
- ldr r1, =gUnknown_08C16FA8
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _080D80AE
- .pool
-_080D7F40:
- ldr r1, =gUnknown_08C17170
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r1, [r0, 0x2C]
- ldr r2, =gHeap+0x1AA04
- ldr r0, =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, =0x84000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _080D80AE
- .pool
-_080D7F7C:
- ldr r0, =gUnknown_08C16E90
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadCompressedPalette
- ldr r5, =gPlttBufferUnfaded + 0x100
- ldr r6, =0x04000008
- adds r0, r5, 0
- mov r1, sp
- adds r2, r6, 0
- bl CpuSet
- ldr r0, =gUnknown_02039F25
- mov r9, r0
- ldrb r0, [r0]
- adds r0, 0x5
- lsls r0, 5
- ldr r1, =0xffffff00
- adds r1, r5
- mov r8, r1
- add r0, r8
- add r4, sp, 0x20
- adds r1, r4, 0
- adds r2, r6, 0
- bl CpuSet
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl CpuSet
- mov r2, r9
- ldrb r1, [r2]
- adds r1, 0x5
- lsls r1, 5
- add r1, r8
- mov r0, sp
- adds r2, r6, 0
- bl CpuSet
- ldr r1, =gHeap+0x1A004
- ldr r0, =0x040000d4
- mov r2, r8
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, =0x84000080
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl sub_80D782C
- b _080D80AE
- .pool
-_080D8004:
- bl sub_80DD04C
- bl sub_80DBF90
- bl sub_80DB2BC
- bl sub_80DB120
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r1, [r1]
- movs r4, 0
- strb r0, [r1, 0x12]
- bl sub_80DC2BC
- bl sub_80DC4F0
- bl sub_80DC594
- bl sub_80DC5E8
- bl sub_80DC7EC
- ldr r1, =gBattlerPositions
- strb r4, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r3, 0x3
- strb r3, [r1, 0x2]
- movs r2, 0x2
- strb r2, [r1, 0x3]
- ldr r0, =gBattleTypeFlags
- str r4, [r0]
- ldr r4, =gBattlerAttacker
- strb r2, [r4]
- ldr r0, =gBattlerTarget
- strb r3, [r0]
- bl sub_80DB0C4
- ldr r2, =gBattlerSpriteIds
- ldrb r1, [r4]
- adds r1, r2
- strb r0, [r1]
- bl sub_80DEA20
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- b _080D80AE
- .pool
-_080D80A4:
- movs r0, 0
- mov r1, r10
- strb r0, [r1]
- movs r0, 0x1
- b _080D80B8
-_080D80AE:
- mov r2, r10
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- movs r0, 0
-_080D80B8:
- add sp, 0x40
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80D7E44
-
- thumb_func_start sub_80D80C8
-sub_80D80C8: @ 80D80C8
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gPaletteFade
- ldrb r2, [r1, 0x8]
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r1, 0x8]
- ldrb r1, [r1, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080D80F8
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- strh r2, [r1, 0x8]
- strh r2, [r1, 0xA]
- ldr r0, =sub_80D8108
- str r0, [r1]
-_080D80F8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D80C8
-
- thumb_func_start sub_80D8108
-sub_80D8108: @ 80D8108
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bhi _080D8208
- lsls r0, 2
- ldr r1, =_080D8138
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080D8138:
- .4byte _080D814C
- .4byte _080D8176
- .4byte _080D8194
- .4byte _080D81B0
- .4byte _080D8208
-_080D814C:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r2
- ldrh r0, [r4, 0xA]
- adds r1, r0, 0x1
- strh r1, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _080D822C
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x61
- movs r1, 0
- bl PlaySE12WithPanning
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D822C
-_080D8176:
- ldr r1, =gBattle_BG1_Y
- ldrh r0, [r1]
- adds r0, 0x7
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA0
- ble _080D822C
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- b _080D81FA
- .pool
-_080D8194:
- bl sub_80DE350
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _080D822C
- .pool
-_080D81B0:
- movs r0, 0x8
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- movs r0, 0xC
- bl GetGpuReg
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r3, sp
- ldrb r2, [r3]
- movs r1, 0x4
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- ldrb r0, [r4]
- ands r1, r0
- strb r1, [r4]
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x8
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0xC
- bl SetGpuReg
- bl sub_80DDB0C
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
-_080D81FA:
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080D822C
- .pool
-_080D8208:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080D822C
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- strh r1, [r0, 0x8]
- strh r1, [r0, 0xA]
- ldr r1, =sub_80D833C
- str r1, [r0]
-_080D822C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8108
-
- thumb_func_start sub_80D823C
-sub_80D823C: @ 80D823C
- push {r4,r5,lr}
- bl AnimateSprites
- bl RunTasks
- bl BuildOamBuffer
- bl UpdatePaletteFade
- movs r4, 0
-_080D8250:
- ldr r5, =gUnknown_02039F38
- ldrb r0, [r5]
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D8266
- lsls r0, r4, 24
- lsrs r0, 24
- bl CopyBgTilemapBufferToVram
-_080D8266:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080D8250
- movs r0, 0
- strb r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D823C
-
- thumb_func_start vblank_cb_battle
-vblank_cb_battle: @ 80D827C
- push {lr}
- ldr r0, =gBattle_BG0_X
- ldrh r1, [r0]
- movs r0, 0x10
- bl SetGpuReg
- ldr r0, =gBattle_BG0_Y
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- ldr r0, =gBattle_BG1_X
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- ldr r0, =gBattle_BG1_Y
- ldrh r1, [r0]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, =gBattle_BG2_X
- ldrh r1, [r0]
- movs r0, 0x18
- bl SetGpuReg
- ldr r0, =gBattle_BG2_Y
- ldrh r1, [r0]
- movs r0, 0x1A
- bl SetGpuReg
- ldr r0, =gBattle_BG3_X
- ldrh r1, [r0]
- movs r0, 0x1C
- bl SetGpuReg
- ldr r0, =gBattle_BG3_Y
- ldrh r1, [r0]
- movs r0, 0x1E
- bl SetGpuReg
- ldr r0, =gBattle_WIN0H
- ldrh r1, [r0]
- movs r0, 0x40
- bl SetGpuReg
- ldr r0, =gBattle_WIN0V
- ldrh r1, [r0]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, =gBattle_WIN1H
- ldrh r1, [r0]
- movs r0, 0x42
- bl SetGpuReg
- ldr r0, =gBattle_WIN1V
- ldrh r1, [r0]
- movs r0, 0x46
- bl SetGpuReg
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl ScanlineEffect_InitHBlankDmaTransfer
- pop {r0}
- bx r0
- .pool
- thumb_func_end vblank_cb_battle
-
- thumb_func_start sub_80D833C
-sub_80D833C: @ 80D833C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _080D840C
- ldr r0, =gBattle_BG0_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- bl sub_80DCD48
- ldr r1, =gPlttBufferUnfaded
- ldr r2, =gHeap+0x1A204
- ldr r0, =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, =0x84000100
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, =gStringVar1
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r1, [r1]
- ldrb r1, [r1, 0x1]
- adds r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- bl sub_80DBCA8
- lsls r0, 24
- cmp r0, 0
- bne _080D83CC
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_0827D507
- bl StringCopy
- b _080D83D4
- .pool
-_080D83CC:
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_0827D531
- bl StringCopy
-_080D83D4:
- bl sub_80DB89C
- ldr r4, =gStringVar4
- ldr r1, =gDisplayedStringBattle
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _080D841A
- .pool
-_080D840C:
- bl sub_80DED4C
- cmp r0, 0
- bne _080D841A
- strh r0, [r4, 0x8]
- ldr r0, =sub_80D8424
- str r0, [r4]
-_080D841A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D833C
-
- thumb_func_start sub_80D8424
-sub_80D8424: @ 80D8424
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080D843C
- cmp r1, 0x2
- bne _080D8482
-_080D843C:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- bl sub_80DBCA8
- lsls r0, 24
- cmp r0, 0
- bne _080D8474
- movs r0, 0x1
- bl sub_80DC490
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D8490
- b _080D8480
- .pool
-_080D8474:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D8894
-_080D8480:
- str r0, [r1]
-_080D8482:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8424
-
- thumb_func_start sub_80D8490
-sub_80D8490: @ 80D8490
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gBattle_BG0_Y
- movs r1, 0xA0
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- movs r6, 0
- ldr r0, =gUnknown_02039F25
- mov r8, r0
- ldr r2, =gUnknown_02039E00 + 30
- mov r10, r2
- ldr r7, =gContestResources
-_080D84B8:
- lsls r1, r6, 1
- mov r0, r8
- ldrb r2, [r0]
- lsls r0, r2, 6
- adds r1, r0
- add r1, r10
- ldrh r4, [r1]
- add r5, sp, 0x4
- ldr r0, [r7]
- ldr r1, [r0, 0x4]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x8]
- cmp r0, 0
- beq _080D853C
- adds r0, r2, 0
- bl sub_80DE1E8
- lsls r0, 24
- cmp r0, 0
- beq _080D853C
- ldr r0, [r7]
- mov r2, r8
- ldrb r1, [r2]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x8]
- adds r1, r4, 0
- bl AreMovesContestCombo
- lsls r0, 24
- cmp r0, 0
- beq _080D853C
- ldr r0, [r7]
- mov r2, r8
- ldrb r1, [r2]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D853C
- add r0, sp, 0x4
- ldr r1, =gText_ColorLightShadowDarkGrey
- b _080D8566
- .pool
-_080D853C:
- cmp r4, 0
- beq _080D856C
- ldr r0, [r7]
- mov r2, r8
- ldrb r1, [r2]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x8]
- cmp r0, r4
- bne _080D856C
- ldr r0, =gContestMoves
- lsls r1, r4, 3
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x3
- beq _080D856C
- add r0, sp, 0x4
- ldr r1, =gText_ColorBlue
-_080D8566:
- bl StringCopy
- adds r5, r0, 0
-_080D856C:
- movs r0, 0xD
- adds r1, r4, 0
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- adds r0, r5, 0
- bl StringCopy
- adds r4, r6, 0x5
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x7
- str r0, [sp]
- adds r0, r4, 0
- add r1, sp, 0x4
- movs r2, 0x5
- movs r3, 0x1
- bl sub_80DEBD0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _080D84B8
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D880C
- ldr r2, =gUnknown_02039E00
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- bl prints_contest_move_description
- ldr r1, =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80D8610
- str r1, [r0]
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8490
-
- thumb_func_start sub_80D8610
-sub_80D8610: @ 80D8610
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- ldr r3, =gMain
- ldr r1, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, 0x1E
- adds r1, r0, r1
- movs r2, 0x3
-_080D8628:
- ldrh r0, [r1]
- cmp r0, 0
- beq _080D8634
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080D8634:
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080D8628
- ldrh r0, [r3, 0x2E]
- movs r5, 0x1
- ands r5, r0
- cmp r5, 0
- beq _080D8670
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D8894
- str r0, [r1]
- b _080D87FA
- .pool
-_080D8670:
- ldrh r0, [r3, 0x30]
- cmp r0, 0x20
- bne _080D8678
- b _080D87FA
-_080D8678:
- cmp r0, 0x20
- bgt _080D8682
- cmp r0, 0x2
- beq _080D868E
- b _080D87FA
-_080D8682:
- cmp r0, 0x40
- beq _080D8730
- cmp r0, 0x80
- bne _080D868C
- b _080D879C
-_080D868C:
- b _080D87FA
-_080D868E:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_80DC490
- ldr r0, =gStringVar1
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r1, [r1]
- ldrb r1, [r1, 0x1]
- adds r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- bl sub_80DBCA8
- lsls r0, 24
- cmp r0, 0
- bne _080D86DC
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_0827D507
- bl StringCopy
- b _080D86E4
- .pool
-_080D86DC:
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_0827D531
- bl StringCopy
-_080D86E4:
- bl sub_80DB89C
- ldr r4, =gStringVar4
- ldr r1, =gDisplayedStringBattle
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- bl sub_80DEC30
- ldr r0, =gBattle_BG0_Y
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80D8424
- str r1, [r0]
- b _080D87FA
- .pool
-_080D8730:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D883C
- ldr r0, [r4]
- ldr r1, [r0]
- ldrb r0, [r1]
- cmp r0, 0
- bne _080D8754
- subs r0, r6, 0x1
- b _080D8756
- .pool
-_080D8754:
- subs r0, 0x1
-_080D8756:
- strb r0, [r1]
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D880C
- ldr r2, =gUnknown_02039E00
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- bl prints_contest_move_description
- cmp r6, 0x1
- bls _080D87FA
- movs r0, 0x5
- bl PlaySE
- b _080D87FA
- .pool
-_080D879C:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D883C
- ldr r0, [r4]
- ldr r1, [r0]
- ldrb r2, [r1]
- subs r0, r6, 0x1
- cmp r2, r0
- bne _080D87C0
- strb r5, [r1]
- b _080D87C4
- .pool
-_080D87C0:
- adds r0, r2, 0x1
- strb r0, [r1]
-_080D87C4:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- bl sub_80D880C
- ldr r2, =gUnknown_02039E00
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- lsls r0, 6
- adds r1, r0
- adds r2, 0x1E
- adds r1, r2
- ldrh r0, [r1]
- bl prints_contest_move_description
- cmp r6, 0x1
- bls _080D87FA
- movs r0, 0x5
- bl PlaySE
-_080D87FA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8610
-
- thumb_func_start sub_80D880C
-sub_80D880C: @ 80D880C
- push {lr}
- sub sp, 0x10
- adds r3, r0, 0
- lsls r3, 25
- movs r0, 0xF8
- lsls r0, 21
- adds r3, r0
- lsrs r3, 24
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x37
- movs r2, 0
- bl sub_80DECB8
- add sp, 0x10
- pop {r0}
- bx r0
- thumb_func_end sub_80D880C
-
- thumb_func_start sub_80D883C
-sub_80D883C: @ 80D883C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- asrs r4, 23
- adds r3, r4, 0
- adds r3, 0x1F
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- mov r8, r0
- str r0, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r6, 0x11
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r1, 0xB
- movs r2, 0
- bl sub_80DECB8
- adds r4, 0x20
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0xB
- movs r2, 0
- adds r3, r4, 0
- bl sub_80DECB8
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80D883C
-
- thumb_func_start sub_80D8894
-sub_80D8894: @ 80D8894
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D890C
- ldr r4, =gUnknown_02039F25
- ldrb r0, [r4]
- bl sub_80DB8B8
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldrb r2, [r4]
- ldr r3, [r1, 0x4]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r3
- strh r0, [r1, 0x6]
- ldr r4, =sub_80FC9F8
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =sub_80D892C
- adds r1, r4, 0
- bl SetTaskFuncWithFollowupFunc
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =TaskDummy1
- str r1, [r0]
- bl sub_80DBF68
- movs r0, 0
- bl sub_80DC490
- b _080D891E
- .pool
-_080D890C:
- bl sub_80DB918
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D895C
- str r0, [r1]
-_080D891E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8894
-
- thumb_func_start sub_80D892C
-sub_80D892C: @ 80D892C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r2, =gTasks
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x8]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, =sub_80D895C
- str r1, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D892C
-
- thumb_func_start sub_80D895C
-sub_80D895C: @ 80D895C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- bl sub_80DB89C
- ldr r0, =gBattle_BG0_Y
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- movs r0, 0
- bl sub_80DC490
- movs r6, 0
- movs r5, 0xA0
- lsls r5, 19
-_080D897C:
- lsrs r4, r5, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x80
- lsls r0, 17
- adds r5, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _080D897C
- movs r0, 0
- bl sub_80DED60
- ldr r1, =gPlttBufferFaded
- ldr r0, =gHeap+0x1A604
- movs r2, 0x80
- lsls r2, 3
- ldr r4, =0x040000d4
- str r1, [r4]
- str r0, [r4, 0x4]
- lsrs r1, r2, 2
- movs r3, 0x84
- lsls r3, 24
- orrs r1, r3
- str r1, [r4, 0x8]
- ldr r1, [r4, 0x8]
- ldr r1, =0xfffffc00
- adds r0, r1
- movs r1, 0
- bl LoadPalette
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- strh r1, [r0, 0xA]
- ldr r1, =sub_80D8A04
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D895C
-
- thumb_func_start sub_80D8A04
-sub_80D8A04: @ 80D8A04
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080D8A42
- movs r0, 0
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080D8A42
- bl sub_80DDBE8
- movs r0, 0x1
- bl sub_80DE69C
- ldr r0, =sub_80D8A50
- str r0, [r4]
-_080D8A42:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8A04
-
- thumb_func_start sub_80D8A50
-sub_80D8A50: @ 80D8A50
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrh r1, [r0, 0x6]
- movs r0, 0x90
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _080D8A76
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D8A88
- str r0, [r1]
-_080D8A76:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8A50
-
- thumb_func_start sub_80D8A88
-sub_80D8A88: @ 80D8A88
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gTasks
- lsls r3, r6, 2
- adds r1, r3, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080D8B18
- ldr r2, =gContestResources
- ldr r0, [r2]
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x10]
- ldr r0, [r2]
- ldr r1, [r0]
- ldr r0, =gRngValue
- ldr r0, [r0]
- str r0, [r1, 0x18]
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- adds r7, r3, 0
- cmp r0, 0
- beq _080D8B08
- bl sub_80DA8A4
- lsls r0, 24
- cmp r0, 0
- beq _080D8B08
- movs r4, 0
- ldr r1, =gUnknown_02039F30
- ldrb r0, [r1]
- cmp r0, 0x3
- bgt _080D8B08
- adds r5, r1, 0
-_080D8ADE:
- ldrb r0, [r5]
- adds r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl sub_80DB8B8
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldrb r2, [r5]
- adds r2, r4
- ldr r3, [r1, 0x4]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r3
- strh r0, [r1, 0x6]
- adds r4, 0x1
- ldrb r0, [r5]
- adds r0, r4, r0
- cmp r0, 0x3
- ble _080D8ADE
-_080D8B08:
- ldr r1, =gTasks
- adds r0, r7, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- ldr r1, =sub_80D8B38
- str r1, [r0]
-_080D8B18:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80D8A88
-
- thumb_func_start sub_80D8B38
-sub_80D8B38: @ 80D8B38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gContestResources
- ldr r0, [r2]
- ldr r0, [r0]
- ldrb r6, [r0, 0x11]
- ldr r1, =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r4, 0x8
- ldrsh r0, [r0, r4]
- mov r9, r2
- adds r4, r1, 0
- cmp r0, 0x3B
- bls _080D8B6E
- bl _080DA100
-_080D8B6E:
- lsls r0, 2
- ldr r1, =_080D8B84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080D8B84:
- .4byte _080D8C74
- .4byte _080D8D30
- .4byte _080D8D56
- .4byte _080D8DC4
- .4byte _080D8E7C
- .4byte _080D8EC8
- .4byte _080D8F84
- .4byte _080D8FB8
- .4byte _080D9010
- .4byte _080D908C
- .4byte _080D9FC0
- .4byte _080D9FEC
- .4byte _080D9238
- .4byte _080D926C
- .4byte _080D9774
- .4byte _080D9864
- .4byte _080D98D4
- .4byte _080D9904
- .4byte _080D99EC
- .4byte _080D999E
- .4byte _080DA024
- .4byte _080DA0A0
- .4byte _080DA0C2
- .4byte _080D90B4
- .4byte _080D9180
- .4byte _080D9388
- .4byte _080D939E
- .4byte _080D947C
- .4byte _080D94A0
- .4byte _080D9508
- .4byte _080D95EC
- .4byte _080DA038
- .4byte _080DA080
- .4byte _080D9EBC
- .4byte _080D9F48
- .4byte _080D929A
- .4byte _080D92D0
- .4byte _080D92F6
- .4byte _080D9334
- .4byte _080D955C
- .4byte _080D95C4
- .4byte _080D9A2C
- .4byte _080DA100
- .4byte _080D9DAC
- .4byte _080DA100
- .4byte _080D9830
- .4byte _080D997C
- .4byte _080D921A
- .4byte _080D91A4
- .4byte _080D91F4
- .4byte _080D935C
- .4byte _080D9690
- .4byte _080D971C
- .4byte _080D9BAA
- .4byte _080D9C68
- .4byte _080D9F68
- .4byte _080D9F84
- .4byte _080D9DD4
- .4byte _080D9E60
- .4byte _080D9EA0
-_080D8C74:
- bl sub_80DCD48
- movs r7, 0
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r1, 0x10]
- mov r5, r8
- lsls r5, 2
- mov r10, r5
- ldrb r2, [r0]
- cmp r1, r2
- beq _080D8C9C
- adds r2, r0, 0
-_080D8C92:
- adds r7, 0x1
- adds r0, r2, r7
- ldrb r0, [r0]
- cmp r1, r0
- bne _080D8C92
-_080D8C9C:
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r0, [r0]
- strb r7, [r0, 0x11]
- ldr r0, [r4]
- ldr r2, [r0]
- ldrb r6, [r2, 0x11]
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080D8D14
- ldrb r0, [r2, 0x7]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x7]
- bl sub_80DA8A4
- lsls r0, 24
- cmp r0, 0
- beq _080D8CD4
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0, 0x11]
- bl sub_80DD080
-_080D8CD4:
- ldr r4, =sub_80FCC88
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =sub_80DA110
- adds r1, r4, 0
- bl SetTaskFuncWithFollowupFunc
- bl sub_80DBF68
- ldr r1, =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- bl _080DA100
- .pool
-_080D8D14:
- adds r0, r6, 0
- bl sub_80DD080
- ldr r0, =gTasks
- mov r1, r10
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x2
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D8D30:
- mov r3, r9
- ldr r0, [r3]
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D8D44
- bl _080DA100
-_080D8D44:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D8D56:
- adds r0, r6, 0
- bl sub_80DF080
- bl sub_80DF750
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r2, r0, r1
- ldrb r1, [r2, 0xC]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- bne _080D8D86
- ldrb r1, [r2, 0xB]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _080D8DA4
-_080D8D86:
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1F
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D8DA4:
- bl sub_80DB89C
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- strh r6, [r1, 0x1C]
- movs r0, 0x3
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D8DC4:
- mov r4, r8
- lsls r4, 2
- mov r10, r4
- ldr r1, =gBattleMonForms
- movs r2, 0
- adds r0, r1, 0x3
-_080D8DD0:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _080D8DD0
- movs r7, 0x4
- mov r5, r9
- ldr r0, [r5]
- ldr r0, [r0, 0x18]
- movs r1, 0
- movs r2, 0x14
- bl memset
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r0, [r0, 0x11]
- bl sub_80DE9DC
- ldr r4, =gUnknown_02039E00
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r3, [r0, 0x11]
- lsls r2, r3, 6
- adds r0, r2, r4
- ldrh r0, [r0]
- adds r1, r4, 0
- adds r1, 0x3C
- adds r1, r2, r1
- ldr r1, [r1]
- adds r4, 0x38
- adds r2, r4
- ldr r2, [r2]
- bl sub_80DB174
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r3, r0, r2
- movs r1, 0x78
- strh r1, [r3, 0x24]
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =sub_80DA134
- str r1, [r0]
- ldr r0, =gTasks
- mov r4, r10
- add r4, r8
- lsls r4, 3
- adds r4, r0
- strh r5, [r4, 0xC]
- ldr r1, =gBattlerSpriteIds
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- adds r0, r1
- strb r5, [r0]
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0]
- ldrb r0, [r0, 0x11]
- bl sub_80DC9EC
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_80DCBE8
- strh r7, [r4, 0x8]
- bl _080DA100
- .pool
-_080D8E7C:
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r2, r0, r4
- ldrb r5, [r2, 0xC]
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- ldr r0, =SpriteCallbackDummy
- cmp r1, r0
- beq _080D8EA0
- bl _080DA100
-_080D8EA0:
- mov r3, r9
- ldr r0, [r3]
- ldr r1, [r0, 0x14]
- lsls r0, r6, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080D8EB8
- bl _080DA100
-_080D8EB8:
- movs r0, 0x5
- strh r0, [r2, 0x8]
- bl _080DA100
- .pool
-_080D8EC8:
- mov r5, r9
- ldr r0, [r5]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r5, r0, 2
- adds r1, r5, r1
- ldrb r1, [r1, 0xC]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D8EF2
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x21
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D8EF2:
- bl sub_80DB89C
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- mov r2, r9
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r3, r5, r0
- ldrh r1, [r3, 0x6]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bhi _080D8F38
- ldr r0, =gStringVar2
- adds r2, r1, 0
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- b _080D8F48
- .pool
-_080D8F38:
- ldr r0, =gStringVar2
- ldr r2, =gUnknown_08587F1C
- ldrb r1, [r3, 0xA]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
-_080D8F48:
- ldr r4, =gStringVar4
- ldr r1, =gText_0827D55A
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x6
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D8F84:
- bl sub_80DED4C
- adds r1, r0, 0
- cmp r1, 0
- beq _080D8F92
- bl _080DA100
-_080D8F92:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0x5A
- strb r1, [r0]
- ldr r1, =gTasks
- mov r4, r8
- lsls r0, r4, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x7
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D8FB8:
- mov r5, r9
- ldr r1, [r5]
- ldr r0, [r1]
- ldrb r2, [r0, 0x11]
- ldr r1, [r1, 0x4]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x6]
- bl sub_80DE834
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r0, [r0, 0x11]
- bl sub_80DE864
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r0, [r0, 0x11]
- bl sub_80DE9DC
- adds r0, r4, 0
- bl sub_80DEAA8
- adds r0, r4, 0
- bl DoMoveAnim
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D9010:
- ldr r0, =gAnimScriptCallback
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, =gAnimScriptActive
- ldrb r4, [r0]
- cmp r4, 0
- beq _080D9024
- bl _080DA100
-_080D9024:
- adds r0, r6, 0
- bl sub_80DE9B0
- ldr r0, =gContestResources
- ldr r1, [r0]
- ldr r0, [r1]
- adds r0, 0x5A
- ldrb r0, [r0]
- cmp r0, 0
- beq _080D9060
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- strh r4, [r1, 0x1C]
- movs r0, 0x9
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D9060:
- ldr r1, [r1, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080D907A
- adds r0, r6, 0
- bl sub_80DC674
-_080D907A:
- bl sub_80DE12C
- ldr r0, =gTasks
- mov r4, r8
- lsls r1, r4, 2
- b _080D9192
- .pool
-_080D908C:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r2, r0, r4
- ldrh r0, [r2, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r2, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- bgt _080D90A8
- bl _080DA100
-_080D90A8:
- movs r0, 0
- strh r0, [r2, 0x1C]
- movs r0, 0x7
- strh r0, [r2, 0x8]
- bl _080DA100
-_080D90B4:
- mov r0, r8
- lsls r2, r0, 2
- adds r0, r2, r0
- lsls r0, 3
- adds r7, r0, r4
- movs r0, 0
- strh r0, [r7, 0xA]
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- mov r12, r0
- lsls r1, r6, 3
- subs r0, r1, r6
- lsls r5, r0, 2
- mov r0, r12
- adds r3, r5, r0
- ldrb r0, [r3, 0x13]
- mov r10, r2
- str r1, [sp, 0x4]
- cmp r0, 0xFF
- beq _080D90FA
- ldrb r1, [r3, 0x13]
- adds r0, r6, 0
- bl sub_80DD45C
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- adds r0, r5, r0
- movs r1, 0xFF
- strb r1, [r0, 0x13]
- movs r0, 0x18
- strh r0, [r7, 0x8]
- bl _080DA100
-_080D90FA:
- ldrb r0, [r3, 0x14]
- cmp r0, 0xFF
- beq _080D9178
- movs r7, 0
- cmp r7, r6
- beq _080D910E
- mov r2, r12
- ldrb r0, [r2, 0x13]
- cmp r0, 0xFF
- bne _080D912C
-_080D910E:
- adds r7, 0x1
- cmp r7, 0x3
- bgt _080D912C
- cmp r7, r6
- beq _080D910E
- mov r3, r9
- ldr r0, [r3]
- ldr r1, [r0, 0x4]
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x13]
- cmp r0, 0xFF
- beq _080D910E
-_080D912C:
- cmp r7, 0x4
- bne _080D9168
- mov r4, r9
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- ldr r5, [sp, 0x4]
- subs r4, r5, r6
- lsls r4, 2
- adds r0, r4, r0
- ldrb r1, [r0, 0x14]
- adds r0, r6, 0
- bl sub_80DD45C
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- adds r4, r0
- movs r0, 0xFF
- strb r0, [r4, 0x14]
- ldr r1, =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x18
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D9168:
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x30
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D9178:
- movs r0, 0x30
- strh r0, [r7, 0x8]
- bl _080DA100
-_080D9180:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D918C
- bl _080DA100
-_080D918C:
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
-_080D9192:
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x17
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D91A4:
- mov r3, r9
- ldr r0, [r3]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x11]
- movs r3, 0x3
- ands r3, r0
- cmp r3, 0x1
- bne _080D91C4
- movs r0, 0x5
- bl sub_80DD720
- b _080D91DA
-_080D91C4:
- cmp r3, 0x2
- bne _080D91D0
- movs r0, 0x6
- bl sub_80DD720
- b _080D91DA
-_080D91D0:
- cmp r3, 0x3
- bne _080D9208
- movs r0, 0x7
- bl sub_80DD720
-_080D91DA:
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x31
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D91F4:
- mov r3, r9
- ldr r0, [r3]
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D9208
- bl _080DA100
-_080D9208:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x2F
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D921A:
- movs r0, 0x1
- bl sub_80DE008
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0xC
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D9238:
- mov r3, r9
- ldr r0, [r3]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- movs r0, 0
- adds r2, r6, 0
- bl sub_80DC028
- ldr r1, =gTasks
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0xD
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D926C:
- mov r0, r9
- ldr r1, [r0]
- ldr r0, [r1]
- ldrb r0, [r0, 0x11]
- ldr r1, [r1, 0x14]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D9288
- bl _080DA100
-_080D9288:
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x23
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D929A:
- mov r2, r9
- ldr r0, [r2]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x10]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0x10
- bne _080D92B8
- movs r0, 0x8
- bl sub_80DD720
-_080D92B8:
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x24
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D92D0:
- mov r5, r9
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D92E4
- bl _080DA100
-_080D92E4:
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x25
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D92F6:
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_80DB5B8
- lsls r0, 24
- cmp r0, 0
- beq _080D9320
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- movs r1, 0x26
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D9320:
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- b _080D9354
- .pool
-_080D9334:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r4
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bgt _080D9350
- bl _080DA100
-_080D9350:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_080D9354:
- movs r0, 0x32
- strh r0, [r1, 0x8]
- bl _080DA100
-_080D935C:
- adds r0, r6, 0
- bl sub_80DB798
- lsls r0, 24
- cmp r0, 0
- beq _080D936E
- movs r0, 0x63
- bl PlaySE
-_080D936E:
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x19
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D9388:
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0xA]
- movs r1, 0x1A
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D939E:
- movs r3, 0
- movs r5, 0
- str r5, [sp]
- mov r0, r8
- lsls r1, r0, 2
- adds r0, r1, r0
- lsls r0, 3
- adds r0, r4
- movs r2, 0xA
- ldrsh r7, [r0, r2]
- mov r10, r1
- cmp r7, 0x3
- bgt _080D9418
- ldr r5, =gUnknown_02039F26
- ldr r2, =gContestResources
-_080D93BC:
- movs r3, 0
- str r3, [sp]
- adds r0, r3, 0
- cmp r0, r6
- beq _080D93E4
- ldrb r0, [r5]
- cmp r0, r7
- bne _080D93E4
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- ldrb r0, [r0, 0x13]
- cmp r0, 0xFF
- beq _080D93E4
- movs r1, 0x1
- str r1, [sp]
- b _080D940C
- .pool
-_080D93E4:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _080D940C
- cmp r3, r6
- beq _080D93E4
- adds r0, r3, r5
- ldrb r0, [r0]
- cmp r0, r7
- bne _080D93E4
- ldr r0, [r2]
- ldr r1, [r0, 0x4]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x13]
- cmp r0, 0xFF
- beq _080D93E4
- movs r0, 0x1
- str r0, [sp]
-_080D940C:
- ldr r1, [sp]
- cmp r1, 0
- bne _080D9422
- adds r7, 0x1
- cmp r7, 0x3
- ble _080D93BC
-_080D9418:
- ldr r2, [sp]
- lsls r0, r2, 24
- asrs r2, r0, 24
- cmp r2, 0
- beq _080D9464
-_080D9422:
- mov r5, r10
- add r5, r8
- lsls r5, 3
- adds r5, r4
- ldr r0, =gUnknown_02039F26
- adds r0, r3, r0
- ldrb r0, [r0]
- strh r0, [r5, 0xA]
- lsls r0, r3, 24
- lsrs r0, 24
- mov r4, r9
- ldr r1, [r4]
- ldr r1, [r1, 0x4]
- lsls r4, r3, 3
- subs r4, r3
- lsls r4, 2
- adds r1, r4, r1
- ldrb r1, [r1, 0x13]
- bl sub_80DD45C
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- adds r4, r0
- movs r0, 0xFF
- strb r0, [r4, 0x13]
- movs r0, 0x1B
- strh r0, [r5, 0x8]
- bl _080DA100
- .pool
-_080D9464:
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r4
- strh r2, [r0, 0xA]
- strh r2, [r0, 0x1C]
- movs r1, 0x33
- strh r1, [r0, 0x8]
- bl sub_80DB884
- bl _080DA100
-_080D947C:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9488
- bl _080DA100
-_080D9488:
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1C
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D94A0:
- movs r7, 0
- mov r3, r8
- lsls r0, r3, 2
- adds r1, r0, r3
- lsls r1, 3
- adds r1, r4
- movs r4, 0xA
- ldrsh r2, [r1, r4]
- ldr r1, =gUnknown_02039F26
- mov r10, r0
- adds r5, r1, 0
- ldrb r0, [r5]
- cmp r2, r0
- beq _080D94CA
- adds r1, r2, 0
- adds r2, r5, 0
-_080D94C0:
- adds r7, 0x1
- adds r0, r7, r2
- ldrb r0, [r0]
- cmp r1, r0
- bne _080D94C0
-_080D94CA:
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r0, 0x4]
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0xE]
- ldrh r0, [r0, 0x2]
- adds r0, r1
- lsls r0, 16
- asrs r0, 16
- negs r1, r1
- lsls r2, r7, 24
- lsrs r2, 24
- bl sub_80DC028
- ldr r1, =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1D
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D9508:
- movs r7, 0
- mov r2, r8
- lsls r0, r2, 2
- adds r1, r0, r2
- lsls r1, 3
- adds r1, r4
- movs r5, 0xA
- ldrsh r3, [r1, r5]
- ldr r1, =gUnknown_02039F26
- mov r10, r0
- adds r5, r1, 0
- ldrb r0, [r5]
- cmp r3, r0
- beq _080D952E
-_080D9524:
- adds r7, 0x1
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r3, r0
- bne _080D9524
-_080D952E:
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r0, 0x14]
- lsls r0, r7, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D9546
- bl _080DA100
-_080D9546:
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x27
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D955C:
- movs r7, 0
- mov r2, r8
- lsls r0, r2, 2
- adds r1, r0, r2
- lsls r1, 3
- adds r1, r4
- movs r3, 0xA
- ldrsh r2, [r1, r3]
- ldr r1, =gUnknown_02039F26
- mov r10, r0
- adds r5, r1, 0
- ldrb r4, [r5]
- cmp r2, r4
- beq _080D9586
- adds r1, r2, 0
- adds r2, r5, 0
-_080D957C:
- adds r7, 0x1
- adds r0, r7, r2
- ldrb r0, [r0]
- cmp r1, r0
- bne _080D957C
-_080D9586:
- lsls r0, r7, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_80DB5B8
- lsls r0, 24
- cmp r0, 0
- beq _080D95B4
- ldr r1, =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- movs r1, 0x28
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D95B4:
- ldr r0, =gTasks
- mov r1, r10
- add r1, r8
- lsls r1, 3
- adds r1, r0
- b _080D95E4
- .pool
-_080D95C4:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r4
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bgt _080D95E0
- bl _080DA100
-_080D95E0:
- movs r0, 0
- strh r0, [r1, 0x1C]
-_080D95E4:
- movs r0, 0x1E
- strh r0, [r1, 0x8]
- bl _080DA100
-_080D95EC:
- movs r7, 0
- ldr r2, =gUnknown_02039F26
- ldrb r3, [r2]
- mov r0, r8
- lsls r1, r0, 2
- adds r0, r1, r0
- lsls r0, 3
- adds r4, r0, r4
- movs r5, 0xA
- ldrsh r0, [r4, r5]
- mov r10, r1
- adds r5, r2, 0
- cmp r3, r0
- beq _080D961E
- adds r3, r5, 0
- adds r2, r4, 0
-_080D960C:
- adds r7, 0x1
- cmp r7, 0x3
- bgt _080D961E
- adds r0, r7, r3
- ldrb r1, [r0]
- movs r4, 0xA
- ldrsh r0, [r2, r4]
- cmp r1, r0
- bne _080D960C
-_080D961E:
- lsls r4, r7, 24
- lsrs r0, r4, 24
- bl sub_80DB798
- lsls r0, 24
- adds r6, r4, 0
- cmp r0, 0
- beq _080D963C
- movs r0, 0x63
- bl PlaySE
- b _080D9642
- .pool
-_080D963C:
- movs r0, 0x64
- bl PlaySE
-_080D9642:
- ldr r5, =gContestResources
- ldr r0, [r5]
- ldr r1, [r0, 0x4]
- lsls r0, r7, 3
- subs r0, r7
- lsls r4, r0, 2
- adds r1, r4, r1
- ldrb r1, [r1, 0x15]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080D9670
- lsrs r0, r6, 24
- bl sub_80DC674
- ldr r0, [r5]
- ldr r1, [r0, 0x4]
- adds r1, r4, r1
- ldrb r2, [r1, 0x15]
- movs r0, 0x21
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x15]
-_080D9670:
- ldr r0, =gTasks
- mov r1, r10
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- movs r0, 0x1A
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D9690:
- mov r5, r8
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r4, r0, r4
- ldrh r0, [r4, 0x1C]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- mov r10, r2
- cmp r0, 0x9
- bgt _080D96AE
- bl _080DA100
-_080D96AE:
- movs r0, 0
- strh r0, [r4, 0x1C]
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r2, r0, r1
- ldrb r1, [r2, 0xC]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- bne _080D96D4
- ldrb r1, [r2, 0x11]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D96F6
-_080D96D4:
- bl sub_80DB89C
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_0827E793
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
-_080D96F6:
- ldr r0, =gTasks
- mov r1, r10
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x34
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D971C:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9728
- bl _080DA100
-_080D9728:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x15]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080D975C
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x11
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D975C:
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0xE
- strh r0, [r1, 0x8]
- bl _080DA100
- .pool
-_080D9774:
- mov r4, r9
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x16]
- lsls r4, r0, 24
- lsrs r5, r4, 24
- cmp r5, 0
- beq _080D97DC
- bl sub_80DB89C
- asrs r0, r4, 24
- cmp r0, 0x1
- bne _080D97A0
- ldr r0, =gText_0827E32E
- b _080D97A6
- .pool
-_080D97A0:
- cmp r0, 0x2
- bne _080D97B4
- ldr r0, =gText_0827E35B
-_080D97A6:
- movs r1, 0x1
- bl sub_80DEC30
- b _080D97BC
- .pool
-_080D97B4:
- ldr r0, =gText_0827E38D
- movs r1, 0x1
- bl sub_80DEC30
-_080D97BC:
- movs r0, 0x3
- bl sub_80DD720
- ldr r1, =gTasks
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- b _080D9812
- .pool
-_080D97DC:
- bl sub_80DB89C
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_0827E2FE
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- movs r0, 0x2
- bl sub_80DD720
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x1C]
-_080D9812:
- movs r1, 0x2D
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D9830:
- mov r3, r9
- ldr r0, [r3]
- ldr r2, [r0]
- ldrb r1, [r2, 0x6]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D9844
- bl _080DA100
-_080D9844:
- ldrb r0, [r2, 0x11]
- bl sub_80DC9B4
- ldr r1, =gTasks
- mov r4, r8
- lsls r0, r4, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0xF
- strh r1, [r0, 0x8]
- bl _080DA100
- .pool
-_080D9864:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9870
- bl _080DA100
-_080D9870:
- ldr r1, =gTasks
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- bgt _080D988E
- bl _080DA100
-_080D988E:
- ldr r7, =gContestResources
- ldr r0, [r7]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r5, r0, 2
- adds r2, r5, r1
- ldrb r1, [r2, 0x15]
- movs r0, 0x10
- mov r8, r0
- ands r0, r1
- cmp r0, 0
- bne _080D98C2
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- ldrb r1, [r2, 0x17]
- adds r2, r6, 0
- bl sub_80DC028
- ldr r0, [r7]
- ldr r1, [r0, 0x4]
- adds r1, r5, r1
- ldrh r0, [r1, 0x2]
- ldrb r2, [r1, 0x17]
- adds r0, r2
- strh r0, [r1, 0x2]
-_080D98C2:
- mov r3, r8
- strh r3, [r4, 0x8]
- bl _080DA100
- .pool
-_080D98D4:
- mov r5, r9
- ldr r0, [r5]
- ldr r1, [r0, 0x14]
- lsls r0, r6, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x4
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080D98F0
- bl _080DA100
-_080D98F0:
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- strh r1, [r0, 0x1C]
- movs r1, 0x11
- strh r1, [r0, 0x8]
- bl _080DA100
-_080D9904:
- mov r3, r9
- ldr r0, [r3]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x15]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D996C
- bl sub_80DB89C
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_0827E6E3
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r0, =gTasks
- mov r5, r8
- lsls r4, r5, 2
- add r4, r8
- lsls r4, 3
- adds r4, r0
- movs r0, 0
- strh r0, [r4, 0x1C]
- bl sub_80DD720
- movs r0, 0x2E
- strh r0, [r4, 0x8]
- b _080DA100
- .pool
-_080D996C:
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x29
- strh r1, [r0, 0x8]
- b _080DA100
-_080D997C:
- mov r2, r9
- ldr r0, [r2]
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D998E
- b _080DA100
-_080D998E:
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x13
- strh r1, [r0, 0x8]
- b _080DA100
-_080D999E:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D99A8
- b _080DA100
-_080D99A8:
- ldr r5, =gContestResources
- ldr r0, [r5]
- ldr r1, [r0, 0x4]
- lsls r4, r6, 3
- subs r4, r6
- lsls r4, 2
- adds r1, r4, r1
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- ldrb r1, [r1, 0x18]
- negs r1, r1
- adds r2, r6, 0
- bl sub_80DC028
- ldr r0, [r5]
- ldr r0, [r0, 0x4]
- adds r4, r0
- ldrb r1, [r4, 0x18]
- ldrh r0, [r4, 0x2]
- subs r0, r1
- strh r0, [r4, 0x2]
- ldr r1, =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x12
- strh r1, [r0, 0x8]
- b _080DA100
- .pool
-_080D99EC:
- bl sub_80DCD48
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r1, [r0, 0x14]
- lsls r0, r6, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x4
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _080D9A0A
- b _080DA100
-_080D9A0A:
- ldr r0, =gTasks
- mov r5, r8
- lsls r4, r5, 2
- add r4, r8
- lsls r4, 3
- adds r4, r0
- strh r3, [r4, 0x1C]
- bl sub_80DB89C
- movs r0, 0x29
- strh r0, [r4, 0x8]
- b _080DA100
- .pool
-_080D9A2C:
- mov r1, r9
- ldr r0, [r1]
- ldr r2, [r0, 0x10]
- ldrb r1, [r2, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D9A56
- ldr r0, [r2]
- lsls r0, 20
- lsrs r0, 29
- cmp r6, r0
- beq _080D9A56
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0x39
- strh r1, [r0, 0x8]
- b _080DA100
-_080D9A56:
- mov r3, r9
- ldr r1, [r3]
- ldr r0, [r1, 0x10]
- ldrb r0, [r0]
- str r0, [sp]
- ldr r1, [r1, 0x4]
- lsls r2, r6, 3
- subs r0, r2, r6
- lsls r0, 2
- adds r5, r0, r1
- ldrb r1, [r5, 0x11]
- movs r0, 0x10
- ands r0, r1
- str r2, [sp, 0x4]
- cmp r0, 0
- beq _080D9A94
- movs r4, 0x1
- str r4, [sp]
- ldr r0, =gStringVar3
- ldrh r2, [r5, 0x6]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- b _080D9AAE
- .pool
-_080D9A94:
- ldr r0, =gStringVar3
- ldr r3, =gUnknown_08587F08
- ldr r2, =gContestMoves
- ldrh r1, [r5, 0x6]
- lsls r1, 3
- adds r1, r2
- ldrb r1, [r1, 0x1]
- lsls r1, 29
- lsrs r1, 27
- adds r1, r3
- ldr r1, [r1]
- bl StringCopy
-_080D9AAE:
- ldr r5, [sp]
- lsls r0, r5, 24
- cmp r0, 0
- ble _080D9AD2
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- ldr r2, [sp, 0x4]
- subs r0, r2, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x15]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D9AD2
- movs r3, 0
- str r3, [sp]
-_080D9AD2:
- bl sub_80DB89C
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r4, =gContestResources
- ldr r0, [r4]
- ldr r1, [r0]
- ldrb r0, [r1, 0x13]
- ldr r5, [sp]
- lsls r2, r5, 24
- asrs r3, r2, 24
- adds r0, r3, r0
- strb r0, [r1, 0x13]
- ldr r0, [r4]
- ldr r1, [r0]
- movs r0, 0x13
- ldrsb r0, [r1, r0]
- adds r5, r2, 0
- cmp r0, 0
- bge _080D9B06
- movs r0, 0
- strb r0, [r1, 0x13]
-_080D9B06:
- cmp r3, 0
- bne _080D9B30
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- b _080D9F58
- .pool
-_080D9B30:
- cmp r3, 0
- bge _080D9B48
- ldr r0, =gStringVar4
- ldr r1, =gText_0827E73C
- bl StringExpandPlaceholders
- b _080D9B74
- .pool
-_080D9B48:
- cmp r3, 0
- ble _080D9B6C
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x4
- bgt _080D9B6C
- ldr r0, =gStringVar4
- ldr r1, =gText_0827E717
- bl StringExpandPlaceholders
- b _080D9B74
- .pool
-_080D9B6C:
- ldr r0, =gStringVar4
- ldr r1, =gText_0827E76A
- bl StringExpandPlaceholders
-_080D9B74:
- ldr r0, =gStringVar4
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0
- strh r0, [r1, 0x1C]
- strh r0, [r1, 0x1E]
- cmp r5, 0
- bge _080D9BA4
- movs r0, 0x35
- strh r0, [r1, 0x8]
- b _080DA100
- .pool
-_080D9BA4:
- movs r0, 0x36
- strh r0, [r1, 0x8]
- b _080DA100
-_080D9BAA:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r4
- movs r0, 0x1C
- ldrsh r3, [r4, r0]
- cmp r3, 0x1
- beq _080D9BE8
- cmp r3, 0x1
- bgt _080D9BC6
- cmp r3, 0
- beq _080D9BD0
- b _080DA100
-_080D9BC6:
- cmp r3, 0x2
- beq _080D9C0C
- cmp r3, 0x3
- beq _080D9C46
- b _080DA100
-_080D9BD0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x1
- bl sub_80DDED0
- ldr r0, =0x00000187
- bl PlayFanfare
- b _080D9C3E
- .pool
-_080D9BE8:
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- ands r3, r0
- cmp r3, 0
- beq _080D9BF8
- b _080DA100
-_080D9BF8:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9C02
- b _080DA100
-_080D9C02:
- movs r0, 0x1
- negs r0, r0
- bl sub_80DDCDC
- b _080D9C3E
-_080D9C0C:
- mov r2, r9
- ldr r0, [r2]
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- movs r0, 0x20
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _080D9C22
- b _080DA100
-_080D9C22:
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- bgt _080D9C32
- b _080DA100
-_080D9C32:
- strh r2, [r4, 0x1E]
- movs r1, 0x1
- negs r1, r1
- adds r0, r1, 0
- bl sub_80DDED0
-_080D9C3E:
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- b _080DA100
-_080D9C46:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080D9C58
- b _080DA100
-_080D9C58:
- strh r0, [r4, 0x1C]
- strh r0, [r4, 0x1E]
- movs r0, 0x2B
- strh r0, [r4, 0x8]
- b _080DA100
- .pool
-_080D9C68:
- mov r3, r8
- lsls r1, r3, 2
- adds r0, r1, r3
- lsls r0, 3
- adds r0, r4
- movs r5, 0x1C
- ldrsh r0, [r0, r5]
- mov r10, r1
- cmp r0, 0x4
- bls _080D9C7E
- b _080DA100
-_080D9C7E:
- lsls r0, 2
- ldr r1, =_080D9C8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080D9C8C:
- .4byte _080D9CA0
- .4byte _080D9CB0
- .4byte _080D9CD4
- .4byte _080D9D3E
- .4byte _080D9D84
-_080D9CA0:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9CAA
- b _080DA100
-_080D9CAA:
- movs r0, 0x1
- movs r1, 0x1
- b _080D9D68
-_080D9CB0:
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080D9CC2
- b _080DA100
-_080D9CC2:
- bl sub_80DDE0C
- movs r0, 0xDF
- bl PlaySE
- movs r0, 0x1
- bl sub_80DDCDC
- b _080D9D6C
-_080D9CD4:
- mov r3, r9
- ldr r2, [r3]
- ldr r0, [r2]
- ldrb r1, [r0, 0x6]
- movs r0, 0x20
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _080D9CEA
- b _080DA100
-_080D9CEA:
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r5, r0, r4
- ldrh r0, [r5, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r5, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- bgt _080D9D02
- b _080DA100
-_080D9D02:
- strh r3, [r5, 0x1E]
- ldr r0, [r2, 0x4]
- lsls r4, r6, 3
- subs r4, r6
- lsls r4, 2
- adds r0, r4, r0
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- ldr r1, [r2, 0x10]
- ldrb r1, [r1, 0x2]
- lsls r1, 24
- asrs r1, 24
- adds r2, r6, 0
- bl sub_80DC028
- mov r2, r9
- ldr r1, [r2]
- ldr r0, [r1, 0x4]
- adds r4, r0
- ldr r0, [r1, 0x10]
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- ldrh r3, [r4, 0x2]
- adds r0, r3
- strh r0, [r4, 0x2]
- ldrh r0, [r5, 0x1C]
- adds r0, 0x1
- strh r0, [r5, 0x1C]
- b _080DA100
-_080D9D3E:
- mov r4, r9
- ldr r2, [r4]
- ldr r1, [r2, 0x14]
- lsls r0, r6, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D9D54
- b _080DA100
-_080D9D54:
- ldr r0, [r2]
- ldrb r1, [r0, 0x6]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080D9D62
- b _080DA100
-_080D9D62:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0x1
-_080D9D68:
- bl sub_80DDED0
-_080D9D6C:
- ldr r0, =gTasks
- mov r1, r10
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
- b _080DA100
- .pool
-_080D9D84:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _080D9D96
- b _080DA100
-_080D9D96:
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r4
- strh r3, [r0, 0x1C]
- strh r3, [r0, 0x1E]
- movs r1, 0x2B
- strh r1, [r0, 0x8]
- b _080DA100
- .pool
-_080D9DAC:
- mov r5, r9
- ldr r0, [r5]
- ldr r1, [r0, 0x14]
- lsls r0, r6, 2
- adds r0, r1
- ldrb r1, [r0, 0x2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080D9DC2
- b _080DA100
-_080D9DC2:
- bl sub_80DB89C
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- b _080D9F58
- .pool
-_080D9DD4:
- bl sub_80DB89C
- ldr r0, =gStringVar3
- ldr r5, =gContestResources
- ldr r1, [r5]
- ldr r1, [r1, 0x10]
- ldr r1, [r1]
- lsls r1, 20
- lsrs r1, 29
- lsls r1, 6
- ldr r4, =gUnknown_02039E00 + 2
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldr r1, [r5]
- ldr r2, [r1, 0x4]
- lsls r1, r6, 3
- subs r1, r6
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r1, 0x6]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_0827E7EA
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3A
- strh r1, [r0, 0x8]
- b _080DA100
- .pool
-_080D9E60:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9E6A
- b _080DA100
-_080D9E6A:
- bl sub_80DB89C
- ldr r4, =gStringVar4
- ldr r1, =gText_0827E817
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- mov r4, r8
- lsls r0, r4, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3B
- strh r1, [r0, 0x8]
- b _080DA100
- .pool
-_080D9EA0:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9EAA
- b _080DA100
-_080D9EAA:
- bl sub_80DB89C
- ldr r0, =gTasks
- mov r5, r8
- lsls r1, r5, 2
- b _080D9F58
- .pool
-_080D9EBC:
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r0, 0x4]
- lsls r0, r6, 3
- subs r0, r6
- lsls r4, r0, 2
- adds r2, r4, r1
- ldrb r1, [r2, 0x15]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080D9EDC
- movs r0, 0x11
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x15]
-_080D9EDC:
- adds r0, r6, 0
- bl sub_80DC9B4
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- mov r2, r9
- ldr r1, [r2]
- ldr r1, [r1, 0x4]
- adds r1, r4, r1
- ldrh r2, [r1, 0x6]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_0827E58A
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x22
- strh r1, [r0, 0x8]
- b _080DA100
- .pool
-_080D9F48:
- bl sub_80DED4C
- cmp r0, 0
- beq _080D9F52
- b _080DA100
-_080D9F52:
- ldr r0, =gTasks
- mov r4, r8
- lsls r1, r4, 2
-_080D9F58:
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x37
- strh r0, [r1, 0x8]
- b _080DA100
- .pool
-_080D9F68:
- bl sub_80DDBE8
- ldr r0, =gTasks
- mov r5, r8
- lsls r1, r5, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x38
- strh r0, [r1, 0x8]
- b _080DA100
- .pool
-_080D9F84:
- mov r1, r9
- ldr r0, [r1]
- ldr r2, [r0]
- ldrb r1, [r2, 0x6]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080D9F9A
- b _080DA100
-_080D9F9A:
- movs r0, 0x13
- ldrsb r0, [r2, r0]
- cmp r0, 0x4
- ble _080D9FA8
- strb r1, [r2, 0x13]
- bl sub_80DD940
-_080D9FA8:
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0xA
- strh r0, [r1, 0x8]
- b _080DA100
- .pool
-_080D9FC0:
- mov r3, r8
- lsls r2, r3, 2
- add r2, r8
- lsls r2, 3
- adds r2, r4
- ldrb r5, [r2, 0xC]
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_80DA164
- str r1, [r0]
- movs r0, 0xB
- strh r0, [r2, 0x8]
- b _080DA100
- .pool
-_080D9FEC:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r4
- ldrb r5, [r4, 0xC]
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r6, r0, r1
- adds r0, r6, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _080DA100
- adds r0, r6, 0
- bl FreeSpriteOamMatrix
- adds r0, r6, 0
- bl DestroySprite
- movs r0, 0x14
- strh r0, [r4, 0x8]
- b _080DA100
- .pool
-_080DA024:
- mov r1, r8
- lsls r0, r1, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x1C]
- movs r1, 0x15
- strh r1, [r0, 0x8]
- b _080DA100
-_080DA038:
- bl sub_80DB89C
- ldr r0, =gStringVar1
- lsls r1, r6, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_0827D56F
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x20
- strh r1, [r0, 0x8]
- b _080DA100
- .pool
-_080DA080:
- bl sub_80DED4C
- cmp r0, 0
- bne _080DA100
- ldr r0, =gTasks
- mov r3, r8
- lsls r1, r3, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- movs r0, 0x15
- strh r0, [r1, 0x8]
- b _080DA100
- .pool
-_080DA0A0:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r4
- ldrh r0, [r1, 0x1C]
- adds r0, 0x1
- strh r0, [r1, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080DA100
- movs r0, 0
- strh r0, [r1, 0x1C]
- movs r0, 0x16
- strh r0, [r1, 0x8]
- b _080DA100
-_080DA0C2:
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r0]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1, 0x10]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080DA0F4
- mov r3, r8
- lsls r0, r3, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- strh r2, [r0, 0x8]
- strh r2, [r0, 0xA]
- strh r2, [r0, 0xC]
- ldr r1, =sub_80DA198
- str r1, [r0]
- b _080DA100
- .pool
-_080DA0F4:
- mov r5, r8
- lsls r0, r5, 2
- add r0, r8
- lsls r0, 3
- adds r0, r4
- strh r2, [r0, 0x8]
-_080DA100:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D8B38
-
- thumb_func_start sub_80DA110
-sub_80DA110: @ 80DA110
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r3, [r1]
- ldrb r2, [r3, 0x7]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r3, 0x7]
- bl DestroyTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA110
-
- thumb_func_start sub_80DA134
-sub_80DA134: @ 80DA134
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x24]
- movs r3, 0x24
- ldrsh r2, [r1, r3]
- cmp r2, 0
- beq _080DA148
- subs r0, 0x2
- strh r0, [r1, 0x24]
- b _080DA15C
-_080DA148:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _080DA15C
- strh r2, [r1, 0x2E]
- ldr r0, =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_080DA15C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA134
-
- thumb_func_start sub_80DA164
-sub_80DA164: @ 80DA164
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x24]
- subs r0, 0x6
- strh r0, [r2, 0x24]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r3, 0x24
- ldrsh r1, [r2, r3]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080DA18E
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080DA18E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA164
-
- thumb_func_start sub_80DA198
-sub_80DA198: @ 80DA198
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080DA22E
- cmp r0, 0x1
- bgt _080DA1C0
- cmp r0, 0
- beq _080DA1C6
- b _080DA250
- .pool
-_080DA1C0:
- cmp r0, 0x2
- beq _080DA248
- b _080DA250
-_080DA1C6:
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080DA224
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r2, [r0]
- ldrb r0, [r2, 0x7]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x7]
- bl sub_80DA8A4
- lsls r0, 24
- cmp r0, 0
- beq _080DA1F4
- bl sub_80DB944
- bl sub_80DBA18
-_080DA1F4:
- ldr r4, =sub_80FCC88
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =sub_80DA110
- adds r1, r4, 0
- bl SetTaskFuncWithFollowupFunc
- bl sub_80DBF68
- strh r6, [r5, 0x8]
- b _080DA250
- .pool
-_080DA224:
- bl sub_80DB944
- bl sub_80DBA18
- b _080DA23E
-_080DA22E:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080DA250
-_080DA23E:
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _080DA250
- .pool
-_080DA248:
- movs r0, 0
- strh r0, [r5, 0x8]
- ldr r0, =sub_80DA25C
- str r0, [r5]
-_080DA250:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA198
-
- thumb_func_start sub_80DA25C
-sub_80DA25C: @ 80DA25C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- bl sub_80DE008
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- strh r1, [r0, 0xA]
- ldr r1, =sub_80DA28C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA25C
-
- thumb_func_start sub_80DA28C
-sub_80DA28C: @ 80DA28C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080DA2D2
- cmp r5, 0x1
- bgt _080DA2B4
- cmp r5, 0
- beq _080DA2BA
- b _080DA312
- .pool
-_080DA2B4:
- cmp r5, 0x2
- beq _080DA304
- b _080DA312
-_080DA2BA:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080DA312
- movs r0, 0x2
- bl sub_80DE69C
- strh r5, [r4, 0xA]
- b _080DA2F6
-_080DA2D2:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- movs r0, 0x2
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080DA312
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080DA312
- strh r1, [r4, 0xA]
-_080DA2F6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DA312
- .pool
-_080DA304:
- bl sub_80DC3AC
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- ldr r0, =sub_80DA31C
- str r0, [r4]
-_080DA312:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA28C
-
- thumb_func_start sub_80DA31C
-sub_80DA31C: @ 80DA31C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80DC3C4
- lsls r0, 24
- cmp r0, 0
- beq _080DA33A
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80DA348
- str r0, [r1]
-_080DA33A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA31C
-
- thumb_func_start sub_80DA348
-sub_80DA348: @ 80DA348
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gHeap+0x1A204
- ldr r3, =gPlttBufferUnfaded
- ldr r1, =0x040000d4
- str r2, [r1]
- str r3, [r1, 0x4]
- ldr r2, =0x84000100
- str r2, [r1, 0x8]
- ldr r1, [r1, 0x8]
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- movs r0, 0x2
- strh r0, [r1, 0xA]
- ldr r0, =sub_80DA38C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80DA348
-
- thumb_func_start sub_80DA38C
-sub_80DA38C: @ 80DA38C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080DA3BE
- movs r0, 0
- strh r0, [r1, 0x8]
- ldrh r0, [r1, 0xA]
- subs r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- cmp r0, 0
- bne _080DA3BE
- ldr r0, =sub_80DA3CC
- str r0, [r1]
-_080DA3BE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA38C
-
- thumb_func_start sub_80DA3CC
-sub_80DA3CC: @ 80DA3CC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r6, r1, r2
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080DA448
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r5, =gUnknown_02039F25
- ldrb r1, [r5]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r4, [r0, 0x1A]
- bl sub_80DB89C
- ldr r0, =gStringVar1
- ldrb r1, [r5]
- lsls r1, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r1, r2
- bl StringCopy
- ldr r5, =gStringVar4
- ldr r0, =gUnknown_08587D90
- lsls r4, 2
- adds r4, r0
- ldr r1, [r4]
- adds r0, r5, 0
- bl StringExpandPlaceholders
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- b _080DA45A
- .pool
-_080DA448:
- bl sub_80DED4C
- cmp r0, 0
- bne _080DA45A
- strh r0, [r6, 0x8]
- ldr r0, =sub_80DA464
- str r0, [r6]
- bl sub_80DCD48
-_080DA45A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA3CC
-
- thumb_func_start sub_80DA464
-sub_80DA464: @ 80DA464
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r1, r0, 0x1
- strh r1, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1D
- ble _080DA48E
- movs r0, 0
- strh r0, [r4, 0x8]
- bl sub_80DC3AC
- ldr r0, =sub_80DA49C
- str r0, [r4]
-_080DA48E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA464
-
- thumb_func_start sub_80DA49C
-sub_80DA49C: @ 80DA49C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80DC3C4
- lsls r0, 24
- cmp r0, 0
- beq _080DA4BE
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
- ldr r1, =sub_80DA4CC
- str r1, [r0]
-_080DA4BE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA49C
-
- thumb_func_start sub_80DA4CC
-sub_80DA4CC: @ 80DA4CC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80DE224
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80DE424
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA4CC
-
- thumb_func_start sub_80DA4F4
-sub_80DA4F4: @ 80DA4F4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80DE350
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80DA51C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA4F4
-
- thumb_func_start sub_80DA51C
-sub_80DA51C: @ 80DA51C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x8
- bl GetGpuReg
- mov r1, sp
- strh r0, [r1]
- movs r0, 0xC
- bl GetGpuReg
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r3, sp
- ldrb r2, [r3]
- movs r1, 0x4
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- ldrb r0, [r4]
- ands r1, r0
- strb r1, [r4]
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x8
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0xC
- bl SetGpuReg
- ldr r2, =gContestResources
- ldr r0, [r2]
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- ldr r0, [r2]
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x5
- bne _080DA590
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80DA5E8
- b _080DA5A0
- .pool
-_080DA590:
- bl sub_80DDB0C
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80DA5B4
-_080DA5A0:
- str r0, [r1]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA51C
-
- thumb_func_start sub_80DA5B4
-sub_80DA5B4: @ 80DA5B4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x6]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080DA5D8
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80D833C
- str r0, [r1]
-_080DA5D8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA5B4
-
- thumb_func_start sub_80DA5E8
-sub_80DA5E8: @ 80DA5E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gBattle_BG0_Y
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- ldr r4, =gContestResources
- movs r3, 0
- ldr r2, =gUnknown_02039F10
- movs r1, 0x3
-_080DA600:
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- adds r0, r3, r0
- ldrh r0, [r0, 0x4]
- strh r0, [r2]
- adds r3, 0x1C
- adds r2, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _080DA600
- bl sub_80DBD18
- bl sub_80DB89C
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080DA65C
- ldr r0, =gContestResources
- ldr r2, [r0]
- ldr r0, =gUnknown_02039F25
- ldrb r1, [r0]
- ldr r2, [r2, 0x4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x8]
- bl BravoTrainerPokemonProfile_BeforeInterview1
- b _080DA668
- .pool
-_080DA65C:
- bl sub_80DF250
- bl sub_80DF4F8
- bl sub_80DF750
-_080DA668:
- ldr r1, =gUnknown_030060B8
- ldr r0, =gRngValue
- ldr r0, [r0]
- str r0, [r1]
- ldr r4, =gStringVar4
- ldr r1, =gText_0827D597
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80DEC30
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- ldr r1, =sub_80DA6B4
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA5E8
-
- thumb_func_start sub_80DA6B4
-sub_80DA6B4: @ 80DA6B4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80DED4C
- adds r4, r0, 0
- cmp r4, 0
- bne _080DA6EA
- bl sub_80DE224
- ldr r0, =gBattle_BG1_X
- strh r4, [r0]
- ldr r1, =gBattle_BG1_Y
- movs r0, 0xA0
- strh r0, [r1]
- movs r0, 0x62
- movs r1, 0
- bl PlaySE12WithPanning
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- ldr r1, =sub_80DA700
- str r1, [r0]
-_080DA6EA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA6B4
-
- thumb_func_start sub_80DA700
-sub_80DA700: @ 80DA700
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gBattle_BG1_Y
- ldrh r0, [r1]
- subs r0, 0x7
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bge _080DA718
- movs r0, 0
- strh r0, [r1]
-_080DA718:
- ldrh r2, [r1]
- cmp r2, 0
- bne _080DA72E
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80DA740
- str r0, [r1]
- strh r2, [r1, 0x8]
-_080DA72E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA700
-
- thumb_func_start sub_80DA740
-sub_80DA740: @ 80DA740
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r1, r0, 0x1
- strh r1, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x31
- ble _080DA794
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, =gUnknown_02039F2A
- ldrb r0, [r0]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080DA780
- ldr r0, =sub_80DA7A0
- b _080DA792
- .pool
-_080DA780:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =sub_80DA830
-_080DA792:
- str r0, [r4]
-_080DA794:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA740
-
- thumb_func_start sub_80DA7A0
-sub_80DA7A0: @ 80DA7A0
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =sub_80FCACC
- adds r0, r5, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =sub_80DA7EC
- adds r1, r5, 0
- bl SetTaskFuncWithFollowupFunc
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =TaskDummy1
- str r1, [r0]
- bl sub_80DBF68
- movs r0, 0
- bl sub_80DC490
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA7A0
-
- thumb_func_start sub_80DA7EC
-sub_80DA7EC: @ 80DA7EC
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r2, =gTasks
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0]
- ldrb r1, [r0, 0x8]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, =sub_80DA830
- str r1, [r0]
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA7EC
-
- thumb_func_start sub_80DA830
-sub_80DA830: @ 80DA830
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080DA860
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, =gFieldCallback
- ldr r1, =sub_80DA874
- str r1, [r0]
- bl FreeAllWindowBuffers
- bl sub_80D7A5C
- bl FreeMonSpritesGfx
- ldr r0, =CB2_ReturnToField
- bl SetMainCallback2
-_080DA860:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA830
-
- thumb_func_start sub_80DA874
-sub_80DA874: @ 80DA874
- push {lr}
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_80DA874
-
- thumb_func_start sub_80DA884
-sub_80DA884: @ 80DA884
- push {lr}
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080DA898
- ldr r1, =gUnknown_02039F25
- movs r0, 0x3
- strb r0, [r1]
-_080DA898:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA884
-
- thumb_func_start sub_80DA8A4
-sub_80DA8A4: @ 80DA8A4
- push {lr}
- ldr r0, =gUnknown_02039F25
- ldr r1, =gUnknown_02039F2B
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _080DA8C0
- movs r0, 0
- b _080DA8C2
- .pool
-_080DA8C0:
- movs r0, 0x1
-_080DA8C2:
- pop {r1}
- bx r1
- thumb_func_end sub_80DA8A4
-
- thumb_func_start sub_80DA8C8
-sub_80DA8C8: @ 80DA8C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, =gSaveBlock2Ptr
- ldr r1, [r6]
- mov r0, sp
- bl StringCopy
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DA8F2
- mov r0, sp
- bl sub_80DF9D4
-_080DA8F2:
- ldr r5, =gUnknown_02039F25
- ldrb r0, [r5]
- lsls r0, 6
- ldr r4, =gUnknown_02039E00 + 13
- adds r0, r4
- mov r1, sp
- movs r2, 0x8
- bl memcpy
- ldr r0, [r6]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080DA928
- ldrb r0, [r5]
- lsls r0, 6
- adds r0, r4, r0
- movs r1, 0xD8
- b _080DA930
- .pool
-_080DA928:
- ldrb r0, [r5]
- lsls r0, 6
- adds r0, r4, r0
- movs r1, 0xD9
-_080DA930:
- strb r1, [r0, 0x8]
- ldr r7, =gUnknown_02039E00
- ldr r6, =gUnknown_02039F25
- ldrb r0, [r6]
- lsls r0, 6
- adds r1, r7, 0
- adds r1, 0x18
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldrb r0, [r6]
- lsls r0, 6
- adds r0, r7
- adds r0, 0x2C
- strb r1, [r0]
- movs r0, 0x64
- mov r1, r8
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- strh r0, [r1]
- adds r0, r5, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080DA994
- adds r0, r5, 0
- movs r1, 0x3
- bl GetMonData
- adds r1, r0, 0
- mov r0, sp
- bl sub_80DF9E0
-_080DA994:
- ldrb r0, [r6]
- lsls r0, 6
- adds r4, r7, 0x2
- adds r0, r4
- mov r1, sp
- movs r2, 0xB
- bl memcpy
- ldrb r0, [r6]
- lsls r0, 6
- adds r0, r4
- mov r1, sp
- bl StringCopy
- adds r0, r5, 0
- movs r1, 0x16
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- adds r1, 0x26
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x17
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- adds r1, 0x27
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x18
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- adds r1, 0x28
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x21
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- adds r1, 0x29
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x2F
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- adds r1, 0x2A
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x30
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- adds r1, 0x2B
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0xD
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- strh r0, [r1, 0x1E]
- adds r0, r5, 0
- movs r1, 0xE
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- strh r0, [r1, 0x20]
- adds r0, r5, 0
- movs r1, 0xF
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- strh r0, [r1, 0x22]
- adds r0, r5, 0
- movs r1, 0x10
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r1, r7
- strh r0, [r1, 0x24]
- adds r0, r5, 0
- movs r1, 0
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r2, r7, 0
- adds r2, 0x38
- adds r1, r2
- str r0, [r1]
- adds r0, r5, 0
- movs r1, 0x1
- bl GetMonData
- ldrb r1, [r6]
- lsls r1, 6
- adds r2, r7, 0
- adds r2, 0x3C
- adds r1, r2
- str r0, [r1]
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r2, r0, 16
- ldrb r0, [r6]
- lsls r0, 6
- adds r1, r0, r7
- adds r0, r1, 0
- adds r0, 0x26
- ldrb r3, [r0]
- adds r0, 0x1
- ldrb r5, [r0]
- adds r0, 0x1
- ldrb r6, [r0]
- adds r0, 0x1
- ldrb r7, [r0]
- adds r0, 0x1
- ldrb r4, [r0]
- cmp r2, 0xFE
- bne _080DAAC4
- adds r3, 0x14
- b _080DAB12
- .pool
-_080DAAC4:
- cmp r2, 0xFF
- bne _080DAAD4
- lsls r0, r5, 16
- movs r1, 0xA0
- lsls r1, 13
- adds r0, r1
- lsrs r5, r0, 16
- b _080DAB12
-_080DAAD4:
- movs r0, 0x80
- lsls r0, 1
- cmp r2, r0
- bne _080DAAE8
- lsls r0, r6, 16
- movs r1, 0xA0
- lsls r1, 13
- adds r0, r1
- lsrs r6, r0, 16
- b _080DAB12
-_080DAAE8:
- ldr r0, =0x00000101
- cmp r2, r0
- bne _080DAB00
- lsls r0, r7, 16
- movs r1, 0xA0
- lsls r1, 13
- adds r0, r1
- lsrs r7, r0, 16
- b _080DAB12
- .pool
-_080DAB00:
- movs r0, 0x81
- lsls r0, 1
- cmp r2, r0
- bne _080DAB12
- lsls r0, r4, 16
- movs r1, 0xA0
- lsls r1, 13
- adds r0, r1
- lsrs r4, r0, 16
-_080DAB12:
- cmp r3, 0xFF
- ble _080DAB18
- movs r3, 0xFF
-_080DAB18:
- lsls r0, r5, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080DAB22
- movs r5, 0xFF
-_080DAB22:
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080DAB2C
- movs r6, 0xFF
-_080DAB2C:
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080DAB36
- movs r7, 0xFF
-_080DAB36:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _080DAB40
- movs r4, 0xFF
-_080DAB40:
- ldr r2, =gUnknown_02039E00
- ldr r1, =gUnknown_02039F25
- ldrb r0, [r1]
- lsls r0, 6
- adds r0, r2
- adds r0, 0x26
- strb r3, [r0]
- ldrb r0, [r1]
- lsls r0, 6
- adds r0, r2
- adds r0, 0x27
- strb r5, [r0]
- ldrb r0, [r1]
- lsls r0, 6
- adds r0, r2
- adds r0, 0x28
- strb r6, [r0]
- ldrb r0, [r1]
- lsls r0, 6
- adds r0, r2
- adds r0, 0x29
- strb r7, [r0]
- ldrb r0, [r1]
- lsls r0, 6
- adds r0, r2
- adds r0, 0x2A
- strb r4, [r0]
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DA8C8
-
- thumb_func_start sub_80DAB8C
-sub_80DAB8C: @ 80DAB8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x64
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- movs r6, 0
- movs r7, 0
- bl sub_80DA884
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080DABC0
- ldr r0, =gUnknown_02039F2A
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080DABC0
- movs r7, 0x1
-_080DABC0:
- movs r5, 0
- ldr r2, =gUnknown_085880A4
- ldr r3, =gUnknown_085898A4
-_080DABC6:
- ldrb r0, [r2, 0x1C]
- lsls r0, 30
- lsrs r0, 30
- cmp r8, r0
- bne _080DAC3A
- cmp r7, 0x1
- bne _080DABEC
- ldrb r0, [r3]
- cmp r0, 0x1
- beq _080DAC3A
- b _080DABF2
- .pool
-_080DABEC:
- ldrb r0, [r3]
- cmp r0, 0x2
- beq _080DAC3A
-_080DABF2:
- cmp r4, 0
- bne _080DABFE
- ldrb r0, [r2, 0x1C]
- lsls r0, 29
- cmp r0, 0
- blt _080DAC2E
-_080DABFE:
- cmp r4, 0x1
- bne _080DAC0A
- ldrb r0, [r2, 0x1C]
- lsls r0, 28
- cmp r0, 0
- blt _080DAC2E
-_080DAC0A:
- cmp r4, 0x2
- bne _080DAC16
- ldrb r0, [r2, 0x1C]
- lsls r0, 27
- cmp r0, 0
- blt _080DAC2E
-_080DAC16:
- cmp r4, 0x3
- bne _080DAC22
- ldrb r0, [r2, 0x1C]
- lsls r0, 26
- cmp r0, 0
- blt _080DAC2E
-_080DAC22:
- cmp r4, 0x4
- bne _080DAC3A
- ldrb r0, [r2, 0x1C]
- lsls r0, 25
- cmp r0, 0
- bge _080DAC3A
-_080DAC2E:
- adds r0, r6, 0
- adds r1, r0, 0x1
- lsls r1, 24
- lsrs r6, r1, 24
- add r0, sp
- strb r5, [r0]
-_080DAC3A:
- adds r2, 0x40
- adds r3, 0x1
- adds r5, 0x1
- cmp r5, 0x5F
- bls _080DABC6
- mov r0, sp
- adds r1, r0, r6
- movs r0, 0xFF
- strb r0, [r1]
- movs r5, 0
- ldr r7, =gUnknown_085880A4
-_080DAC50:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_02039E00
- lsls r2, r5, 6
- adds r2, r1
- mov r1, sp
- adds r4, r1, r0
- ldrb r1, [r4]
- lsls r1, 6
- adds r1, r7
- adds r0, r2, 0
- movs r2, 0x40
- bl memcpy
- ldrb r0, [r4]
- adds r2, r5, 0x1
- subs r1, r6, 0x1
- cmp r0, 0xFF
- beq _080DAC92
- adds r3, r4, 0
-_080DAC86:
- ldrb r0, [r3, 0x1]
- strb r0, [r3]
- adds r3, 0x1
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _080DAC86
-_080DAC92:
- lsls r0, r1, 24
- lsrs r6, r0, 24
- adds r5, r2, 0
- cmp r5, 0x2
- ble _080DAC50
- ldr r0, =gUnknown_02039F24
- ldrb r0, [r0]
- bl sub_80DA8C8
- add sp, 0x64
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DAB8C
-
- thumb_func_start sub_80DACBC
-sub_80DACBC: @ 80DACBC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x64
- mov r8, r2
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- movs r7, 0
- ldr r0, =gUnknown_02039F30
- ldrb r1, [r0]
- mov r9, r0
- cmp r1, 0x4
- bne _080DACDE
- b _080DADF6
-_080DACDE:
- movs r5, 0
- ldr r3, =gUnknown_085880A4
- ldr r6, =gUnknown_085898A4
-_080DACE4:
- ldrb r0, [r3, 0x1C]
- lsls r0, 30
- lsrs r0, 30
- cmp r2, r0
- bne _080DAD56
- mov r0, r8
- cmp r0, 0x1
- bne _080DAD08
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _080DAD56
- b _080DAD0E
- .pool
-_080DAD08:
- ldrb r0, [r6]
- cmp r0, 0x2
- beq _080DAD56
-_080DAD0E:
- cmp r4, 0
- bne _080DAD1A
- ldrb r0, [r3, 0x1C]
- lsls r0, 29
- cmp r0, 0
- blt _080DAD4A
-_080DAD1A:
- cmp r4, 0x1
- bne _080DAD26
- ldrb r0, [r3, 0x1C]
- lsls r0, 28
- cmp r0, 0
- blt _080DAD4A
-_080DAD26:
- cmp r4, 0x2
- bne _080DAD32
- ldrb r0, [r3, 0x1C]
- lsls r0, 27
- cmp r0, 0
- blt _080DAD4A
-_080DAD32:
- cmp r4, 0x3
- bne _080DAD3E
- ldrb r0, [r3, 0x1C]
- lsls r0, 26
- cmp r0, 0
- blt _080DAD4A
-_080DAD3E:
- cmp r4, 0x4
- bne _080DAD56
- ldrb r0, [r3, 0x1C]
- lsls r0, 25
- cmp r0, 0
- bge _080DAD56
-_080DAD4A:
- adds r0, r7, 0
- adds r1, r0, 0x1
- lsls r1, 24
- lsrs r7, r1, 24
- add r0, sp
- strb r5, [r0]
-_080DAD56:
- adds r3, 0x40
- adds r6, 0x1
- adds r5, 0x1
- cmp r5, 0x5F
- bls _080DACE4
- mov r3, sp
- adds r1, r3, r7
- movs r0, 0xFF
- strb r0, [r1]
- movs r5, 0
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x4
- subs r0, r1
- cmp r5, r0
- bge _080DADF6
- ldr r3, =gUnknown_02039E00
- mov r8, r3
- mov r6, r9
- movs r0, 0x2
- add r0, r8
- mov r9, r0
-_080DAD82:
- bl sub_80F903C
- lsls r0, 16
- lsrs r0, 16
- adds r1, r7, 0
- bl __modsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldrb r0, [r6]
- adds r0, r5
- lsls r0, 6
- add r0, r8
- ldr r2, =gUnknown_085880A4
- mov r3, sp
- adds r4, r3, r1
- ldrb r1, [r4]
- lsls r1, 6
- adds r1, r2
- movs r2, 0x40
- bl memcpy
- ldrb r0, [r6]
- adds r0, r5
- lsls r0, 6
- mov r1, r8
- adds r1, 0xD
- adds r0, r1
- bl sub_80DF9D4
- ldrb r0, [r6]
- adds r0, r5
- lsls r0, 6
- add r0, r9
- movs r1, 0x2
- bl sub_80DF9E0
- ldrb r0, [r4]
- adds r3, r5, 0x1
- subs r1, r7, 0x1
- cmp r0, 0xFF
- beq _080DADE6
- adds r2, r4, 0
-_080DADDA:
- ldrb r0, [r2, 0x1]
- strb r0, [r2]
- adds r2, 0x1
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _080DADDA
-_080DADE6:
- lsls r0, r1, 24
- lsrs r7, r0, 24
- adds r5, r3, 0
- ldrb r1, [r6]
- movs r0, 0x4
- subs r0, r1
- cmp r5, r0
- blt _080DAD82
-_080DADF6:
- add sp, 0x64
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DACBC
-
- thumb_func_start sub_80DAE0C
-sub_80DAE0C: @ 80DAE0C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _080DAE1E
- movs r0, 0x3
- b _080DAE9A
-_080DAE1E:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080DAE2E
- movs r0, 0x4
- b _080DAE9A
-_080DAE2E:
- ldr r0, =gSpecialVar_ContestCategory
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _080DAE82
- lsls r0, 2
- ldr r1, =_080DAE48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080DAE48:
- .4byte _080DAE5C
- .4byte _080DAE62
- .4byte _080DAE68
- .4byte _080DAE6E
- .4byte _080DAE74
-_080DAE5C:
- adds r0, r4, 0
- movs r1, 0x32
- b _080DAE78
-_080DAE62:
- adds r0, r4, 0
- movs r1, 0x33
- b _080DAE78
-_080DAE68:
- adds r0, r4, 0
- movs r1, 0x34
- b _080DAE78
-_080DAE6E:
- adds r0, r4, 0
- movs r1, 0x35
- b _080DAE78
-_080DAE74:
- adds r0, r4, 0
- movs r1, 0x36
-_080DAE78:
- bl GetMonData
- lsls r0, 24
- lsrs r1, r0, 24
- b _080DAE86
-_080DAE82:
- movs r0, 0
- b _080DAE9A
-_080DAE86:
- ldr r0, =gSpecialVar_ContestRank
- adds r2, r1, 0
- ldrh r1, [r0]
- movs r0, 0x2
- cmp r2, r1
- bhi _080DAE9A
- movs r0, 0
- cmp r2, r1
- bcc _080DAE9A
- movs r0, 0x1
-_080DAE9A:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DAE0C
-
- thumb_func_start sub_80DAEA4
-sub_80DAEA4: @ 80DAEA4
- push {r4,r5,lr}
- movs r5, 0
-_080DAEA8:
- ldr r0, =gUnknown_02039F26
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- lsls r4, r5, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80DAF04
- adds r0, r4, 0
- bl sub_80DAF88
- adds r5, 0x1
- cmp r5, 0x3
- ble _080DAEA8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DAEA4
-
- thumb_func_start sub_80DAED4
-sub_80DAED4: @ 80DAED4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- ldr r0, =gDisplayedStringBattle
- ldr r1, =gText_ColorTransparent
- bl StringCopy
- adds r1, r0, 0
- subs r0, r1, 0x1
- strb r4, [r0]
- adds r0, r1, 0
- adds r1, r5, 0
- bl StringCopy
- adds r1, r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DAED4
-
- thumb_func_start sub_80DAF04
-sub_80DAF04: @ 80DAF04
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r0, r1, 24
- movs r2, 0xA0
- lsls r2, 20
- adds r1, r2
- lsrs r1, 24
- bl sub_80DAF1C
- pop {r0}
- bx r0
- thumb_func_end sub_80DAF04
-
- thumb_func_start sub_80DAF1C
-sub_80DAF1C: @ 80DAF1C
- push {r4,r5,lr}
- sub sp, 0x24
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gText_Slash
- add r0, sp, 0x4
- bl StringCopy
- lsls r1, r5, 6
- ldr r0, =gUnknown_02039E00 + 13
- adds r1, r0
- add r0, sp, 0x4
- bl StringAppend
- add r0, sp, 0x4
- adds r1, r4, 0
- bl sub_80DAED4
- ldr r4, =gDisplayedStringBattle
- movs r0, 0x7
- adds r1, r4, 0
- movs r2, 0x60
- bl GetStringRightAlignXOffset
- adds r2, r0, 0
- cmp r2, 0x37
- ble _080DAF5C
- movs r2, 0x37
-_080DAF5C:
- ldr r0, =gUnknown_02039F26
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x7
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_80DEBD0
- add sp, 0x24
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DAF1C
-
- thumb_func_start sub_80DAF88
-sub_80DAF88: @ 80DAF88
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r0, r1, 24
- movs r2, 0xA0
- lsls r2, 20
- adds r1, r2
- lsrs r1, 24
- bl sub_80DAFA0
- pop {r0}
- bx r0
- thumb_func_end sub_80DAF88
-
- thumb_func_start sub_80DAFA0
-sub_80DAFA0: @ 80DAFA0
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r4, 6
- ldr r2, =gUnknown_02039E00 + 2
- adds r0, r2
- bl sub_80DAED4
- ldr r0, =gUnknown_02039F26
- adds r4, r0
- ldrb r0, [r4]
- ldr r1, =gDisplayedStringBattle
- movs r2, 0x7
- str r2, [sp]
- movs r2, 0x5
- movs r3, 0x1
- bl sub_80DEBD0
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DAFA0
-
- thumb_func_start sub_80DAFE0
-sub_80DAFE0: @ 80DAFE0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, 0x4
- bhi _080DB06C
- lsls r0, 2
- ldr r1, =_080DAFFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080DAFFC:
- .4byte _080DB010
- .4byte _080DB028
- .4byte _080DB040
- .4byte _080DB050
- .4byte _080DB06C
-_080DB010:
- ldr r0, =gUnknown_02039E00
- lsls r2, 6
- adds r1, r2, r0
- adds r3, r1, 0
- adds r3, 0x26
- ldrb r5, [r3]
- adds r3, 0x4
- ldrb r4, [r3]
- adds r1, 0x27
- b _080DB07E
- .pool
-_080DB028:
- ldr r0, =gUnknown_02039E00
- lsls r2, 6
- adds r1, r2, r0
- adds r3, r1, 0
- adds r3, 0x27
- ldrb r5, [r3]
- subs r3, 0x1
- ldrb r4, [r3]
- adds r1, 0x28
- b _080DB07E
- .pool
-_080DB040:
- ldr r1, =gUnknown_02039E00
- lsls r2, 6
- adds r3, r2, r1
- adds r0, r3, 0
- adds r0, 0x28
- b _080DB05A
- .pool
-_080DB050:
- ldr r1, =gUnknown_02039E00
- lsls r2, 6
- adds r3, r2, r1
- adds r0, r3, 0
- adds r0, 0x29
-_080DB05A:
- ldrb r5, [r0]
- subs r0, 0x1
- ldrb r4, [r0]
- adds r0, 0x2
- ldrb r3, [r0]
- adds r0, r1, 0
- b _080DB080
- .pool
-_080DB06C:
- ldr r0, =gUnknown_02039E00
- lsls r2, 6
- adds r1, r2, r0
- adds r3, r1, 0
- adds r3, 0x2A
- ldrb r5, [r3]
- subs r3, 0x1
- ldrb r4, [r3]
- adds r1, 0x26
-_080DB07E:
- ldrb r3, [r1]
-_080DB080:
- adds r1, r2, r0
- adds r1, 0x2B
- adds r0, r4, r3
- ldrb r1, [r1]
- adds r0, r1
- asrs r0, 1
- adds r0, r5, r0
- lsls r0, 16
- lsrs r0, 16
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DAFE0
-
- thumb_func_start sub_80DB09C
-sub_80DB09C: @ 80DB09C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r5, =gUnknown_02039F00
-_080DB0A6:
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r6, 0
- bl sub_80DAFE0
- strh r0, [r5]
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _080DB0A6
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DB09C
-
- thumb_func_start sub_80DB0C4
-sub_80DB0C4: @ 80DB0C4
- push {r4,r5,lr}
- ldr r0, =gUnknown_08587C00
- bl LoadCompressedObjectPic
- ldr r0, =gContest2Pal
- movs r1, 0x88
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, =gSpriteTemplate_8587BE8
- movs r1, 0x70
- movs r2, 0x24
- movs r3, 0x1E
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r5, r2, r4
- ldrb r3, [r5, 0x5]
- movs r1, 0xF
- ands r1, r3
- movs r3, 0x10
- orrs r1, r3
- strb r1, [r5, 0x5]
- adds r4, 0x1C
- adds r2, r4
- ldr r1, =SpriteCallbackDummy
- str r1, [r2]
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DB0C4
-
- thumb_func_start sub_80DB120
-sub_80DB120: @ 80DB120
- push {lr}
- ldr r0, =gUnknown_08587C08
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_08587C10
- bl LoadCompressedObjectPalette
- ldr r0, =gSpriteTemplate_8587C18
- movs r1, 0x60
- movs r2, 0xA
- movs r3, 0x1D
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- movs r1, 0x3E
- adds r1, r2
- mov r12, r1
- ldrb r1, [r1]
- movs r3, 0x4
- orrs r1, r3
- mov r3, r12
- strb r1, [r3]
- ldrh r1, [r2, 0x4]
- lsls r1, 22
- lsrs r1, 22
- strh r1, [r2, 0x2E]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DB120
-
- thumb_func_start sub_80DB174
-sub_80DB174: @ 80DB174
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r1, 0
- adds r6, r2, 0
- adds r4, r3, 0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r5, 0
- bl sub_80DE84C
- adds r5, r0, 0
- ldr r0, =gUnknown_02039F25
- ldrb r0, [r0]
- cmp r4, r0
- bne _080DB1B8
- lsls r0, r5, 3
- ldr r1, =gMonBackPicTable
- adds r0, r1
- ldr r1, =gMonSpritesGfxPtr
- ldr r1, [r1]
- ldr r1, [r1, 0x4]
- adds r2, r5, 0
- adds r3, r6, 0
- bl HandleLoadSpecialPokePic_2
- b _080DB1CC
- .pool
-_080DB1B8:
- lsls r0, r5, 3
- ldr r1, =gMonBackPicTable
- adds r0, r1
- ldr r1, =gMonSpritesGfxPtr
- ldr r1, [r1]
- ldr r1, [r1, 0x4]
- adds r2, r5, 0
- adds r3, r6, 0
- bl HandleLoadSpecialPokePic_DontHandleDeoxys
-_080DB1CC:
- adds r0, r5, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl GetFrontSpritePalFromSpeciesAndPersonality
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r5, 0
- movs r1, 0
- bl SetMultiuseSpriteTemplateToPokemon
- ldr r4, =gMultiuseSpriteTemplate
- movs r0, 0x2
- adds r1, r5, 0
- movs r2, 0
- bl sub_80A600C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- movs r1, 0x70
- movs r3, 0x1E
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gSprites
- mov r8, r0
- lsls r0, r7, 4
- adds r0, r7
- lsls r6, r0, 2
- mov r0, r8
- adds r4, r6, r0
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- movs r1, 0xD
- negs r1, r1
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4, 0x5]
- movs r0, 0x2
- bl sub_80A82E4
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- mov r0, r8
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r0, [r4, 0x5]
- lsrs r0, 4
- strh r0, [r4, 0x2E]
- strh r5, [r4, 0x32]
- adds r0, r5, 0
- bl IsSpeciesNotUnown
- lsls r0, 24
- cmp r0, 0
- beq _080DB278
- mov r0, r8
- adds r0, 0x10
- adds r0, r6, r0
- ldr r1, =gUnknown_082FF6C0
- b _080DB280
- .pool
-_080DB278:
- mov r0, r8
- adds r0, 0x10
- adds r0, r6, r0
- ldr r1, =gUnknown_082FF694
-_080DB280:
- str r1, [r0]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAffineAnim
- adds r0, r7, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DB174
-
- thumb_func_start IsSpeciesNotUnown
-IsSpeciesNotUnown: @ 80DB2A8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC9
- beq _080DB2B6
- movs r0, 0x1
- b _080DB2B8
-_080DB2B6:
- movs r0, 0
-_080DB2B8:
- pop {r1}
- bx r1
- thumb_func_end IsSpeciesNotUnown
-
- thumb_func_start sub_80DB2BC
-sub_80DB2BC: @ 80DB2BC
- push {r4-r6,lr}
- ldr r5, =gContestResources
- ldr r0, [r5]
- ldr r0, [r0, 0x24]
- movs r4, 0xA0
- lsls r4, 3
- adds r1, r0, r4
- movs r6, 0xA0
- lsls r6, 1
- adds r2, r6, 0
- bl CpuSet
- ldr r0, [r5]
- ldr r0, [r0, 0x2C]
- adds r4, r0, r4
- adds r1, r4, 0
- adds r2, r6, 0
- bl CpuSet
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DB2BC
-
- thumb_func_start sub_80DB2EC
-sub_80DB2EC: @ 80DB2EC
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, =gContestEffects
- ldr r1, =gContestMoves
- lsrs r0, 13
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _080DB354
- lsls r0, 2
- ldr r1, =_080DB320
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080DB320:
- .4byte _080DB344
- .4byte _080DB344
- .4byte _080DB34C
- .4byte _080DB34C
- .4byte _080DB354
- .4byte _080DB354
- .4byte _080DB354
- .4byte _080DB354
- .4byte _080DB344
-_080DB344:
- ldr r0, =0x00009082
- b _080DB356
- .pool
-_080DB34C:
- ldr r0, =0x00009088
- b _080DB356
- .pool
-_080DB354:
- ldr r0, =0x00009086
-_080DB356:
- lsls r1, r3, 12
- movs r2, 0x90
- lsls r2, 8
- adds r1, r2
- lsls r0, 16
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80DB2EC
-
- thumb_func_start prints_contest_move_description
-prints_contest_move_description: @ 80DB370
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r1, =gContestMoves
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 29
- ldr r7, =0x00004040
- cmp r0, 0
- beq _080DB3A4
- adds r7, 0x5
- cmp r0, 0x1
- beq _080DB3A4
- adds r7, 0x5
- cmp r0, 0x2
- beq _080DB3A4
- adds r7, 0x40
- cmp r0, 0x3
- bne _080DB3A4
- subs r7, 0x20
-_080DB3A4:
- movs r6, 0x5
- str r6, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r0, 0
- adds r1, r7, 0
- movs r2, 0xB
- movs r3, 0x1F
- bl sub_80DECB8
- adds r1, r7, 0
- adds r1, 0x10
- str r6, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r0, 0
- movs r2, 0xB
- movs r3, 0x20
- bl sub_80DECB8
- ldr r2, =gContestEffects
- ldr r0, =gContestMoves
- mov r3, r8
- lsls r1, r3, 3
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x1]
- adds r7, r1, 0
- cmp r0, 0xFF
- bne _080DB3FC
- movs r6, 0
- b _080DB408
- .pool
-_080DB3FC:
- ldrb r0, [r2, 0x1]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r6, r0, 24
-_080DB408:
- cmp r6, 0x8
- bls _080DB40E
- movs r6, 0x8
-_080DB40E:
- ldr r1, =0x00005035
- movs r0, 0x8
- str r0, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r4, 0x11
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0x15
- movs r3, 0x1F
- bl sub_80DED10
- ldr r1, =0x00005012
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0x15
- movs r3, 0x1F
- bl sub_80DED10
- ldr r1, =gContestEffects
- ldr r0, =gContestMoves
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFF
- bne _080DB460
- movs r6, 0
- b _080DB46C
- .pool
-_080DB460:
- ldrb r0, [r1, 0x2]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r6, r0, 24
-_080DB46C:
- cmp r6, 0x8
- bls _080DB472
- movs r6, 0x8
-_080DB472:
- ldr r1, =0x00005036
- movs r0, 0x8
- str r0, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r4, 0x11
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0x15
- movs r3, 0x20
- bl sub_80DED10
- ldr r1, =0x00005014
- str r6, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r2, 0x15
- movs r3, 0x20
- bl sub_80DED10
- movs r0, 0xA
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, =gContestEffectDescriptionPointers
- ldr r0, =gContestMoves
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0xA
- bl sub_80DEB70
- ldr r1, =gText_Slash
- movs r0, 0x9
- bl sub_80DEB70
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end prints_contest_move_description
-
- thumb_func_start sub_80DB4E0
-sub_80DB4E0: @ 80DB4E0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, =gUnknown_02039F26
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x2
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- bl sub_80DBCA8
- lsls r0, 24
- cmp r0, 0
- bne _080DB560
- cmp r5, 0
- beq _080DB560
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80DB2EC
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x2
- mov r8, r0
- str r0, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r6, 0x11
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x14
- adds r3, r7, 0
- bl sub_80DECB8
- adds r4, 0x10
- lsls r4, 16
- lsrs r4, 16
- adds r3, r7, 0x1
- lsls r3, 24
- lsrs r3, 24
- mov r0, r8
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x14
- bl sub_80DECB8
- b _080DB576
- .pool
-_080DB560:
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x14
- adds r3, r7, 0
- bl sub_80DED10
-_080DB576:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DB4E0
-
- thumb_func_start sub_80DB584
-sub_80DB584: @ 80DB584
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0
-_080DB58A:
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- adds r0, r5, r0
- ldrh r0, [r0, 0x6]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_80DB4E0
- adds r5, 0x1C
- adds r4, 0x1
- cmp r4, 0x3
- ble _080DB58A
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DB584
-
- thumb_func_start sub_80DB5B0
-sub_80DB5B0: @ 80DB5B0
- ldr r0, =0x00002034
- bx lr
- .pool
- thumb_func_end sub_80DB5B0
-
- thumb_func_start sub_80DB5B8
-sub_80DB5B8: @ 80DB5B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r10, r8
- ldr r0, =gContestResources
- mov r9, r0
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r0, r2, 3
- subs r0, r2
- lsls r7, r0, 2
- adds r3, r7, r1
- ldrb r0, [r3, 0x10]
- movs r5, 0x30
- ands r5, r0
- cmp r5, 0
- bne _080DB5F4
- movs r0, 0
- b _080DB68A
- .pool
-_080DB5F4:
- ldr r0, =gUnknown_02039F26
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, 0x2
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0xD
- ldrsb r0, [r3, r0]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- asrs r4, r0, 24
- cmp r5, 0x10
- bne _080DB648
- bl sub_80DB5B0
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1
- str r0, [sp]
- lsls r0, r4, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r2, 0x13
- adds r3, r6, 0
- bl sub_80DED10
- mov r1, r8
- cmp r1, 0
- beq _080DB688
- movs r0, 0x5B
- b _080DB672
- .pool
-_080DB648:
- adds r3, r6, r4
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x3
- subs r0, r4
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x13
- bl sub_80DED10
- mov r0, r10
- cmp r0, 0
- beq _080DB688
- movs r0, 0x26
-_080DB672:
- bl PlaySE
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r0, 0x4]
- adds r1, r7, r1
- ldrb r2, [r1, 0x10]
- movs r0, 0x31
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x10]
-_080DB688:
- movs r0, 0x1
-_080DB68A:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80DB5B8
-
- thumb_func_start sub_80DB69C
-sub_80DB69C: @ 80DB69C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r7, 0
- movs r0, 0x1
- mov r10, r0
- movs r1, 0x11
- mov r9, r1
- movs r0, 0
- mov r8, r0
-_080DB6B6:
- ldr r0, =gUnknown_02039F26
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r4, r0, 2
- adds r4, r0
- adds r4, 0x2
- lsls r4, 24
- lsrs r4, 24
- bl sub_80DB5B0
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =gContestResources
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- add r0, r8
- ldrb r0, [r0, 0xD]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xA
- bl __divsi3
- lsls r0, 24
- mov r1, r10
- str r1, [sp]
- asrs r6, r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0x13
- adds r3, r4, 0
- bl sub_80DED10
- adds r4, r6
- lsls r4, 24
- lsrs r4, 24
- mov r1, r10
- str r1, [sp]
- movs r0, 0x3
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x13
- adds r3, r4, 0
- bl sub_80DED10
- movs r1, 0x1C
- add r8, r1
- adds r7, 0x1
- cmp r7, 0x3
- ble _080DB6B6
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80DB69C
-
- thumb_func_start sub_80DB748
-sub_80DB748: @ 80DB748
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0
- cmp r1, 0x4
- bhi _080DB78A
- lsls r0, r1, 2
- ldr r1, =_080DB764
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080DB764:
- .4byte _080DB778
- .4byte _080DB77C
- .4byte _080DB780
- .4byte _080DB784
- .4byte _080DB788
-_080DB778:
- movs r0, 0x80
- b _080DB78A
-_080DB77C:
- movs r0, 0x84
- b _080DB78A
-_080DB780:
- movs r0, 0x86
- b _080DB78A
-_080DB784:
- movs r0, 0x88
- b _080DB78A
-_080DB788:
- movs r0, 0x82
-_080DB78A:
- movs r1, 0x90
- lsls r1, 8
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80DB748
-
- thumb_func_start sub_80DB798
-sub_80DB798: @ 80DB798
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- mov r9, r1
- movs r1, 0
- mov r8, r1
- ldr r1, =gUnknown_02039F26
- adds r1, r0, r1
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- adds r1, 0x2
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r1, =gContestResources
- ldr r1, [r1]
- ldr r2, [r1, 0x4]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldr r0, [r2, 0x10]
- ldr r1, =0x00ff0003
- ands r0, r1
- cmp r0, 0
- bne _080DB7DC
- ldrb r0, [r2, 0xF]
- cmp r0, 0
- beq _080DB7EC
-_080DB7DC:
- movs r0, 0
- b _080DB80E
- .pool
-_080DB7EC:
- ldrb r1, [r2, 0xC]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- beq _080DB7FA
- movs r0, 0x1
- b _080DB80E
-_080DB7FA:
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- bne _080DB80C
- ldrb r1, [r2, 0xB]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080DB81A
-_080DB80C:
- movs r0, 0x2
-_080DB80E:
- bl sub_80DB748
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- b _080DB81E
-_080DB81A:
- movs r0, 0
- mov r9, r0
-_080DB81E:
- mov r1, r9
- cmp r1, 0
- beq _080DB85E
- movs r6, 0x2
- str r6, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r0, 0
- mov r1, r8
- movs r2, 0x14
- adds r3, r7, 0
- bl sub_80DECB8
- mov r1, r8
- adds r1, 0x10
- lsls r1, 16
- lsrs r1, 16
- adds r3, r7, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r6, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r0, 0
- movs r2, 0x14
- bl sub_80DECB8
- b _080DB874
-_080DB85E:
- movs r0, 0x2
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x14
- adds r3, r7, 0
- bl sub_80DED10
-_080DB874:
- mov r0, r9
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80DB798
-
thumb_func_start sub_80DB884
sub_80DB884: @ 80DB884
push {r4,lr}
@@ -7613,7 +31,7 @@ sub_80DB89C: @ 80DB89C
movs r1, 0x2
bl CopyWindowToVram
movs r0, 0
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
pop {r0}
bx r0
thumb_func_end sub_80DB89C
@@ -7632,7 +50,7 @@ sub_80DB8B8: @ 80DB8B8
movs r0, 0
b _080DB90A
_080DB8D0:
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r4, r0
beq _080DB8F4
@@ -7640,13 +58,13 @@ _080DB8D0:
bl sub_81562C4
bl sub_8156324
lsls r0, 24
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
lsrs r0, 23
lsls r1, r4, 6
b _080DB902
.pool
_080DB8F4:
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
@@ -8197,7 +615,7 @@ sub_80DBCE0: @ 80DBCE0
strh r0, [r1]
ldr r2, =gUnknown_02039F08
adds r2, r4, r2
- ldr r1, =gUnknown_02039F00
+ ldr r1, =gContestMonConditions
adds r4, r1
ldrh r4, [r4]
adds r0, r4
@@ -8307,7 +725,7 @@ _080DBDB8:
mov r4, sp
ldr r6, =gUnknown_02039F08
ldr r2, [sp, 0x64]
- ldr r5, =gUnknown_02039F00
+ ldr r5, =gContestMonConditions
ldr r3, [sp, 0x68]
_080DBDD2:
mov r7, r9
@@ -8415,7 +833,7 @@ _080DBE90:
ble _080DBE06
movs r6, 0
mov r9, r6
- ldr r2, =gUnknown_02039F20
+ ldr r2, =gContestFinalStandings
ldr r1, [sp, 0x6C]
_080DBEA2:
ldr r0, [r1]
@@ -8442,7 +860,7 @@ _080DBEA2:
thumb_func_start sub_80DBED4
sub_80DBED4: @ 80DBED4
push {lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -8450,8 +868,8 @@ sub_80DBED4: @ 80DBED4
beq _080DBF0E
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
- ldr r1, =gUnknown_02039F20
- ldr r0, =gUnknown_02039F25
+ ldr r1, =gContestFinalStandings
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -8524,7 +942,7 @@ sub_80DBF68: @ 80DBF68
bl sub_80DB89C
ldr r0, =gUnknown_0827E8DA
movs r1, 0
- bl sub_80DEC30
+ bl Contest_StartTextPrinter
pop {r0}
bx r0
.pool
@@ -8548,7 +966,7 @@ _080DBF9A:
movs r0, 0
movs r1, 0
movs r2, 0x16
- bl sub_80DED10
+ bl ContestBG_FillBoxWithTile
movs r0, 0xA0
lsls r0, 19
adds r5, r0
@@ -8885,7 +1303,7 @@ _080DC226:
str r0, [sp, 0x8]
movs r0, 0
adds r1, r6, 0
- bl sub_80DED10
+ bl ContestBG_FillBoxWithTile
mov r3, r8
cmp r3, 0
ble _080DC284
@@ -10314,7 +2732,7 @@ _080DCDBC:
add r1, sp, 0x4
movs r2, 0x37
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
@@ -10357,7 +2775,7 @@ _080DCE14:
add r1, sp, 0x4
movs r2, 0x5
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
@@ -10440,7 +2858,7 @@ _080DCECC:
movs r4, 0
cmp r4, r5
bge _080DCF48
- ldr r7, =gUnknown_02039F00
+ ldr r7, =gContestMonConditions
mov r9, r7
lsls r0, r5, 1
adds r1, r0, 0
@@ -11173,7 +3591,7 @@ sub_80DD45C: @ 80DD45C
lsrs r6, r1, 24
ldr r0, =gStringVar1
lsls r1, r4, 6
- ldr r2, =gUnknown_02039E00 + 2
+ ldr r2, =gContestMons + 2
adds r1, r2
bl StringCopy
ldr r0, =gStringVar2
@@ -11253,7 +3671,7 @@ _080DD52C:
bl sub_80DB89C
adds r0, r4, 0
movs r1, 0x1
- bl sub_80DEC30
+ bl Contest_StartTextPrinter
pop {r4-r6}
pop {r0}
bx r0
@@ -12747,7 +5165,7 @@ _080DE146:
adds r1, r4, 0
movs r2, 0x14
adds r3, r6, 0
- bl sub_80DECB8
+ bl ContestBG_FillBoxWithIncrementingTile
adds r4, 0x10
lsls r4, 16
lsrs r4, 16
@@ -12766,7 +5184,7 @@ _080DE146:
adds r1, r4, 0
movs r2, 0x14
adds r3, r5, 0
- bl sub_80DECB8
+ bl ContestBG_FillBoxWithIncrementingTile
movs r0, 0x63
bl PlaySE
_080DE1CA:
@@ -12907,7 +5325,7 @@ sub_80DE224: @ 80DE224
movs r3, 0
bl CopyToBgTilemapBuffer
movs r0, 0x1
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
movs r5, 0
ldr r7, =gSprites
movs r6, 0x4
@@ -12970,7 +5388,7 @@ sub_80DE350: @ 80DE350
mov r0, sp
bl CpuSet
movs r0, 0x1
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
movs r0, 0xA
bl GetGpuReg
add r3, sp, 0x4
@@ -13165,7 +5583,7 @@ _080DE4E2:
b _080DE5B4
.pool
_080DE52C:
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r0, [r0]
ands r1, r0
cmp r1, 0
@@ -13594,7 +6012,7 @@ sub_80DE864: @ 80DE864
bl sub_80DE834
lsls r0, 16
lsrs r5, r0, 16
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
lsls r0, r7, 6
adds r0, r1
ldrh r0, [r0]
@@ -13675,7 +6093,7 @@ _080DE920:
lsls r0, 2
adds r0, r1
ldrb r4, [r0, 0x1B]
- ldr r5, =gUnknown_02039E00
+ ldr r5, =gContestMons
lsls r4, 6
adds r0, r4, r5
ldrh r0, [r0]
@@ -13767,7 +6185,7 @@ sub_80DE9DC: @ 80DE9DC
ldr r0, [r6]
ldr r0, [r0, 0x18]
strb r4, [r0, 0x5]
- ldr r5, =gUnknown_02039E00
+ ldr r5, =gContestMons
lsls r4, 6
adds r0, r4, r5
ldrh r0, [r0]
@@ -13919,8 +6337,8 @@ _080DEB64:
.pool
thumb_func_end sub_80DEAA8
- thumb_func_start sub_80DEB70
-sub_80DEB70: @ 80DEB70
+ thumb_func_start Contest_PrintTextToBg0WindowStd
+Contest_PrintTextToBg0WindowStd: @ 80DEB70
push {r4,lr}
sub sp, 0x10
adds r4, r0, 0
@@ -13960,15 +6378,15 @@ sub_80DEB70: @ 80DEB70
adds r0, r4, 0
bl PutWindowTilemap
movs r0, 0
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
add sp, 0x10
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_80DEB70
+ thumb_func_end Contest_PrintTextToBg0WindowStd
- thumb_func_start sub_80DEBD0
-sub_80DEBD0: @ 80DEBD0
+ thumb_func_start Contest_PrintTextToBg0WindowAt
+Contest_PrintTextToBg0WindowAt: @ 80DEBD0
push {r4,r5,lr}
sub sp, 0x10
adds r5, r0, 0
@@ -14008,15 +6426,15 @@ sub_80DEBD0: @ 80DEBD0
adds r0, r5, 0
bl PutWindowTilemap
movs r0, 0
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
add sp, 0x10
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_80DEBD0
+ thumb_func_end Contest_PrintTextToBg0WindowAt
- thumb_func_start sub_80DEC30
-sub_80DEC30: @ 80DEC30
+ thumb_func_start Contest_StartTextPrinter
+Contest_StartTextPrinter: @ 80DEC30
push {r4,r5,lr}
sub sp, 0x10
str r0, [sp]
@@ -14057,7 +6475,7 @@ sub_80DEC30: @ 80DEC30
bl AddTextPrinter
b _080DECA4
_080DEC80:
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
adds r0, r5, 0
ands r0, r1
@@ -14078,15 +6496,15 @@ _080DECA4:
movs r0, 0x4
bl PutWindowTilemap
movs r0, 0
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
add sp, 0x10
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_80DEC30
+ thumb_func_end Contest_StartTextPrinter
- thumb_func_start sub_80DECB8
-sub_80DECB8: @ 80DECB8
+ thumb_func_start ContestBG_FillBoxWithIncrementingTile
+ContestBG_FillBoxWithIncrementingTile: @ 80DECB8
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -14121,17 +6539,17 @@ sub_80DECB8: @ 80DECB8
mov r0, r8
bl WriteSequenceToBgTilemapBuffer
mov r0, r8
- bl sub_80DED60
+ bl Contest_SetBgCopyFlags
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_80DECB8
+ thumb_func_end ContestBG_FillBoxWithIncrementingTile
- thumb_func_start sub_80DED10
-sub_80DED10: @ 80DED10
+ thumb_func_start ContestBG_FillBoxWithTile
+ContestBG_FillBoxWithTile: @ 80DED10
push {r4-r6,lr}
sub sp, 0x10
ldr r4, [sp, 0x20]
@@ -14156,15 +6574,15 @@ sub_80DED10: @ 80DED10
str r6, [sp, 0x8]
movs r4, 0
str r4, [sp, 0xC]
- bl sub_80DECB8
+ bl ContestBG_FillBoxWithIncrementingTile
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end sub_80DED10
+ thumb_func_end ContestBG_FillBoxWithTile
- thumb_func_start sub_80DED4C
-sub_80DED4C: @ 80DED4C
+ thumb_func_start Contest_RunTextPrinters
+Contest_RunTextPrinters: @ 80DED4C
push {lr}
bl RunTextPrinters
movs r0, 0x4
@@ -14173,11 +6591,11 @@ sub_80DED4C: @ 80DED4C
lsrs r0, 16
pop {r1}
bx r1
- thumb_func_end sub_80DED4C
+ thumb_func_end Contest_RunTextPrinters
- thumb_func_start sub_80DED60
-sub_80DED60: @ 80DED60
- ldr r2, =gUnknown_02039F38
+ thumb_func_start Contest_SetBgCopyFlags
+Contest_SetBgCopyFlags: @ 80DED60
+ ldr r2, =sContestBgCopyFlags
movs r1, 0x1
lsls r1, r0
ldrb r0, [r2]
@@ -14185,7 +6603,7 @@ sub_80DED60: @ 80DED60
strb r1, [r2]
bx lr
.pool
- thumb_func_end sub_80DED60
+ thumb_func_end Contest_SetBgCopyFlags
thumb_func_start ResetContestLinkResults
ResetContestLinkResults: @ 80DED74
@@ -14236,7 +6654,7 @@ sub_80DEDA8: @ 80DEDA8
lsrs r0, 24
mov r8, r0
movs r5, 0
- ldr r1, =gUnknown_02039F20
+ ldr r1, =gContestFinalStandings
ldrb r0, [r1]
cmp r0, 0
beq _080DEDE6
@@ -14252,7 +6670,7 @@ _080DEDE6:
ldr r0, [sp]
cmp r0, 0xFF
bne _080DEE00
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r5, r0
beq _080DEE00
@@ -14316,7 +6734,7 @@ _080DEE54:
ldr r6, =0x00002e90
adds r2, r0, r6
adds r2, r7
- ldr r4, =gUnknown_02039E00
+ ldr r4, =gContestMons
lsls r5, 6
adds r1, r4, 0
adds r1, 0x38
@@ -14351,7 +6769,7 @@ _080DEE54:
adds r5, r4
adds r1, r5, 0
bl StringCopy
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -14404,7 +6822,7 @@ _080DEF34:
.pool
_080DEF50:
ldr r6, =gUnknown_02039F3C
- ldr r4, =gUnknown_02039E00
+ ldr r4, =gContestMons
lsls r5, 6
adds r0, r4, 0
adds r0, 0x38
@@ -14820,7 +7238,7 @@ sub_80DF250: @ 80DF250
mov r7, sp
adds r7, 0x2
str r7, [sp, 0x24]
- ldr r5, =gUnknown_02039F20
+ ldr r5, =gContestFinalStandings
movs r2, 0
movs r3, 0x80
lsls r3, 17
@@ -14896,11 +7314,11 @@ _080DF2EE:
strb r0, [r2, 0xD]
_080DF30A:
movs r5, 0
- ldr r2, =gUnknown_02039F00
+ ldr r2, =gContestMonConditions
add r2, r10
movs r6, 0
ldrsh r1, [r2, r6]
- ldr r7, =gUnknown_02039F00
+ ldr r7, =gContestMonConditions
movs r3, 0
ldrsh r0, [r7, r3]
cmp r1, r0
@@ -14921,7 +7339,7 @@ _080DF322:
_080DF336:
cmp r5, 0x4
bne _080DF354
- ldr r1, =gUnknown_02039F20
+ ldr r1, =gContestFinalStandings
adds r0, r4, r1
ldrb r0, [r0]
cmp r0, 0
@@ -14939,12 +7357,12 @@ _080DF354:
mov r12, r3
mov r8, r3
movs r5, 0
- ldr r0, =gUnknown_02039F00
+ ldr r0, =gContestMonConditions
add r0, r10
movs r7, 0
ldrsh r6, [r0, r7]
str r6, [sp, 0x34]
- ldr r2, =gUnknown_02039F00
+ ldr r2, =gContestMonConditions
ldr r0, =gUnknown_02039F18
mov r1, r10
adds r6, r1, r0
@@ -15156,8 +7574,8 @@ sub_80DF4F8: @ 80DF4F8
mov r5, r8
push {r5-r7}
sub sp, 0xC
- ldr r1, =gUnknown_02039F20
- ldr r0, =gUnknown_02039F25
+ ldr r1, =gContestFinalStandings
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -15187,7 +7605,7 @@ _080DF528:
lsls r2, r7, 1
lsls r4, r7, 4
mov r8, r4
- ldr r1, =gUnknown_02039F00
+ ldr r1, =gContestMonConditions
adds r0, r2, r1
movs r6, 0
ldrsh r5, [r0, r6]
@@ -15518,7 +7936,7 @@ _080DF7AE:
add r1, sp, 0x4
movs r2, 0x5
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x1C]
@@ -15576,7 +7994,7 @@ _080DF80A:
mov r1, r9
movs r2, 0x5
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
ldrb r0, [r4]
mov r1, sp
adds r1, r5
@@ -15585,7 +8003,7 @@ _080DF80A:
str r2, [sp]
movs r2, 0x37
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
mov r1, r8
lsls r0, r1, 24
lsrs r7, r0, 24
@@ -15664,7 +8082,7 @@ _080DF8CC:
mov r1, r9
movs r2, 0x5
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
ldrb r0, [r4]
mov r1, sp
adds r1, r5
@@ -15673,7 +8091,7 @@ _080DF8CC:
str r2, [sp]
movs r2, 0x37
movs r3, 0x1
- bl sub_80DEBD0
+ bl Contest_PrintTextToBg0WindowAt
mov r1, r8
lsls r0, r1, 24
lsrs r7, r0, 24
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index 3438107eb..ff48661f0 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -39,7 +39,7 @@ _081562DE:
strb r1, [r0]
ldr r0, [r2]
ldr r2, [r0, 0xC]
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
adds r0, r2, 0
adds r0, 0x41
ldrb r0, [r0]
@@ -144,7 +144,7 @@ sub_81563B0: @ 81563B0
beq _081564A0
adds r7, r5, 0
ldr r6, =gAIScriptPtr
- ldr r0, =gUnknown_02039E00 + 30
+ ldr r0, =gContestMons + 30
mov r8, r0
_081563CC:
ldr r0, [r7]
@@ -1167,7 +1167,7 @@ sub_8156B88: @ 8156B88
ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
- ldr r1, =gUnknown_02039F00
+ ldr r1, =gContestMonConditions
adds r0, r2, 0
adds r0, 0x41
ldrb r0, [r0]
@@ -1436,7 +1436,7 @@ _08156D9C:
thumb_func_start sub_8156DA0
sub_8156DA0: @ 8156DA0
push {r4,lr}
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0xC]
@@ -1615,7 +1615,7 @@ _08156EFC:
thumb_func_start sub_8156F04
sub_8156F04: @ 8156F04
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
@@ -1714,7 +1714,7 @@ _08156FC8:
thumb_func_start sub_8156FCC
sub_8156FCC: @ 8156FCC
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
@@ -1818,7 +1818,7 @@ _0815709C:
thumb_func_start sub_81570A0
sub_81570A0: @ 81570A0
push {r4-r7,lr}
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0xC]
@@ -1923,7 +1923,7 @@ _0815716C:
thumb_func_start sub_8157174
sub_8157174: @ 8157174
push {r4-r7,lr}
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0xC]
@@ -2028,7 +2028,7 @@ _08157240:
thumb_func_start sub_8157248
sub_8157248: @ 8157248
push {r4,lr}
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
@@ -2208,7 +2208,7 @@ _081573B0:
thumb_func_start sub_81573B4
sub_81573B4: @ 81573B4
push {r4,lr}
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
@@ -2388,7 +2388,7 @@ _0815751C:
thumb_func_start sub_8157520
sub_8157520: @ 8157520
push {r4,r5,lr}
- ldr r3, =gUnknown_02039E00
+ ldr r3, =gContestMons
ldr r5, =gContestResources
ldr r4, [r5]
ldr r1, [r4, 0xC]
@@ -2575,7 +2575,7 @@ _08157684:
sub_8157688: @ 8157688
push {r4-r6,lr}
movs r3, 0
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
@@ -2711,7 +2711,7 @@ _08157788:
sub_8157790: @ 8157790
push {r4-r6,lr}
movs r3, 0
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
@@ -2846,7 +2846,7 @@ _08157890:
sub_8157898: @ 8157898
push {r4-r6,lr}
movs r5, 0
- ldr r3, =gUnknown_02039E00
+ ldr r3, =gContestMons
ldr r6, =gContestResources
ldr r4, [r6]
ldr r1, [r4, 0xC]
@@ -3729,7 +3729,7 @@ sub_8157F5C: @ 8157F5C
ldr r1, =gContestResources
ldr r1, [r1]
ldr r3, [r1, 0xC]
- ldr r2, =gUnknown_02039F00
+ ldr r2, =gContestMonConditions
lsrs r0, 23
adds r0, r2
adds r1, r3, 0
@@ -5030,7 +5030,7 @@ sub_8158948: @ 8158948
push {r4-r6,lr}
movs r5, 0
movs r4, 0
- ldr r6, =gUnknown_02039E00 + 30
+ ldr r6, =gContestMons + 30
_08158950:
lsls r1, r4, 1
ldr r0, =gContestResources
@@ -5156,7 +5156,7 @@ sub_8158A34: @ 8158A34
lsls r0, 8
orrs r5, r0
movs r4, 0
- ldr r0, =gUnknown_02039E00
+ ldr r0, =gContestMons
mov r12, r0
ldr r2, =gContestResources
ldr r0, [r2]
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
index 36f444955..9eefa154f 100644
--- a/asm/contest_link_80F57C4.s
+++ b/asm/contest_link_80F57C4.s
@@ -276,10 +276,10 @@ sub_80F5A74: @ 80F5A74
lsrs r0, 24
adds r5, r0, 0
lsls r1, r5, 6
- ldr r0, =gUnknown_02039E00
+ ldr r0, =gContestMons
adds r7, r1, r0
ldr r6, =gDisplayedStringBattle
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
cmp r5, r0
bne _080F5A96
@@ -398,7 +398,7 @@ sub_80F5B00: @ 80F5B00
movs r1, 0x14
bl CreateTask
bl sub_80F7880
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@@ -503,7 +503,7 @@ sub_80F5CE4: @ 80F5CE4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r3, =gUnknown_02039F2A
+ ldr r3, =gIsLinkContest
ldrb r1, [r3]
movs r0, 0x1
ands r0, r1
@@ -535,8 +535,8 @@ _080F5D20:
b _080F5E2E
_080F5D2A:
bl sub_80DBED4
- ldr r1, =gUnknown_02039F20
- ldr r0, =gUnknown_02039F25
+ ldr r1, =gContestFinalStandings
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -648,7 +648,7 @@ _080F5E2E:
lsls r0, 3
adds r4, r0, r1
strh r2, [r4, 0x8]
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r5, 0x1
adds r0, r5, 0
@@ -663,8 +663,8 @@ _080F5E2E:
_080F5E78:
movs r0, 0x24
bl IncrementGameStat
- ldr r1, =gUnknown_02039F20
- ldr r0, =gUnknown_02039F25
+ ldr r1, =gContestFinalStandings
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -1160,7 +1160,7 @@ _080F6298:
adds r1, r0
lsls r1, 3
adds r1, r7
- ldr r0, =gUnknown_02039F20
+ ldr r0, =gContestFinalStandings
adds r0, r4, r0
ldrb r0, [r0]
strh r0, [r1, 0x8]
@@ -1201,7 +1201,7 @@ _080F62F2:
adds r0, 0x1
strh r0, [r4, 0x8]
movs r4, 0
- ldr r1, =gUnknown_02039F20
+ ldr r1, =gContestFinalStandings
ldrb r0, [r1]
cmp r0, 0
beq _080F631C
@@ -1236,10 +1236,10 @@ _080F6334:
movs r0, 0
strh r0, [r2, 0xA]
movs r4, 0
- ldr r1, =gUnknown_02039F20
+ ldr r1, =gContestFinalStandings
ldrb r0, [r1]
ldr r7, =gStringVar1
- ldr r2, =gUnknown_02039E00 + 13
+ ldr r2, =gContestMons + 13
mov r8, r2
cmp r0, 0
beq _080F636E
@@ -1355,12 +1355,12 @@ _080F6454:
adds r0, r3, 0
strh r0, [r1]
movs r2, 0
- ldr r1, =gUnknown_02039F20
+ ldr r1, =gContestFinalStandings
ldrb r0, [r1]
lsls r4, r7, 2
mov r10, r4
- ldr r3, =gUnknown_02039E00
- ldr r4, =gUnknown_02039F25
+ ldr r3, =gContestMons
+ ldr r4, =gContestPlayerMonIndex
mov r9, r4
ldr r4, =gMonFrontPicTable
mov r12, r4
@@ -1623,14 +1623,14 @@ sub_80F66B4: @ 80F66B4
ands r0, r1
cmp r0, 0
beq _080F6702
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
adds r0, r2, 0
ands r0, r1
lsls r6, r7, 2
cmp r0, 0
bne _080F66F2
- ldr r5, =gUnknown_02039E00
+ ldr r5, =gContestMons
movs r4, 0x3
_080F66DA:
ldrh r0, [r5]
@@ -1664,7 +1664,7 @@ sub_80F671C: @ 80F671C
push {r4,lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -1710,7 +1710,7 @@ sub_80F677C: @ 80F677C
ldrb r0, [r0]
cmp r0, 0
bne _080F67AC
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@@ -1739,14 +1739,14 @@ task_repel: @ 80F67C4
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080F67E6
- ldr r1, =gUnknown_02039F20
- ldr r0, =gUnknown_02039F25
+ ldr r1, =gContestFinalStandings
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -1980,7 +1980,7 @@ sub_80F69B8: @ 80F69B8
lsrs r5, r2, 24
lsls r3, 24
lsrs r6, r3, 24
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
movs r2, 0
ldrb r0, [r0]
cmp r4, r0
@@ -2059,7 +2059,7 @@ sub_80F6A64: @ 80F6A64
lsls r1, 24
lsrs r6, r1, 24
movs r5, 0
- ldr r4, =gUnknown_02039E00
+ ldr r4, =gContestMons
_080F6A74:
ldrh r0, [r4]
lsls r1, r5, 24
@@ -2088,7 +2088,7 @@ sub_80F6A9C: @ 80F6A9C
movs r5, 0xA0
lsls r5, 16
_080F6AA6:
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
lsls r0, r4, 6
adds r0, r1
ldrh r0, [r0]
@@ -2119,7 +2119,7 @@ _080F6AA6:
thumb_func_start sub_80F6AE8
sub_80F6AE8: @ 80F6AE8
push {r4,lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@@ -2955,7 +2955,7 @@ sub_80F71C8: @ 80F71C8
sub sp, 0xC
movs r5, 0x5
movs r4, 0x1
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
adds r0, r4, 0
ands r0, r1
@@ -3104,7 +3104,7 @@ sub_80F7310: @ 80F7310
lsls r0, 24
lsls r1, 24
lsrs r5, r1, 24
- ldr r1, =gUnknown_02039F00
+ ldr r1, =gContestMonConditions
lsrs r0, 23
adds r0, r1
movs r1, 0
@@ -3322,7 +3322,7 @@ sub_80F74BC: @ 80F74BC
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
- ldr r1, =gUnknown_02039F20
+ ldr r1, =gContestFinalStandings
ldrb r0, [r1]
ldr r6, =gUnknown_0203A034
cmp r0, 0
@@ -3729,7 +3729,7 @@ sub_80F77E0: @ 80F77E0
adds r1, r2
strh r4, [r1, 0x8]
strh r5, [r1, 0xA]
- ldr r0, =gUnknown_02039E00
+ ldr r0, =gContestMons
lsls r4, 6
adds r4, r0
ldrh r0, [r4]
@@ -3765,7 +3765,7 @@ sub_80F7824: @ 80F7824
strh r0, [r4, 0x1C]
ldrh r0, [r4, 0xC]
ldrb r2, [r4, 0x1E]
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
lsls r3, r5, 6
adds r1, 0x38
adds r3, r1
@@ -3847,7 +3847,7 @@ _080F78E4:
mov r8, r5
mov r10, r5
_080F78EA:
- ldr r0, =gUnknown_02039F00
+ ldr r0, =gContestMonConditions
mov r1, r8
lsls r7, r1, 1
adds r0, r7, r0
@@ -3987,7 +3987,7 @@ _080F79CC:
negs r0, r0
_080F7A02:
strb r0, [r1, 0x12]
- ldr r0, =gUnknown_02039F20
+ ldr r0, =gContestFinalStandings
add r0, r8
ldrb r0, [r0]
cmp r0, 0
@@ -4721,8 +4721,8 @@ _080F7FEE:
sub_80F7FFC: @ 80F7FFC
push {r4-r7,lr}
sub sp, 0x4
- ldr r1, =gUnknown_02039F20
- ldr r0, =gUnknown_02039F25
+ ldr r1, =gContestFinalStandings
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -4994,7 +4994,7 @@ sub_80F8264: @ 80F8264
ldr r0, =gSpecialVar_0x8006
ldrh r1, [r0]
lsls r1, 6
- ldr r0, =gUnknown_02039E00 + 13
+ ldr r0, =gContestMons + 13
adds r1, r0
adds r0, r4, 0
bl StringCopy
@@ -5013,7 +5013,7 @@ sub_80F8290: @ 80F8290
ldr r1, =gSpecialVar_0x8006
ldrh r1, [r1]
lsls r1, 6
- ldr r2, =gUnknown_02039E00 + 2
+ ldr r2, =gContestMons + 2
adds r1, r2
bl StringCopy
pop {r0}
@@ -5027,7 +5027,7 @@ sub_80F82B4: @ 80F82B4
movs r1, 0
movs r2, 0
ldr r5, =gSpecialVar_0x8004
- ldr r4, =gUnknown_02039F00
+ ldr r4, =gContestMonConditions
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 1
@@ -5060,7 +5060,7 @@ _080F82DC:
thumb_func_start sub_80F82FC
sub_80F82FC: @ 80F82FC
ldr r2, =gSpecialVar_0x8004
- ldr r1, =gUnknown_02039F00
+ ldr r1, =gContestMonConditions
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 1
@@ -5075,7 +5075,7 @@ sub_80F82FC: @ 80F82FC
sub_80F831C: @ 80F831C
push {lr}
movs r1, 0
- ldr r2, =gUnknown_02039F20
+ ldr r2, =gContestFinalStandings
ldrb r0, [r2]
ldr r3, =gSpecialVar_0x8005
cmp r0, 0
@@ -5101,10 +5101,10 @@ _080F833C:
sub_80F834C: @ 80F834C
push {r4,lr}
movs r1, 0
- ldr r2, =gUnknown_02039F20
+ ldr r2, =gContestFinalStandings
ldrb r0, [r2]
ldr r4, =gStringVar3
- ldr r3, =gUnknown_02039E00 + 13
+ ldr r3, =gContestMons + 13
cmp r0, 0
beq _080F836E
_080F835C:
@@ -5134,10 +5134,10 @@ _080F836E:
sub_80F8390: @ 80F8390
push {r4,lr}
movs r1, 0
- ldr r2, =gUnknown_02039F20
+ ldr r2, =gContestFinalStandings
ldrb r0, [r2]
ldr r4, =gStringVar1
- ldr r3, =gUnknown_02039E00 + 2
+ ldr r3, =gContestMons + 2
cmp r0, 0
beq _080F83B2
_080F83A0:
@@ -5216,7 +5216,7 @@ sub_80F840C: @ 80F840C
thumb_func_start sub_80F8438
sub_80F8438: @ 80F8438
ldr r2, =gSpecialVar_0x8004
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
ldr r0, =gSpecialVar_0x8006
ldrh r0, [r0]
lsls r0, 6
@@ -5272,7 +5272,7 @@ sub_80F8484: @ 80F8484
thumb_func_start sub_80F84B0
sub_80F84B0: @ 80F84B0
ldr r0, =gSpecialVar_0x8004
- ldr r1, =gUnknown_02039F25
+ ldr r1, =gContestPlayerMonIndex
ldrb r1, [r1]
strh r1, [r0]
bx lr
@@ -5314,7 +5314,7 @@ sub_80F8508: @ 80F8508
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
@@ -5578,7 +5578,7 @@ sub_80F8714: @ 80F8714
b _080F877E
.pool
_080F8748:
- ldr r5, =gUnknown_02039E00 + 2
+ ldr r5, =gContestMons + 2
movs r4, 0x3
_080F874C:
adds r0, r5, 0
diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s
index 99fec9d99..5934c3623 100644
--- a/asm/contest_link_80FC4F4.s
+++ b/asm/contest_link_80FC4F4.s
@@ -139,12 +139,12 @@ sub_80FC5DC: @ 80FC5DC
cmp r0, 0
beq _080FC650
bl GetMultiplayerId
- ldr r1, =gUnknown_02039F25
+ ldr r1, =gContestPlayerMonIndex
strb r0, [r1]
bl GetLinkPlayerCount
ldr r4, =gUnknown_02039F30
strb r0, [r4]
- ldr r1, =gUnknown_02039F2A
+ ldr r1, =gIsLinkContest
movs r0, 0x1
strb r0, [r1]
ldr r0, =gWirelessCommType
@@ -182,7 +182,7 @@ _080FC63A:
ldrb r6, [r6]
cmp r3, r6
bge _080FC64A
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r2, 0x4
orrs r1, r2
@@ -201,7 +201,7 @@ _080FC650:
sub_80FC670: @ 80FC670
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
@@ -285,10 +285,10 @@ _080FC6FE:
cmp r0, 0
beq _080FC7F4
ldr r0, =gBlockSendBuffer
- ldr r1, =gUnknown_02039F25
+ ldr r1, =gContestPlayerMonIndex
ldrb r1, [r1]
lsls r1, 6
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
adds r1, r2
movs r2, 0x40
bl memcpy
@@ -298,10 +298,10 @@ _080FC6FE:
.pool
_080FC738:
ldr r0, =gBlockSendBuffer
- ldr r1, =gUnknown_02039F25
+ ldr r1, =gContestPlayerMonIndex
ldrb r1, [r1]
lsls r1, 6
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
adds r1, r2
movs r2, 0x40
bl memcpy
@@ -321,7 +321,7 @@ _080FC758:
ldr r6, =gLinkPlayers
_080FC770:
lsls r4, r5, 6
- ldr r0, =gUnknown_02039E00
+ ldr r0, =gContestMons
adds r4, r0
lsls r1, r5, 8
ldr r0, =gBlockRecvBuffer
@@ -434,7 +434,7 @@ _080FC858:
adds r1, r4, 0
movs r2, 0x4
bl memcpy
- ldr r0, =gUnknown_030060B8
+ ldr r0, =gContestRngValue
adds r1, r4, 0
movs r2, 0x4
bl memcpy
@@ -603,7 +603,7 @@ _080FC9C4:
lsls r0, 24
cmp r0, 0
beq _080FC9F0
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
movs r1, 0x1
bl sub_80FC4F4
cmp r0, 0x1
@@ -659,7 +659,7 @@ _080FCA30:
beq _080FCAB2
ldr r0, =gContestResources
ldr r2, [r0]
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r1, r0, 3
subs r1, r0
@@ -860,7 +860,7 @@ _080FCC08:
lsls r0, 24
cmp r0, 0
beq _080FCC82
- ldr r0, =gUnknown_02039F20
+ ldr r0, =gContestFinalStandings
movs r1, 0x4
_080FCC16:
bl sub_80FC4F4
@@ -881,7 +881,7 @@ _080FCC38:
lsls r0, 24
cmp r0, 0
beq _080FCC82
- ldr r0, =gUnknown_02039F20
+ ldr r0, =gContestFinalStandings
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
@@ -1262,7 +1262,7 @@ _080FCF80:
lsls r0, 24
cmp r0, 0
beq _080FCFBE
- ldr r0, =gUnknown_02039F00
+ ldr r0, =gContestMonConditions
movs r1, 0x8
bl sub_80FC4F4
cmp r0, 0x1
@@ -1274,7 +1274,7 @@ _080FCF9C:
lsls r0, 24
cmp r0, 0
beq _080FCFBE
- ldr r0, =gUnknown_02039F00
+ ldr r0, =gContestMonConditions
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
diff --git a/asm/contest_link_81D9DE4.s b/asm/contest_link_81D9DE4.s
index 12eb159f7..35191e10f 100644
--- a/asm/contest_link_81D9DE4.s
+++ b/asm/contest_link_81D9DE4.s
@@ -88,8 +88,8 @@ _081D9EA4:
_081D9EB4:
bl GetMonData
strb r0, [r4]
- ldr r5, =gUnknown_02039E00
- ldr r4, =gUnknown_02039F25
+ ldr r5, =gContestMons
+ ldr r4, =gContestPlayerMonIndex
ldrb r0, [r4]
lsls r0, 6
adds r0, r5
@@ -266,7 +266,7 @@ _081DA02A:
lsls r0, 24
cmp r0, 0
bne _081DA0B8
- ldr r0, =gUnknown_02039E00
+ ldr r0, =gContestMons
adds r1, r0, 0
adds r1, 0x2C
ldrb r2, [r1]
@@ -438,10 +438,10 @@ _081DA1A4:
lsls r0, 24
cmp r0, 0
beq _081DA224
- ldr r0, =gUnknown_02039F25
+ ldr r0, =gContestPlayerMonIndex
ldrb r0, [r0]
lsls r0, 6
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
adds r0, r1
movs r1, 0x40
bl sub_80FC4F4
@@ -466,7 +466,7 @@ _081DA1D4:
ldr r6, =gLinkPlayers
_081DA1EC:
lsls r4, r5, 6
- ldr r0, =gUnknown_02039E00
+ ldr r0, =gContestMons
adds r4, r0
lsls r1, r5, 8
ldr r0, =gBlockRecvBuffer
@@ -558,7 +558,7 @@ _081DA2AC:
adds r1, r4, 0
movs r2, 0x4
bl memcpy
- ldr r0, =gUnknown_030060B8
+ ldr r0, =gContestRngValue
adds r1, r4, 0
movs r2, 0x4
bl memcpy
@@ -823,7 +823,7 @@ _081DA4CC:
ldr r0, =gUnknown_02039F30
ldrb r2, [r0]
lsls r0, r2, 6
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
adds r0, r1
movs r1, 0x4
subs r1, r2
@@ -847,7 +847,7 @@ _081DA50C:
ldr r4, =gUnknown_02039F30
ldrb r3, [r4]
lsls r0, r3, 6
- ldr r5, =gUnknown_02039E00
+ ldr r5, =gContestMons
adds r0, r5
ldr r1, =gBlockRecvBuffer
movs r2, 0x4
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 4ee0fa2ae..8b793ab40 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -5,1272 +5,6 @@
.text
- thumb_func_start sub_811A20C
-sub_811A20C: @ 811A20C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- adds r6, r0, 0
- mov r8, r1
- mov r9, r2
- adds r5, r3, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, 24
- lsrs r5, 24
- bl ResetTasks
- ldr r0, =sub_811A2C0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0xA]
- strh r5, [r0, 0x16]
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, r8
- bl SetWordTaskArg
- adds r0, r4, 0
- movs r1, 0x4
- mov r2, r9
- bl SetWordTaskArg
- ldr r0, =sub_811A278
- bl SetMainCallback2
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A20C
-
- thumb_func_start sub_811A278
-sub_811A278: @ 811A278
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_811A278
-
- thumb_func_start sub_811A290
-sub_811A290: @ 811A290
- push {lr}
- bl TransferPlttBuffer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- pop {r0}
- bx r0
- thumb_func_end sub_811A290
-
- thumb_func_start sub_811A2A4
-sub_811A2A4: @ 811A2A4
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- str r1, [r2]
- movs r0, 0
- strh r0, [r2, 0x8]
- bx lr
- .pool
- thumb_func_end sub_811A2A4
-
- thumb_func_start sub_811A2C0
-sub_811A2C0: @ 811A2C0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl is_c1_link_related_active
- cmp r0, 0
- bne _0811A2DC
-_0811A2CE:
- adds r0, r4, 0
- bl sub_811A428
- lsls r0, 24
- cmp r0, 0
- bne _0811A2CE
- b _0811A2EA
-_0811A2DC:
- adds r0, r4, 0
- bl sub_811A428
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0811A2F2
-_0811A2EA:
- ldr r1, =sub_811A2FC
- adds r0, r4, 0
- bl sub_811A2A4
-_0811A2F2:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A2C0
-
- thumb_func_start sub_811A2FC
-sub_811A2FC: @ 811A2FC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bls _0811A318
- b _0811A41C
-_0811A318:
- lsls r0, 2
- ldr r1, =_0811A32C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811A32C:
- .4byte _0811A344
- .4byte _0811A370
- .4byte _0811A3CC
- .4byte _0811A3D4
- .4byte _0811A3EC
- .4byte _0811A40C
-_0811A344:
- ldr r0, =sub_811A290
- bl SetVBlankCallback
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- adds r1, r4, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x5
- b _0811A41A
- .pool
-_0811A370:
- bl sub_811AAAC
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- adds r0, r4, 0
- bl sub_811A88C
- cmp r0, 0
- beq _0811A39E
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x3
- strh r0, [r5]
- strh r4, [r5, 0xC]
- b _0811A41C
-_0811A39E:
- cmp r4, 0x18
- bne _0811A3B6
- movs r1, 0x1
- negs r1, r1
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- b _0811A41A
-_0811A3B6:
- cmp r6, 0
- beq _0811A41C
- movs r0, 0x5
- bl PlaySE
- adds r0, r6, 0
- bl sub_811C158
- ldrh r0, [r5]
- adds r0, 0x1
- b _0811A41A
-_0811A3CC:
- bl sub_811C170
- lsls r0, 24
- b _0811A414
-_0811A3D4:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811A41C
- ldrh r0, [r5, 0xC]
- bl sub_811A8A4
- b _0811A41C
- .pool
-_0811A3EC:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811A41C
- adds r0, r2, 0
- movs r1, 0x4
- bl GetWordTaskArg
- bl sub_811A4D0
- b _0811A41C
- .pool
-_0811A40C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
-_0811A414:
- cmp r0, 0
- bne _0811A41C
- movs r0, 0x1
-_0811A41A:
- strh r0, [r5]
-_0811A41C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A2FC
-
- thumb_func_start sub_811A428
-sub_811A428: @ 811A428
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x4
- bhi _0811A4BC
- lsls r0, 2
- ldr r1, =_0811A454
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811A454:
- .4byte _0811A468
- .4byte _0811A47C
- .4byte _0811A482
- .4byte _0811A498
- .4byte _0811A4B0
-_0811A468:
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- b _0811A4C0
-_0811A47C:
- bl sub_811F28C
- b _0811A49C
-_0811A482:
- ldrb r4, [r6, 0x2]
- adds r0, r5, 0
- movs r1, 0x2
- bl GetWordTaskArg
- adds r1, r0, 0
- ldrb r2, [r6, 0xE]
- adds r0, r4, 0
- bl sub_811A95C
- b _0811A49C
-_0811A498:
- bl sub_811BF8C
-_0811A49C:
- lsls r0, 24
- cmp r0, 0
- bne _0811A4C0
- adds r0, r5, 0
- movs r1, 0x4
- bl GetWordTaskArg
- bl sub_811A4D0
- b _0811A4C0
-_0811A4B0:
- bl sub_811BFA4
- lsls r0, 24
- cmp r0, 0
- beq _0811A4C0
- b _0811A4C6
-_0811A4BC:
- movs r0, 0
- b _0811A4C8
-_0811A4C0:
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
-_0811A4C6:
- movs r0, 0x1
-_0811A4C8:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811A428
-
- thumb_func_start sub_811A4D0
-sub_811A4D0: @ 811A4D0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811C13C
- bl sub_811AA90
- bl sub_811F2B8
- bl FreeAllWindowBuffers
- adds r0, r4, 0
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811A4D0
-
- thumb_func_start easy_chat_input_maybe
-easy_chat_input_maybe: @ 811A4F0
- push {r4,r5,lr}
- movs r5, 0x3
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x14
- bls _0811A4FE
- b _0811A7D4
-_0811A4FE:
- lsls r0, 2
- ldr r1, =_0811A510
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811A510:
- .4byte _0811A564
- .4byte _0811A578
- .4byte _0811A58C
- .4byte _0811A5A0
- .4byte _0811A5B4
- .4byte _0811A604
- .4byte _0811A5D8
- .4byte _0811A630
- .4byte _0811A664
- .4byte _0811A688
- .4byte _0811A6B4
- .4byte _0811A6D4
- .4byte _0811A708
- .4byte _0811A72C
- .4byte _0811A73C
- .4byte _0811A770
- .4byte _0811A7D4
- .4byte _0811A784
- .4byte _0811A798
- .4byte _0811A7AC
- .4byte _0811A7BC
-_0811A564:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002bb0
- adds r4, r0, r1
- b _0811A7C2
- .pool
-_0811A578:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00002bbc
- adds r4, r0, r2
- b _0811A7C2
- .pool
-_0811A58C:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x00002bc8
- adds r4, r0, r3
- b _0811A7C2
- .pool
-_0811A5A0:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002bd4
- adds r4, r0, r1
- b _0811A7C2
- .pool
-_0811A5B4:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r3, =0x00002be0
- adds r0, r3
- ldr r1, [r2]
- adds r4, r1, r0
- b _0811A7C2
- .pool
-_0811A5D8:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00002e36
- adds r1, r0, r2
- ldr r3, =0x00002e2a
- adds r2, r0, r3
- movs r3, 0x5
-_0811A5E6:
- ldrh r0, [r2]
- strh r0, [r2, 0xC]
- adds r2, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0811A5E6
- adds r4, r1, 0
- b _0811A7C2
- .pool
-_0811A604:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r4, r0, r1
- ldr r0, =gSpecialVar_0x8006
- ldrb r5, [r0]
- b _0811A7C2
- .pool
-_0811A630:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r3, =0x000027cc
- adds r0, r3
- ldr r1, [r2]
- adds r1, r0
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- lsls r0, 1
- adds r0, 0x1C
- adds r4, r1, r0
- movs r5, 0x1
- b _0811A7C2
- .pool
-_0811A664:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027ce
- adds r4, r0, r1
- movs r5, 0
- b _0811A7C2
- .pool
-_0811A688:
- ldr r4, =gStringVar3
- ldr r1, =gSaveBlock1Ptr
- ldr r0, [r1]
- ldr r2, =0x00002e6c
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r4]
- ldr r0, [r1]
- ldr r3, =0x00002e6e
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- b _0811A7C2
- .pool
-_0811A6B4:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002baa
- adds r4, r0, r1
- ldr r2, =0x0000ffff
- adds r0, r2, 0
- strh r0, [r4]
- movs r5, 0x1
- b _0811A7C2
- .pool
-_0811A6D4:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r3, =0x000027cc
- adds r0, r3
- ldr r1, [r2]
- adds r1, r0
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- lsls r0, 1
- adds r0, 0x4
- adds r4, r1, r0
- movs r5, 0
- b _0811A7C2
- .pool
-_0811A708:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e4
- adds r4, r0, r1
- movs r5, 0x1
- b _0811A7C2
- .pool
-_0811A72C:
- ldr r4, =gStringVar3
- adds r0, r4, 0
- movs r1, 0x2
- bl InitializeEasyChatWordArray
- b _0811A7C2
- .pool
-_0811A73C:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r3, =0x000027cc
- adds r0, r3
- ldr r1, [r2]
- adds r1, r0
- adds r4, r1, 0
- adds r4, 0x14
- ldr r2, =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1, 0x14]
- movs r5, 0x2
- b _0811A7C2
- .pool
-_0811A770:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x00003b6e
- adds r4, r0, r3
- b _0811A7C2
- .pool
-_0811A784:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003b5a
- adds r4, r0, r1
- b _0811A7C2
- .pool
-_0811A798:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00003b6c
- adds r4, r0, r2
- b _0811A7C2
- .pool
-_0811A7AC:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r3, 0x82
- lsls r3, 1
- adds r4, r0, r3
- b _0811A7C2
- .pool
-_0811A7BC:
- bl sub_801B058
- adds r4, r0, 0
-_0811A7C2:
- bl overworld_free_bg_tilemaps
- ldr r0, =gSpecialVar_0x8004
- ldrb r0, [r0]
- ldr r2, =CB2_ReturnToFieldContinueScript
- adds r1, r4, 0
- adds r3, r5, 0
- bl sub_811A20C
-_0811A7D4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end easy_chat_input_maybe
-
- thumb_func_start sub_811A7E4
-sub_811A7E4: @ 811A7E4
- push {lr}
- bl UpdatePaletteFade
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811A804
- cmp r0, 0x1
- beq _0811A80E
- b _0811A840
- .pool
-_0811A804:
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- b _0811A840
-_0811A80E:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811A84E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003b58
- adds r0, r1
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x16]
- bl overworld_free_bg_tilemaps
- bl sub_811A8F0
- b _0811A84E
- .pool
-_0811A840:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0811A84E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A7E4
-
- thumb_func_start sub_811A858
-sub_811A858: @ 811A858
- push {lr}
- ldr r0, =sub_811A7E4
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A858
-
- thumb_func_start sub_811A868
-sub_811A868: @ 811A868
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0
- ldr r1, =gUnknown_08597530
-_0811A872:
- ldrh r3, [r1]
- cmp r2, r3
- beq _0811A884
- adds r1, 0x8
- adds r0, 0x1
- cmp r0, 0x3
- bls _0811A872
- movs r0, 0x1
- negs r0, r0
-_0811A884:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811A868
-
- thumb_func_start sub_811A88C
-sub_811A88C: @ 811A88C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_811A868
- adds r1, r0, 0
- mvns r1, r1
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r1}
- bx r1
- thumb_func_end sub_811A88C
-
- thumb_func_start sub_811A8A4
-sub_811A8A4: @ 811A8A4
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_811A868
- adds r4, r0, 0
- bl ResetTasks
- ldr r0, =gUnknown_08597530
- lsls r4, 3
- adds r0, 0x4
- adds r4, r0
- ldr r0, [r4]
- bl sub_811A4D0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A8A4
-
- thumb_func_start sub_811A8CC
-sub_811A8CC: @ 811A8CC
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00003b6e
- adds r1, r0
- ldr r2, =CB2_ReturnToFieldContinueScript
- movs r0, 0xF
- movs r3, 0x3
- bl sub_811A20C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A8CC
-
- thumb_func_start sub_811A8F0
-sub_811A8F0: @ 811A8F0
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00003b5a
- adds r1, r0
- ldr r2, =CB2_ReturnToFieldContinueScript
- movs r0, 0x10
- movs r3, 0x3
- bl sub_811A20C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A8F0
-
- thumb_func_start sub_811A914
-sub_811A914: @ 811A914
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00003b6c
- adds r1, r0
- ldr r2, =CB2_ReturnToFieldContinueScript
- movs r0, 0x12
- movs r3, 0x3
- bl sub_811A20C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A914
-
- thumb_func_start sub_811A938
-sub_811A938: @ 811A938
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00003b5a
- adds r1, r0
- ldr r2, =CB2_ReturnToFieldContinueScript
- movs r0, 0x11
- movs r3, 0x3
- bl sub_811A20C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811A938
-
- thumb_func_start sub_811A95C
-sub_811A95C: @ 811A95C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, =gUnknown_0203A118
- movs r0, 0x50
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _0811A984
- movs r0, 0
- b _0811AA7E
- .pool
-_0811A984:
- movs r7, 0
- strb r5, [r0]
- ldr r0, [r4]
- mov r1, r8
- str r1, [r0, 0x38]
- strb r7, [r0, 0x5]
- ldr r0, [r4]
- strb r7, [r0, 0x6]
- ldr r0, [r4]
- strb r7, [r0, 0x9]
- ldr r0, [r4]
- strb r6, [r0, 0x12]
- ldr r0, [r4]
- strb r7, [r0, 0x13]
- adds r0, r5, 0
- bl sub_811BCC8
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r5, 0x10
- bne _0811A9C6
- ldr r0, [r4]
- adds r0, 0x14
- bl sub_811BDF0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x14
- str r1, [r0, 0x34]
- movs r1, 0x7
- strb r1, [r0, 0x4]
- lsls r0, r6, 1
- b _0811A9DE
-_0811A9C6:
- ldr r0, [r4]
- strb r7, [r0, 0x4]
- ldr r3, [r4]
- ldr r1, =gUnknown_08597550
- lsls r2, r6, 1
- adds r0, r2, r6
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- str r0, [r3, 0x34]
- adds r0, r2, 0
-_0811A9DE:
- ldr r3, =gUnknown_0203A118
- ldr r2, [r3]
- ldr r1, =gUnknown_08597550
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x1]
- strb r1, [r2, 0x2]
- ldr r1, [r3]
- ldrb r0, [r0, 0x2]
- strb r0, [r1, 0x3]
- ldr r0, [r3]
- ldrb r2, [r0, 0x2]
- ldrb r1, [r0, 0x3]
- adds r4, r2, 0
- muls r4, r1
- adds r1, r4, 0
- strb r1, [r0, 0x7]
- ldr r0, [r3]
- strb r6, [r0, 0x1]
- ldr r1, [r3]
- ldrb r0, [r1, 0x7]
- adds r4, r3, 0
- cmp r0, 0x9
- bls _0811AA14
- movs r0, 0x9
- strb r0, [r1, 0x7]
-_0811AA14:
- mov r0, r8
- cmp r0, 0
- beq _0811AA34
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x3C
- ldrb r2, [r0, 0x7]
- mov r0, r8
- bl CpuSet
- b _0811AA64
- .pool
-_0811AA34:
- movs r3, 0
- ldr r0, [r4]
- ldrb r0, [r0, 0x7]
- cmp r3, r0
- bge _0811AA5C
- adds r6, r4, 0
- ldr r1, =0x0000ffff
- adds r5, r1, 0
-_0811AA44:
- ldr r2, [r6]
- lsls r0, r3, 1
- adds r1, r2, 0
- adds r1, 0x3C
- adds r1, r0
- ldrh r0, [r1]
- orrs r0, r5
- strh r0, [r1]
- adds r3, 0x1
- ldrb r2, [r2, 0x7]
- cmp r3, r2
- blt _0811AA44
-_0811AA5C:
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x3C
- str r0, [r1, 0x38]
-_0811AA64:
- bl sub_811F3AC
- ldr r1, =gUnknown_0203A118
- ldr r2, [r1]
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r0, 0x1
- strb r0, [r2, 0xD]
- movs r0, 0x1
-_0811AA7E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811A95C
-
- thumb_func_start sub_811AA90
-sub_811AA90: @ 811AA90
- push {r4,lr}
- ldr r4, =gUnknown_0203A118
- ldr r0, [r4]
- cmp r0, 0
- beq _0811AAA2
- bl Free
- movs r0, 0
- str r0, [r4]
-_0811AAA2:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_811AA90
-
- thumb_func_start sub_811AAAC
-sub_811AAAC: @ 811AAAC
- push {lr}
- ldr r0, =gUnknown_0203A118
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0xA
- bhi _0811AB3E
- lsls r0, 2
- ldr r1, =_0811AACC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0811AACC:
- .4byte _0811AAF8
- .4byte _0811AAFE
- .4byte _0811AB04
- .4byte _0811AB0A
- .4byte _0811AB10
- .4byte _0811AB16
- .4byte _0811AB1C
- .4byte _0811AB22
- .4byte _0811AB28
- .4byte _0811AB2E
- .4byte _0811AB34
-_0811AAF8:
- bl sub_811AB68
- b _0811AB38
-_0811AAFE:
- bl sub_811ACDC
- b _0811AB38
-_0811AB04:
- bl sub_811AE44
- b _0811AB38
-_0811AB0A:
- bl sub_811AF00
- b _0811AB38
-_0811AB10:
- bl sub_811AF8C
- b _0811AB38
-_0811AB16:
- bl sub_811B040
- b _0811AB38
-_0811AB1C:
- bl sub_811AFEC
- b _0811AB38
-_0811AB22:
- bl sub_811B08C
- b _0811AB38
-_0811AB28:
- bl sub_811B0BC
- b _0811AB38
-_0811AB2E:
- bl sub_811B0E8
- b _0811AB38
-_0811AB34:
- bl sub_811B0F8
-_0811AB38:
- lsls r0, 16
- lsrs r0, 16
- b _0811AB40
-_0811AB3E:
- movs r0, 0
-_0811AB40:
- pop {r1}
- bx r1
- thumb_func_end sub_811AAAC
-
- thumb_func_start sub_811AB44
-sub_811AB44: @ 811AB44
- push {lr}
- bl sub_811BA68
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0811AB5E
- cmp r0, 0x2
- blt _0811AB62
- cmp r0, 0x8
- bgt _0811AB62
- cmp r0, 0x7
- blt _0811AB62
-_0811AB5E:
- movs r0, 0x1
- b _0811AB64
-_0811AB62:
- movs r0, 0
-_0811AB64:
- pop {r1}
- bx r1
- thumb_func_end sub_811AB44
-
- thumb_func_start sub_811AB68
-sub_811AB68: @ 811AB68
- push {r4-r7,lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811ABB8
- bl sub_811BF78
- ldr r1, =gUnknown_0203A118
- ldr r3, [r1]
- movs r2, 0
- movs r0, 0x2
- strb r0, [r3, 0x4]
- ldr r0, [r1]
- strb r2, [r0, 0xA]
- ldr r0, [r1]
- strb r2, [r0, 0xB]
- ldr r0, [r1]
- strb r2, [r0, 0xC]
- movs r0, 0x9
- b _0811ACCC
- .pool
-_0811AB9C:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0811AC68
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AC58
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0811AC48
- movs r0, 0
- b _0811ACCC
-_0811ABB8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0811AC78
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0811AC7E
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0811AB9C
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- subs r0, 0x1
-_0811ABD8:
- strb r0, [r1, 0x6]
-_0811ABDA:
- adds r7, r2, 0
- adds r4, r7, 0
- ldr r2, [r4]
- movs r0, 0x6
- ldrsb r0, [r2, r0]
- ldr r6, =gUnknown_08597550
- cmp r0, 0
- bge _0811ABF8
- ldrb r0, [r2, 0x1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x2]
- strb r0, [r2, 0x6]
-_0811ABF8:
- ldr r3, [r4]
- movs r2, 0x6
- ldrsb r2, [r3, r2]
- adds r5, r6, 0
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0, 0x2]
- cmp r2, r0
- ble _0811AC14
- movs r0, 0
- strb r0, [r3, 0x6]
-_0811AC14:
- ldr r3, [r4]
- movs r2, 0x6
- ldrsb r2, [r3, r2]
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- cmp r2, r0
- bne _0811AC88
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r0, 0x2
- ble _0811AC36
- movs r0, 0x2
- strb r0, [r3, 0x5]
-_0811AC36:
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- movs r0, 0x3
- b _0811ACCC
- .pool
-_0811AC48:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- b _0811ABDA
- .pool
-_0811AC58:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x6]
- adds r0, 0x1
- b _0811ABD8
- .pool
-_0811AC68:
- ldr r2, =gUnknown_0203A118
- ldr r1, [r2]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- b _0811ABDA
- .pool
-_0811AC78:
- bl sub_811B150
- b _0811AC82
-_0811AC7E:
- bl sub_811B1B4
-_0811AC82:
- lsls r0, 16
- lsrs r0, 16
- b _0811ACCC
-_0811AC88:
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r0, 0
- bge _0811AC96
- ldrb r0, [r1, 0x1]
- subs r0, 0x1
- strb r0, [r3, 0x5]
-_0811AC96:
- ldr r3, [r4]
- movs r2, 0x5
- ldrsb r2, [r3, r2]
- ldrb r1, [r3, 0x1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x1]
- cmp r2, r0
- blt _0811ACB0
- movs r0, 0
- strb r0, [r3, 0x5]
-_0811ACB0:
- bl sub_811AB44
- cmp r0, 0
- beq _0811ACCA
- ldr r2, [r7]
- ldr r0, [r2, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- ldr r1, =0x00040100
- cmp r0, r1
- bne _0811ACCA
- movs r0, 0
- strb r0, [r2, 0x5]
-_0811ACCA:
- movs r0, 0x2
-_0811ACCC:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_811AB68
-
thumb_func_start sub_811ACDC
sub_811ACDC: @ 811ACDC
push {r4-r6,lr}
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index c0becc6da..a1f115376 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -5,1279 +5,6 @@
.text
- thumb_func_start MovementType_Player
-@ void MovementType_Player(struct obj *object)
-MovementType_Player: @ 808A998
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, =gEventObjects
- adds r0, r2
- ldr r2, =EventObjectCB2_NoMovement2
- bl UpdateEventObjectCurrentMovement
- pop {r0}
- bx r0
- .pool
- thumb_func_end MovementType_Player
-
- thumb_func_start EventObjectCB2_NoMovement2
-EventObjectCB2_NoMovement2: @ 808A9BC
- movs r0, 0
- bx lr
- thumb_func_end EventObjectCB2_NoMovement2
-
- thumb_func_start player_step
-@ void player_step(int dpad_direction, int buttons_new, int buttons_held)
-player_step: @ 808A9C0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r4, =gPlayerAvatar
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r5, r0, r1
- adds r0, r5, 0
- bl sub_808C280
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- bne _0808AA26
- adds r0, r7, 0
- adds r1, r6, 0
- bl Bike_TryAcroBikeHistoryUpdate
- adds r0, r5, 0
- mov r1, r8
- bl TryInterruptEventObjectSpecialAnim
- lsls r0, 24
- cmp r0, 0
- bne _0808AA26
- adds r0, r5, 0
- bl npc_clear_strange_bits
- bl DoPlayerAvatarTransition
- bl TryDoMetatileBehaviorForcedMovment
- lsls r0, 24
- cmp r0, 0
- bne _0808AA26
- mov r0, r8
- adds r1, r7, 0
- adds r2, r6, 0
- bl MovePlayerAvatarUsingKeypadInput
- bl PlayerAllowForcedMovementIfMovingSameDirection
-_0808AA26:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end player_step
-
- thumb_func_start TryInterruptEventObjectSpecialAnim
-@ bool8 TryInterruptEventObjectSpecialAnim(struct npc_state *eventObject, u8 direction)
-TryInterruptEventObjectSpecialAnim: @ 808AA38
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- adds r6, r5, 0
- bl EventObjectIsMovementOverridden
- lsls r0, 24
- cmp r0, 0
- beq _0808AA92
- adds r0, r4, 0
- bl EventObjectClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- bne _0808AA92
- adds r0, r4, 0
- bl EventObjectGetHeldMovementActionId
- lsls r0, 24
- movs r1, 0xE7
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bhi _0808AA70
- cmp r5, 0
- bne _0808AA74
-_0808AA70:
- movs r0, 0x1
- b _0808AA94
-_0808AA74:
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- cmp r0, r5
- beq _0808AA84
-_0808AA7C:
- adds r0, r4, 0
- bl EventObjectClearHeldMovement
- b _0808AA92
-_0808AA84:
- adds r0, r6, 0
- bl sub_808B028
- lsls r0, 24
- cmp r0, 0
- beq _0808AA7C
- b _0808AA70
-_0808AA92:
- movs r0, 0
-_0808AA94:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end TryInterruptEventObjectSpecialAnim
-
- thumb_func_start npc_clear_strange_bits
-@ void npc_clear_strange_bits(struct npc_state *eventObject)
-npc_clear_strange_bits: @ 808AA9C
- ldrb r2, [r0, 0x1]
- movs r1, 0x11
- negs r1, r1
- ands r1, r2
- movs r2, 0x5
- negs r2, r2
- ands r1, r2
- adds r2, 0x2
- ands r1, r2
- strb r1, [r0, 0x1]
- ldr r2, =gPlayerAvatar
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end npc_clear_strange_bits
-
- thumb_func_start MovePlayerAvatarUsingKeypadInput
-@ void MovePlayerAvatarUsingKeypadInput(int dpad_direction, int buttons_new, int buttons_held)
-MovePlayerAvatarUsingKeypadInput: @ 808AAC0
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _0808AAE8
- adds r0, r3, 0
- adds r1, r4, 0
- bl MovePlayerOnBike
- b _0808AAF0
- .pool
-_0808AAE8:
- adds r0, r3, 0
- adds r1, r2, 0
- bl MovePlayerNotOnBike
-_0808AAF0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end MovePlayerAvatarUsingKeypadInput
-
- thumb_func_start PlayerAllowForcedMovementIfMovingSameDirection
-@ void PlayerAllowForcedMovementIfMovingSameDirection()
-PlayerAllowForcedMovementIfMovingSameDirection: @ 808AAF8
- push {lr}
- ldr r2, =gPlayerAvatar
- ldrb r0, [r2, 0x2]
- cmp r0, 0x2
- bne _0808AB0A
- ldrb r1, [r2]
- movs r0, 0xDF
- ands r0, r1
- strb r0, [r2]
-_0808AB0A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlayerAllowForcedMovementIfMovingSameDirection
-
- thumb_func_start TryDoMetatileBehaviorForcedMovment
-@ bool8 TryDoMetatileBehaviorForcedMovment()
-TryDoMetatileBehaviorForcedMovment: @ 808AB14
- push {r4,lr}
- ldr r4, =gUnknown_08497444
- bl GetForcedMovementByMetatileBehavior
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end TryDoMetatileBehaviorForcedMovment
-
- thumb_func_start GetForcedMovementByMetatileBehavior
-@ u8 GetForcedMovementByMetatileBehavior()
-GetForcedMovementByMetatileBehavior: @ 808AB38
- push {r4-r6,lr}
- ldr r3, =gPlayerAvatar
- ldrb r1, [r3]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0808AB8A
- ldr r2, =gEventObjects
- ldrb r1, [r3, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r5, [r0, 0x1E]
- movs r4, 0
- ldr r6, =gUnknown_084973FC
-_0808AB58:
- lsls r0, r4, 2
- adds r0, r6
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _0808AB80
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
- b _0808AB8C
- .pool
-_0808AB80:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x11
- bls _0808AB58
-_0808AB8A:
- movs r0, 0
-_0808AB8C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetForcedMovementByMetatileBehavior
-
- thumb_func_start ForcedMovement_None
-ForcedMovement_None: @ 808AB94
- push {r4,lr}
- ldr r4, =gPlayerAvatar
- ldrb r1, [r4]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0808ABCE
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldrb r1, [r0, 0x18]
- lsls r1, 28
- lsrs r1, 28
- bl SetEventObjectDirection
- ldrb r1, [r4]
- movs r0, 0xBF
- ands r0, r1
- strb r0, [r4]
-_0808ABCE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_None
-
- thumb_func_start DoForcedMovement
-DoForcedMovement: @ 808ABE0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, =gPlayerAvatar
- adds r0, r5, 0
- bl CheckForPlayerAvatarCollision
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- ldrb r0, [r6]
- movs r1, 0x40
- mov r10, r1
- movs r1, 0
- mov r8, r1
- mov r1, r10
- orrs r0, r1
- strb r0, [r6]
- cmp r4, 0
- beq _0808AC3C
- bl ForcedMovement_None
- cmp r4, 0x4
- bhi _0808AC24
- movs r0, 0
- b _0808AC48
- .pool
-_0808AC24:
- cmp r7, 0x6
- bne _0808AC2E
- adds r0, r5, 0
- bl PlayerJumpLedge
-_0808AC2E:
- ldrb r0, [r6]
- mov r1, r10
- orrs r0, r1
- strb r0, [r6]
- movs r0, 0x2
- strb r0, [r6, 0x2]
- b _0808AC46
-_0808AC3C:
- movs r0, 0x2
- strb r0, [r6, 0x2]
- adds r0, r5, 0
- bl _call_via_r9
-_0808AC46:
- movs r0, 0x1
-_0808AC48:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end DoForcedMovement
-
- thumb_func_start DoForcedMovementInCurrentDirection
-DoForcedMovementInCurrentDirection: @ 808AC58
- push {lr}
- adds r1, r0, 0
- ldr r0, =gPlayerAvatar
- ldrb r2, [r0, 0x5]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, =gEventObjects
- adds r0, r2
- ldrb r2, [r0, 0x1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r0, 0x1]
- ldrb r0, [r0, 0x18]
- lsrs r0, 4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end DoForcedMovementInCurrentDirection
-
- thumb_func_start ForcedMovement_Slip
-ForcedMovement_Slip: @ 808AC8C
- push {lr}
- ldr r0, =PlayerGoSpeed2
- bl DoForcedMovementInCurrentDirection
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_Slip
-
- thumb_func_start ForcedMovement_WalkSouth
-ForcedMovement_WalkSouth: @ 808ACA0
- push {lr}
- ldr r1, =PlayerGoSpeed1
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_WalkSouth
-
- thumb_func_start ForcedMovement_WalkNorth
-ForcedMovement_WalkNorth: @ 808ACB8
- push {lr}
- ldr r1, =PlayerGoSpeed1
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_WalkNorth
-
- thumb_func_start ForcedMovement_WalkWest
-ForcedMovement_WalkWest: @ 808ACD0
- push {lr}
- ldr r1, =PlayerGoSpeed1
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_WalkWest
-
- thumb_func_start ForcedMovement_WalkEast
-ForcedMovement_WalkEast: @ 808ACE8
- push {lr}
- ldr r1, =PlayerGoSpeed1
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_WalkEast
-
- thumb_func_start ForcedMovement_PushedSouthByCurrent
-ForcedMovement_PushedSouthByCurrent: @ 808AD00
- push {lr}
- ldr r1, =PlayerGoSpeed3
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_PushedSouthByCurrent
-
- thumb_func_start ForcedMovement_PushedNorthByCurrent
-ForcedMovement_PushedNorthByCurrent: @ 808AD18
- push {lr}
- ldr r1, =PlayerGoSpeed3
- movs r0, 0x2
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_PushedNorthByCurrent
-
- thumb_func_start ForcedMovement_PushedWestByCurrent
-ForcedMovement_PushedWestByCurrent: @ 808AD30
- push {lr}
- ldr r1, =PlayerGoSpeed3
- movs r0, 0x3
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_PushedWestByCurrent
-
- thumb_func_start ForcedMovement_PushedEastByCurrent
-ForcedMovement_PushedEastByCurrent: @ 808AD48
- push {lr}
- ldr r1, =PlayerGoSpeed3
- movs r0, 0x4
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_PushedEastByCurrent
-
- thumb_func_start ForcedMovement_Slide
-ForcedMovement_Slide: @ 808AD60
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gPlayerAvatar
- ldrb r3, [r2, 0x5]
- lsls r2, r3, 3
- adds r2, r3
- lsls r2, 2
- ldr r3, =gEventObjects
- adds r2, r3
- ldrb r3, [r2, 0x1]
- movs r4, 0x4
- orrs r3, r4
- movs r4, 0x2
- orrs r3, r4
- strb r3, [r2, 0x1]
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_Slide
-
- thumb_func_start ForcedMovement_SlideSouth
-ForcedMovement_SlideSouth: @ 808AD98
- push {lr}
- ldr r1, =PlayerGoSpeed2
- movs r0, 0x1
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_SlideSouth
-
- thumb_func_start ForcedMovement_SlideNorth
-ForcedMovement_SlideNorth: @ 808ADB0
- push {lr}
- ldr r1, =PlayerGoSpeed2
- movs r0, 0x2
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_SlideNorth
-
- thumb_func_start ForcedMovement_SlideWest
-ForcedMovement_SlideWest: @ 808ADC8
- push {lr}
- ldr r1, =PlayerGoSpeed2
- movs r0, 0x3
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_SlideWest
-
- thumb_func_start ForcedMovement_SlideEast
-ForcedMovement_SlideEast: @ 808ADE0
- push {lr}
- ldr r1, =PlayerGoSpeed2
- movs r0, 0x4
- bl ForcedMovement_Slide
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end ForcedMovement_SlideEast
-
- thumb_func_start ForcedMovement_0xBB
-ForcedMovement_0xBB: @ 808ADF8
- push {lr}
- bl sub_808C4D8
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end ForcedMovement_0xBB
-
- thumb_func_start ForcedMovement_0xBC
-ForcedMovement_0xBC: @ 808AE04
- push {lr}
- bl sub_808C5B0
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end ForcedMovement_0xBC
-
- thumb_func_start ForcedMovement_MuddySlope
-ForcedMovement_MuddySlope: @ 808AE10
- push {r4,lr}
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gEventObjects
- adds r4, r0, r1
- ldrb r1, [r4, 0x18]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0x20
- bne _0808AE36
- bl GetPlayerSpeed
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bgt _0808AE60
-_0808AE36:
- movs r0, 0
- bl Bike_UpdateBikeCounterSpeed
- ldrb r0, [r4, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r1, =PlayerGoSpeed2
- movs r0, 0x1
- bl DoForcedMovement
- lsls r0, 24
- lsrs r0, 24
- b _0808AE62
- .pool
-_0808AE60:
- movs r0, 0
-_0808AE62:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ForcedMovement_MuddySlope
-
- thumb_func_start MovePlayerNotOnBike
-@ void MovePlayerNotOnBike(u8 direction, u8 heldKeys)
-MovePlayerNotOnBike: @ 808AE68
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r6, =gUnknown_08497490
- adds r0, r4, 0
- bl CheckMovementInputNotOnBike
- lsls r0, 24
- lsrs r0, 22
- adds r0, r6
- ldr r2, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end MovePlayerNotOnBike
-
- thumb_func_start CheckMovementInputNotOnBike
-@ u8 CheckMovementInputNotOnBike(u8 direction)
-CheckMovementInputNotOnBike: @ 808AE98
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0808AEB0
- ldr r0, =gPlayerAvatar
- strb r4, [r0, 0x2]
- movs r0, 0
- b _0808AED2
- .pool
-_0808AEB0:
- bl GetPlayerMovementDirection
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _0808AECC
- ldr r1, =gPlayerAvatar
- ldrb r0, [r1, 0x2]
- cmp r0, 0x2
- beq _0808AECC
- movs r0, 0x1
- b _0808AED0
- .pool
-_0808AECC:
- ldr r1, =gPlayerAvatar
- movs r0, 0x2
-_0808AED0:
- strb r0, [r1, 0x2]
-_0808AED2:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end CheckMovementInputNotOnBike
-
- thumb_func_start PlayerNotOnBikeNotMoving
-@ void PlayerNotOnBikeNotMoving(u8 direction, u8 heldKeys)
-PlayerNotOnBikeNotMoving: @ 808AEDC
- push {lr}
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- bl PlayerFaceDirection
- pop {r0}
- bx r0
- thumb_func_end PlayerNotOnBikeNotMoving
-
- thumb_func_start PlayerNotOnBikeTurningInPlace
-@ void PlayerNotOnBikeTurningInPlace(u8 direction, u8 heldKeys)
-PlayerNotOnBikeTurningInPlace: @ 808AEF0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl PlayerTurnInPlace
- pop {r0}
- bx r0
- thumb_func_end PlayerNotOnBikeTurningInPlace
-
- thumb_func_start PlayerNotOnBikeMoving
-@ void PlayerNotOnBikeMoving(u8 direction, u8 heldKeys)
-PlayerNotOnBikeMoving: @ 808AF00
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- adds r0, r5, 0
- bl CheckForPlayerAvatarCollision
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0808AF4E
- cmp r4, 0x6
- bne _0808AF24
- adds r0, r5, 0
- bl PlayerJumpLedge
- b _0808AFB6
-_0808AF24:
- cmp r4, 0x4
- bne _0808AF3C
- adds r0, r5, 0
- bl IsPlayerCollidingWithFarawayIslandMew
- lsls r0, 24
- cmp r0, 0
- beq _0808AF3C
- adds r0, r5, 0
- bl PlayerNotOnBikeCollideWithFarawayIslandMew
- b _0808AFB6
-_0808AF3C:
- subs r0, r4, 0x5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0808AFB6
- adds r0, r5, 0
- bl PlayerNotOnBikeCollide
- b _0808AFB6
-_0808AF4E:
- ldr r4, =gPlayerAvatar
- ldrb r1, [r4]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0808AF68
- adds r0, r5, 0
- bl PlayerGoSpeed2
- b _0808AFB6
- .pool
-_0808AF68:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0808AFB0
- movs r0, 0x2
- ands r6, r0
- cmp r6, 0
- beq _0808AFB0
- movs r0, 0x8C
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0808AFB0
- ldr r2, =gEventObjects
- ldrb r1, [r4, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1E]
- bl IsRunningDisallowed
- cmp r0, 0
- bne _0808AFB0
- adds r0, r5, 0
- bl PlayerRun
- ldrb r1, [r4]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r4]
- b _0808AFB6
- .pool
-_0808AFB0:
- adds r0, r5, 0
- bl PlayerGoSpeed1
-_0808AFB6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end PlayerNotOnBikeMoving
-
- thumb_func_start CheckForPlayerAvatarCollision
-CheckForPlayerAvatarCollision: @ 808AFBC
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, =gEventObjects
- adds r4, r0
- ldrh r1, [r4, 0x10]
- add r0, sp, 0x4
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x6
- strh r0, [r5]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- bl MoveCoords
- add r0, sp, 0x4
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- add r1, sp, 0x4
- movs r3, 0
- ldrsh r1, [r1, r3]
- movs r3, 0
- ldrsh r2, [r5, r3]
- str r0, [sp]
- adds r0, r4, 0
- adds r3, r6, 0
- bl CheckForEventObjectCollision
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end CheckForPlayerAvatarCollision
-
- thumb_func_start sub_808B028
-sub_808B028: @ 808B028
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, =gEventObjects
- adds r4, r0
- ldrh r1, [r4, 0x10]
- add r0, sp, 0x4
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x6
- strh r0, [r5]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- bl MoveCoords
- add r0, sp, 0x4
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- add r1, sp, 0x4
- movs r3, 0
- ldrsh r1, [r1, r3]
- movs r3, 0
- ldrsh r2, [r5, r3]
- str r0, [sp]
- adds r0, r4, 0
- adds r3, r6, 0
- bl sub_808B164
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_808B028
-
- thumb_func_start CheckForEventObjectCollision
-@ u8 CheckForEventObjectCollision(struct npc_state *eventObject, u16 x, u16 y, u8 direction, u8 metatileBehavior)
-CheckForEventObjectCollision: @ 808B094
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- lsrs r7, r1, 16
- asrs r5, r1, 16
- lsrs r1, r2, 16
- mov r9, r1
- asrs r4, r2, 16
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r6, 0
- bl GetCollisionAtCoords
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- cmp r0, 0x3
- bne _0808B0E4
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_808B1BC
- lsls r0, 24
- cmp r0, 0
- beq _0808B0E4
- movs r0, 0x5
- b _0808B152
-_0808B0E4:
- lsls r5, r7, 16
- asrs r0, r5, 16
- mov r8, r0
- mov r1, r9
- lsls r4, r1, 16
- asrs r7, r4, 16
- adds r1, r7, 0
- adds r2, r6, 0
- bl ShouldJumpLedge
- lsls r0, 24
- cmp r0, 0
- beq _0808B108
- movs r0, 0x2B
- bl IncrementGameStat
- movs r0, 0x6
- b _0808B152
-_0808B108:
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _0808B124
- mov r0, r8
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_808B238
- lsls r0, 24
- cmp r0, 0
- beq _0808B124
- movs r0, 0x7
- b _0808B152
-_0808B124:
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _0808B14E
- asrs r5, 16
- asrs r4, 16
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl CheckForRotatingGatePuzzleCollision
- cmp r0, 0
- beq _0808B142
- movs r0, 0x8
- b _0808B152
-_0808B142:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r10
- mov r3, sp
- bl check_acro_bike_metatile
-_0808B14E:
- mov r0, sp
- ldrb r0, [r0]
-_0808B152:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckForEventObjectCollision
-
- thumb_func_start sub_808B164
-sub_808B164: @ 808B164
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, [sp, 0x18]
- lsls r3, 24
- lsrs r6, r3, 24
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r4, r2, 16
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r6, 0
- bl GetCollisionAtCoords
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- cmp r0, 0
- bne _0808B1AE
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl CheckForRotatingGatePuzzleCollisionWithoutAnimation
- cmp r0, 0
- beq _0808B1A2
- movs r0, 0x8
- b _0808B1B2
-_0808B1A2:
- adds r0, r5, 0
- adds r1, r4, 0
- adds r2, r7, 0
- mov r3, sp
- bl check_acro_bike_metatile
-_0808B1AE:
- mov r0, sp
- ldrb r0, [r0]
-_0808B1B2:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_808B164
-
- thumb_func_start sub_808B1BC
-@ bool8 sub_808B1BC(u16 x, u16 y, u8 direction)
-sub_808B1BC: @ 808B1BC
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0808B20C
- lsls r5, r3, 16
- asrs r0, r5, 16
- lsls r4, 16
- asrs r1, r4, 16
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0808B20C
- lsrs r0, r5, 16
- lsrs r1, r4, 16
- movs r2, 0x3
- bl GetEventObjectIdByXYZ
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- bne _0808B20C
- adds r0, r6, 0
- bl sub_808C750
- movs r0, 0x1
- b _0808B20E
- .pool
-_0808B20C:
- movs r0, 0
-_0808B20E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_808B1BC
-
- thumb_func_start ShouldJumpLedge
-@ bool8 ShouldJumpLedge(s16 x, s16 y, u8 direction)
-ShouldJumpLedge: @ 808B214
- push {lr}
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetLedgeJumpDirection
- lsls r0, 24
- cmp r0, 0
- bne _0808B230
- movs r0, 0
- b _0808B232
-_0808B230:
- movs r0, 0x1
-_0808B232:
- pop {r1}
- bx r1
- thumb_func_end ShouldJumpLedge
-
- thumb_func_start sub_808B238
-sub_808B238: @ 808B238
- push {r4-r7,lr}
- sub sp, 0x4
- mov r3, sp
- strh r0, [r3]
- mov r5, sp
- adds r5, 0x2
- strh r1, [r5]
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r0, =0x00000889
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0808B2D8
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl GetEventObjectIdByXY
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x10
- beq _0808B2D8
- ldr r0, =gEventObjects
- lsls r1, r6, 3
- adds r1, r6
- lsls r1, 2
- adds r4, r1, r0
- ldrb r0, [r4, 0x5]
- cmp r0, 0x57
- bne _0808B2D8
- ldrh r1, [r4, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- strh r0, [r5]
- adds r0, r7, 0
- mov r1, sp
- adds r2, r5, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r7, 0
- bl GetCollisionAtCoords
- lsls r0, 24
- cmp r0, 0
- bne _0808B2D8
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsNonAnimDoor
- lsls r0, 24
- cmp r0, 0
- bne _0808B2D8
- adds r0, r6, 0
- adds r1, r7, 0
- bl task_add_bump_boulder
- movs r0, 0x1
- b _0808B2DA
- .pool
-_0808B2D8:
- movs r0, 0
-_0808B2DA:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_808B238
-
- thumb_func_start check_acro_bike_metatile
-@ void check_acro_bike_metatile(s16 x, s16 y, u8 metatileBehavior, u8 *returnValue)
-check_acro_bike_metatile: @ 808B2E4
- push {r4-r7,lr}
- adds r6, r3, 0
- lsls r2, 24
- lsrs r5, r2, 24
- movs r4, 0
- ldr r7, =gUnknown_0849749C
-_0808B2F0:
- lsls r0, r4, 2
- adds r0, r7
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _0808B314
- ldr r0, =gUnknown_084974B0
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r6]
- b _0808B31E
- .pool
-_0808B314:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0808B2F0
-_0808B31E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end check_acro_bike_metatile
-
thumb_func_start IsPlayerCollidingWithFarawayIslandMew
@ bool8 IsPlayerCollidingWithFarawayIslandMew(u8 direction)
IsPlayerCollidingWithFarawayIslandMew: @ 808B324
@@ -3305,6 +2032,7 @@ sub_808C228: @ 808C228
thumb_func_end sub_808C228
thumb_func_start sub_808C280
+@ void sub_808C280(struct EventObject *playerEventObj);
sub_808C280: @ 808C280
push {r4-r7,lr}
mov r7, r9
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 24e041b7f..9e1cf03d8 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -6,1513 +6,8 @@
.text
- thumb_func_start sub_80C7128
-sub_80C7128: @ 80C7128
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- adds r7, r3, 0
- ldr r5, [sp, 0x1C]
- ldr r4, [sp, 0x20]
- ldr r0, [sp, 0x24]
- mov r9, r0
- ldr r0, [sp, 0x28]
- ldr r3, [sp, 0x2C]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r0, r9
- lsls r0, 17
- mov r9, r0
- lsrs r2, 11
- adds r2, r1
- lsls r2, 1
- adds r6, r2
- adds r0, r4, 0
- muls r0, r3
- adds r0, r5
- lsls r0, 1
- adds r7, r0
- movs r4, 0
- cmp r4, r8
- bcs _080C7198
- mov r0, r9
- lsrs r0, 1
- mov r9, r0
- lsls r5, r3, 1
-_080C717E:
- adds r0, r7, 0
- adds r1, r6, 0
- mov r3, r9
- lsrs r2, r3, 16
- bl CpuSet
- adds r6, 0x40
- adds r7, r5
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bcc _080C717E
-_080C7198:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C7128
-
- thumb_func_start sub_80C71A4
-sub_80C71A4: @ 80C71A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [sp, 0x28]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsrs r2, 11
- adds r2, r1
- lsls r2, 1
- adds r4, r2
- lsls r3, 17
- lsrs r0, r3, 16
- str r0, [sp, 0x4]
- movs r0, 0
- cmp r0, r10
- bcs _080C724E
- movs r6, 0x80
- lsls r6, 5
- mov r5, sp
- ldr r7, =0x040000d4
- lsrs r3, 17
- mov r9, r3
- mov r1, r9
- movs r2, 0x81
- lsls r2, 24
- orrs r1, r2
- mov r9, r1
-_080C71EA:
- adds r3, r4, 0
- ldr r2, [sp, 0x4]
- movs r1, 0x40
- adds r1, r4
- mov r8, r1
- adds r0, 0x1
- mov r12, r0
- cmp r2, r6
- bhi _080C7214
- movs r0, 0
- strh r0, [r5]
- mov r2, sp
- str r2, [r7]
- str r4, [r7, 0x4]
- mov r0, r9
- str r0, [r7, 0x8]
- ldr r0, [r7, 0x8]
- b _080C7242
- .pool
-_080C7214:
- movs r4, 0
- strh r4, [r5]
- ldr r1, =0x040000d4
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- ldr r0, =0x81000800
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r6
- subs r2, r6
- cmp r2, r6
- bhi _080C7214
- strh r4, [r5]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r2, 1
- movs r2, 0x81
- lsls r2, 24
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_080C7242:
- mov r4, r8
- mov r1, r12
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, r10
- bcc _080C71EA
-_080C724E:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C71A4
-
- thumb_func_start c3_0808C39C
-c3_0808C39C: @ 80C7268
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080C7284
- b _080C756A
-_080C7284:
- lsls r0, 2
- ldr r1, =_080C7298
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080C7298:
- .4byte _080C72AC
- .4byte _080C730C
- .4byte _080C7320
- .4byte _080C746A
- .4byte _080C7544
-_080C72AC:
- ldrb r0, [r5, 0xA]
- adds r1, r5, 0
- adds r1, 0x26
- bl sub_80C75FC
- bl sub_81973A4
- movs r0, 0
- movs r1, 0
- bl NewMenuHelpers_DrawDialogueFrame
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, =gUnknown_085716C0
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0xFF
- bl AddTextPrinterParameterized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrh r0, [r5, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl CopyWindowToVram
- b _080C7318
- .pool
-_080C730C:
- bl IsWeatherNotFadingIn
- lsls r0, 24
- cmp r0, 0
- bne _080C7318
- b _080C756A
-_080C7318:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080C756A
-_080C7320:
- bl ProcessMenuInput
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xC]
- movs r3, 0xC
- ldrsh r1, [r5, r3]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080C73D0
- cmp r1, r0
- bgt _080C7342
- subs r0, 0x1
- cmp r1, r0
- beq _080C7348
- b _080C73F6
-_080C7342:
- cmp r1, 0x4
- beq _080C73D0
- b _080C73F6
-_080C7348:
- ldrh r3, [r5, 0xA]
- strh r3, [r5, 0xE]
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080C7366
- subs r0, r3, 0x1
- strh r0, [r5, 0xE]
- lsls r0, 16
- cmp r0, 0
- bge _080C7366
- movs r0, 0x4
- strh r0, [r5, 0xE]
-_080C7366:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C7382
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _080C7382
- movs r0, 0
- strh r0, [r5, 0xE]
-_080C7382:
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r2, [r5, 0xE]
- movs r3, 0xE
- ldrsh r1, [r5, r3]
- cmp r0, r1
- bne _080C7392
- b _080C756A
-_080C7392:
- movs r4, 0
- strh r2, [r5, 0xA]
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, =gUnknown_085716C0
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r2, [r0]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- b _080C756A
- .pool
-_080C73D0:
- ldrh r0, [r5, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_819746C
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
- ldrh r0, [r5, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl RemoveWindow
- adds r0, r4, 0
- bl DestroyTask
- b _080C756A
-_080C73F6:
- movs r3, 0xC
- ldrsh r4, [r5, r3]
- cmp r4, 0
- bne _080C7428
- bl CountPartyMons
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _080C7428
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, =gText_PartyFull
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r4, 0x3
- str r4, [sp, 0xC]
- b _080C7532
- .pool
-_080C7428:
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080C745C
- bl CountPartyMons
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _080C745C
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, =gText_JustOnePkmn
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r4, 0x3
- str r4, [sp, 0xC]
- b _080C7532
- .pool
-_080C745C:
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _080C756A
-_080C746A:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r7, 0x3
- adds r4, r7, 0
- ands r4, r1
- cmp r4, 0
- beq _080C749C
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, =gUnknown_085716C0
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- str r0, [sp]
- b _080C7528
- .pool
-_080C749C:
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- beq _080C74E8
- ldrh r0, [r5, 0xA]
- subs r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _080C74B8
- movs r0, 0x4
- strh r0, [r5, 0xA]
-_080C74B8:
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, =gUnknown_085716C0
- movs r3, 0xA
- ldrsh r0, [r5, r3]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r2, [r0]
- str r4, [sp]
- b _080C7528
- .pool
-_080C74E8:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C756A
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080C7500
- strh r6, [r5, 0xA]
-_080C7500:
- movs r0, 0x1
- bl MoveMenuCursor
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, =gUnknown_085716C0
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r2, [r0]
- str r6, [sp]
-_080C7528:
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- str r7, [sp, 0xC]
-_080C7532:
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParameterized
- strh r4, [r5, 0x8]
- b _080C756A
- .pool
-_080C7544:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080C756A
- bl overworld_free_bg_tilemaps
- ldrb r0, [r5, 0xC]
- bl sub_80C7D74
- ldrh r0, [r5, 0x26]
- lsls r0, 24
- lsrs r0, 24
- bl RemoveWindow
- adds r0, r4, 0
- bl DestroyTask
-_080C756A:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_0808C39C
-
- thumb_func_start sub_80C7578
-sub_80C7578: @ 80C7578
- push {lr}
- ldr r0, =c3_0808C39C
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r0, [r1, 0xA]
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7578
- thumb_func_start mapldr_0808C6D8
-mapldr_0808C6D8: @ 80C75A8
- push {r4,r5,lr}
- ldr r0, =gMain
- ldr r5, [r0, 0xC]
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, =c3_0808C39C
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x8]
- ldr r2, =gUnknown_02039D00
- ldrb r2, [r2]
- strh r2, [r1, 0xA]
- bl _call_via_r4
- adds r0, r5, 0
- bl SetVBlankCallback
- bl pal_fill_black
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end mapldr_0808C6D8
- thumb_func_start sub_80C75FC
-sub_80C75FC: @ 80C75FC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- adds r6, r0, 0
- mov r9, r1
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gUnknown_085716E8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, =gUnknown_085716C0
- mov r8, r0
- movs r1, 0x5
- bl GetMaxWidthInMenuTable
- lsls r0, 24
- ldr r2, =0x00ffffff
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- mov r0, sp
- bl AddWindow
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, r5, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl NewMenuHelpers_DrawStdWindowFrame
- adds r0, r4, 0
- movs r1, 0x5
- mov r2, r8
- bl PrintMenuTable
- adds r0, r4, 0
- movs r1, 0x5
- adds r2, r6, 0
- bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed
- mov r0, r9
- strh r5, [r0]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C75FC
-
- thumb_func_start sub_80C7678
-sub_80C7678: @ 80C7678
- push {lr}
- bl sub_80CAEA0
- ldr r1, =gUnknown_02039D00
- strb r0, [r1]
- ldr r1, =gFieldCallback
- ldr r0, =mapldr_0808C6D8
- str r0, [r1]
- ldr r0, =CB2_ReturnToField
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7678
-
- thumb_func_start sub_80C76A4
-sub_80C76A4: @ 80C76A4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- lsls r1, 24
- lsrs r0, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- adds r4, r3, 0
- ldr r2, =0x0000ffff
- cmp r3, 0x1
- bhi _080C76C6
- movs r2, 0x1
- cmp r3, 0x1
- beq _080C76CA
-_080C76C6:
- cmp r4, 0x3
- bne _080C7714
-_080C76CA:
- lsls r0, 24
- asrs r0, 24
- lsls r2, 16
- asrs r1, r2, 16
- adds r1, r0
- lsls r0, r1, 16
- asrs r1, r0, 16
- adds r6, r2, 0
- cmp r1, 0
- blt _080C7760
- cmp r1, r7
- bgt _080C7760
-_080C76E2:
- asrs r4, r0, 16
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- add r0, r8
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _080C770C
- asrs r0, r6, 16
- adds r0, r4, r0
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- blt _080C7760
- cmp r2, r7
- ble _080C76E2
- b _080C7760
- .pool
-_080C770C:
- adds r0, r4, 0
- b _080C7764
-_080C7710:
- adds r0, r5, 0
- b _080C7764
-_080C7714:
- lsls r0, 24
- asrs r0, 24
- lsls r2, 16
- asrs r1, r2, 16
- adds r1, r0
- lsls r0, r1, 16
- asrs r1, r0, 16
- adds r6, r2, 0
- cmp r1, 0
- blt _080C7760
- cmp r1, r7
- bgt _080C7760
-_080C772C:
- asrs r5, r0, 16
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 4
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _080C7750
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetBoxMonData
- cmp r0, 0
- beq _080C7710
-_080C7750:
- asrs r0, r6, 16
- adds r0, r5, r0
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- blt _080C7760
- cmp r2, r7
- ble _080C772C
-_080C7760:
- movs r0, 0x1
- negs r0, r0
-_080C7764:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C76A4
-
- thumb_func_start ResetPokemonStorageSystem
-ResetPokemonStorageSystem: @ 80C7770
- push {r4-r6,lr}
- movs r0, 0
- bl sub_80D1D18
- movs r5, 0
-_080C777A:
- movs r4, 0
- lsls r6, r5, 24
-_080C777E:
- lsls r1, r4, 24
- lsrs r1, 24
- lsrs r0, r6, 24
- bl sub_80D2018
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _080C777E
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xD
- bls _080C777A
- movs r5, 0
-_080C779E:
- lsls r0, r5, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- ldr r1, =gText_Box
- bl StringCopy
- adds r4, r5, 0x1
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- lsls r4, 16
- lsrs r5, r4, 16
- cmp r5, 0xD
- bls _080C779E
- movs r5, 0
-_080C77C2:
- lsls r0, r5, 24
- lsrs r0, 24
- movs r1, 0x3
- ands r1, r5
- bl sub_80D2120
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xD
- bls _080C77C2
- bl ResetWaldaWallpaper
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ResetPokemonStorageSystem
-
- thumb_func_start sub_80C77E8
-sub_80C77E8: @ 80C77E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x20
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r6, r1, 0
- lsls r2, 16
- lsrs r2, 16
- adds r7, r2, 0
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- ldr r0, =gUnknown_0857173C
- str r0, [sp, 0x18]
- ldr r1, =0xffff0000
- add r4, sp, 0x18
- ldr r0, [r4, 0x4]
- ands r0, r1
- orrs r0, r7
- str r0, [r4, 0x4]
- mov r1, sp
- ldr r0, =gUnknown_0857175C
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 4
- strh r0, [r1, 0x4]
- strh r6, [r1, 0x6]
- ldr r0, =gUnknown_08571F5C
- str r0, [sp, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- strh r0, [r1, 0xC]
- adds r0, r6, 0x1
- strh r0, [r1, 0xE]
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x8
- bl memset
- ldr r0, [sp, 0x38]
- cmp r0, 0
- beq _080C7846
- adds r0, r4, 0
- bl LoadSpritePalette
-_080C7846:
- mov r0, sp
- bl LoadSpriteSheets
- ldr r0, =gUnknown_02039D04
- str r5, [r0]
- movs r1, 0x90
- lsls r1, 2
- adds r0, r5, r1
- strh r6, [r0]
- adds r1, 0x2
- adds r0, r5, r1
- strh r7, [r0]
- adds r1, 0x4
- adds r0, r5, r1
- mov r1, r8
- strb r1, [r0]
- movs r1, 0x8F
- lsls r1, 2
- adds r0, r5, r1
- ldr r1, [sp, 0x38]
- str r1, [r0]
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C77E8
-
- thumb_func_start sub_80C7890
-sub_80C7890: @ 80C7890
- push {r4,r5,lr}
- ldr r5, =gUnknown_02039D04
- ldr r1, [r5]
- movs r2, 0x8F
- lsls r2, 2
- adds r0, r1, r2
- ldr r0, [r0]
- cmp r0, 0
- beq _080C78AC
- adds r2, 0x6
- adds r0, r1, r2
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C78AC:
- ldr r0, [r5]
- movs r4, 0x90
- lsls r4, 2
- adds r0, r4
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r5]
- adds r0, r4
- ldrh r0, [r0]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpriteTilesByTag
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7890
-
- thumb_func_start sub_80C78D4
-sub_80C78D4: @ 80C78D4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80C7958
- pop {r0}
- bx r0
- thumb_func_end sub_80C78D4
-
- thumb_func_start sub_80C78E4
-sub_80C78E4: @ 80C78E4
- push {lr}
- bl sub_80C7B14
- pop {r0}
- bx r0
- thumb_func_end sub_80C78E4
-
- thumb_func_start sub_80C78F0
-sub_80C78F0: @ 80C78F0
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080C790C
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xC9
- b _080C7954
- .pool
-_080C790C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080C792C
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_02039D04
- ldr r0, [r0]
- movs r1, 0x91
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- b _080C7954
- .pool
-_080C792C:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080C7940
- movs r0, 0x5
- bl PlaySE
- bl sub_80C7BB4
- b _080C7952
-_080C7940:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080C7952
- movs r0, 0x5
- bl PlaySE
- bl sub_80C7B80
-_080C7952:
- movs r0, 0xC8
-_080C7954:
- pop {r1}
- bx r1
- thumb_func_end sub_80C78F0
-
- thumb_func_start sub_80C7958
-sub_80C7958: @ 80C7958
- push {r4-r6,lr}
- sub sp, 0x3C
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0
- movs r1, 0
- str r0, [sp, 0x34]
- str r1, [sp, 0x38]
- movs r1, 0xC0
- lsls r1, 24
- ldr r0, [sp, 0x34]
- orrs r0, r1
- str r0, [sp, 0x34]
- ldr r1, =0xffff0fff
- add r4, sp, 0x34
- ldr r0, [r4, 0x4]
- ands r0, r1
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r4, 0x4]
- add r1, sp, 0x1C
- movs r2, 0
- strh r2, [r1]
- mov r0, sp
- adds r0, 0x1E
- strh r2, [r0]
- str r4, [sp, 0x20]
- ldr r0, =gDummySpriteAnimTable
- str r0, [sp, 0x24]
- str r2, [sp, 0x28]
- ldr r0, =gDummySpriteAffineAnimTable
- str r0, [sp, 0x2C]
- ldr r0, =SpriteCallbackDummy
- str r0, [sp, 0x30]
- add r0, sp, 0x4
- movs r2, 0x18
- bl memcpy
- ldr r6, =gUnknown_02039D04
- ldr r0, [r6]
- movs r1, 0x91
- lsls r1, 2
- adds r0, r1
- strb r5, [r0]
- add r2, sp, 0x4
- ldr r1, [r6]
- movs r5, 0x90
- lsls r5, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- strh r0, [r2]
- ldr r3, =0x00000242
- adds r1, r3
- ldrh r0, [r1]
- strh r0, [r2, 0x2]
- adds r0, r2, 0
- movs r1, 0xA0
- movs r2, 0x60
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- str r0, [r3]
- ldrb r2, [r4, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x80
- orrs r0, r2
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- ands r1, r0
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r4, 0x3]
- add r1, sp, 0x4
- adds r3, r5
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r1]
- ldr r0, =sSpriteAnimTable_8571710
- str r0, [sp, 0xC]
- movs r4, 0
-_080C7A10:
- ldr r0, [r6]
- ldr r1, =0x00000246
- adds r0, r1
- ldrb r3, [r0]
- add r0, sp, 0x4
- movs r1, 0x7C
- movs r2, 0x50
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, [r6]
- lsls r3, r4, 2
- adds r2, 0x4
- adds r2, r3
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r1, r0, r1
- str r1, [r2]
- movs r5, 0
- movs r0, 0x2
- ands r0, r4
- cmp r0, 0
- beq _080C7A4A
- movs r0, 0xC4
- strh r0, [r1, 0x20]
- movs r5, 0x2
-_080C7A4A:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080C7A6E
- ldr r1, [r6]
- adds r1, 0x4
- adds r1, r3
- ldr r2, [r1]
- movs r0, 0x70
- strh r0, [r2, 0x22]
- ldr r2, [r1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x3]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080C7A6E:
- ldr r0, [r6]
- adds r0, 0x4
- adds r0, r3
- ldr r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080C7A10
- movs r4, 0
- ldr r5, =gUnknown_02039D04
-_080C7A8C:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 19
- movs r3, 0xF8
- lsls r3, 15
- adds r0, r3
- lsrs r0, 16
- lsls r2, r4, 24
- lsrs r2, 24
- ldr r1, [r5]
- ldr r3, =0x00000246
- adds r1, r3
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0x58
- movs r3, 0
- bl sub_80CD2E8
- adds r2, r0, 0
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, 0x20
- adds r0, r1
- str r2, [r0]
- cmp r2, 0
- beq _080C7AD4
- movs r1, 0x1
- cmp r4, 0
- bne _080C7ACC
- movs r3, 0x1
- negs r3, r3
- adds r1, r3, 0
-_080C7ACC:
- strh r1, [r2, 0x2E]
- ldr r1, [r0]
- ldr r0, =sub_80C7CF4
- str r0, [r1, 0x1C]
-_080C7AD4:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080C7A8C
- bl sub_80C7BE4
- add sp, 0x3C
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7958
-
- thumb_func_start sub_80C7B14
-sub_80C7B14: @ 80C7B14
- push {r4-r6,lr}
- ldr r4, =gUnknown_02039D04
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _080C7B2A
- bl DestroySprite
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1]
-_080C7B2A:
- movs r5, 0
- adds r6, r4, 0
-_080C7B2E:
- ldr r0, [r6]
- lsls r4, r5, 2
- adds r0, 0x4
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080C7B4A
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0x4
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_080C7B4A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080C7B2E
- movs r5, 0
-_080C7B56:
- ldr r0, =gUnknown_02039D04
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0x20
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _080C7B6A
- bl DestroySprite
-_080C7B6A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _080C7B56
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7B14
-
- thumb_func_start sub_80C7B80
-sub_80C7B80: @ 80C7B80
- push {lr}
- ldr r2, =gUnknown_02039D04
- ldr r1, [r2]
- movs r0, 0x91
- lsls r0, 2
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bls _080C7BA6
- ldr r0, [r2]
- movs r1, 0x91
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080C7BA6:
- bl sub_80C7BE4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7B80
-
- thumb_func_start sub_80C7BB4
-sub_80C7BB4: @ 80C7BB4
- push {lr}
- ldr r0, =gUnknown_02039D04
- ldr r2, [r0]
- movs r1, 0x91
- lsls r1, 2
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C7BD0
- subs r1, r0, 0x1
- b _080C7BD2
- .pool
-_080C7BD0:
- movs r1, 0xD
-_080C7BD2:
- movs r3, 0x91
- lsls r3, 2
- adds r0, r2, r3
- strb r1, [r0]
- bl sub_80C7BE4
- pop {r0}
- bx r0
- thumb_func_end sub_80C7BB4
-
- thumb_func_start sub_80C7BE4
-sub_80C7BE4: @ 80C7BE4
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x24
- ldr r0, =gUnknown_02039D04
- mov r9, r0
- ldr r0, [r0]
- movs r4, 0x91
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0]
- bl GetBoxNamePtr
- mov r10, r0
- mov r1, r9
- ldr r0, [r1]
- adds r0, r4
- ldrb r0, [r0]
- bl CountMonsInBox
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- add r4, sp, 0x1C
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x8
- bl memset
- movs r0, 0x8
- strb r0, [r4, 0x3]
- movs r0, 0x4
- strb r0, [r4, 0x4]
- adds r0, r4, 0
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x44
- bl FillWindowPixelBuffer
- movs r0, 0x1
- mov r1, r10
- movs r2, 0x40
- bl GetStringCenterAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r0, =gUnknown_08571734
- mov r8, r0
- str r0, [sp]
- movs r6, 0x1
- negs r6, r6
- str r6, [sp, 0x4]
- mov r1, r10
- str r1, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- movs r3, 0x1
- bl box_print
- add r0, sp, 0xC
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r1, =gUnknown_08571737
- add r0, sp, 0xC
- bl StringAppend
- movs r0, 0x1
- add r1, sp, 0xC
- movs r2, 0x40
- bl GetStringCenterAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- mov r0, r8
- str r0, [sp]
- str r6, [sp, 0x4]
- add r1, sp, 0xC
- str r1, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- movs r3, 0x11
- bl box_print
- adds r0, r4, 0
- movs r1, 0x7
- bl GetWindowAttribute
- adds r5, r0, 0
- mov r1, r9
- ldr r0, [r1]
- movs r1, 0x90
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- bl GetSpriteTileStartByTag
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 11
- ldr r0, =0x06010100
- adds r1, r0
- ldr r2, =0x04000100
- adds r0, r5, 0
- bl CpuSet
- adds r0, r4, 0
- bl RemoveWindow
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7BE4
-
- thumb_func_start sub_80C7CF4
-sub_80C7CF4: @ 80C7CF4
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080C7D24
- strh r2, [r1, 0x30]
- ldrh r0, [r1, 0x2E]
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- ldrh r0, [r1, 0x32]
- adds r0, 0x1
- strh r0, [r1, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080C7D24
- strh r2, [r1, 0x32]
- strh r2, [r1, 0x24]
-_080C7D24:
- pop {r0}
- bx r0
- thumb_func_end sub_80C7CF4
-
- thumb_func_start sub_80C7D28
-sub_80C7D28: @ 80C7D28
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl sub_80D2AA4
- bl TransferPlttBuffer
- ldr r0, =gUnknown_02039D08
- ldr r0, [r0]
- movs r1, 0xB3
- lsls r1, 2
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x18
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80C7D28
-
- thumb_func_start c2_Box
-c2_Box: @ 80C7D54
- push {lr}
- bl RunTasks
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl sub_80CA028
- bl sub_80CAA14
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r0}
- bx r0
- thumb_func_end c2_Box
thumb_func_start sub_80C7D74
sub_80C7D74: @ 80C7D74
@@ -2473,7 +968,7 @@ _080C8668:
ldr r1, =0x000002ca
adds r0, r1
ldrb r0, [r0]
- bl sub_80D1D18
+ bl SetCurrentBox
ldr r0, =gUnknown_02039D0C
ldrb r0, [r0]
cmp r0, 0
@@ -4705,7 +3200,7 @@ _080C9A9C:
ldr r2, =0x000002ca
adds r0, r2
ldrb r0, [r0]
- bl sub_80D1D18
+ bl SetCurrentBox
ldr r0, =task_pokemon_box_related
bl add_to_c3_somehow
_080C9AB8:
@@ -9968,7 +8463,7 @@ sub_80CC680: @ 80CC680
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
- bl sub_80D2120
+ bl SetBoxWallpaper
ldr r0, =gUnknown_02039D08
ldr r0, [r0]
ldr r1, =0x00000a62
@@ -13098,7 +11593,7 @@ sub_80CE0E8: @ 80CE0E8
b _080CE10C
.pool
_080CE108:
- bl sub_80D2018
+ bl ClearMonInBox
_080CE10C:
pop {r0}
bx r0
@@ -17973,7 +16468,7 @@ _080D09EC:
bl sub_80CB778
mov r0, r8
adds r1, r5, 0
- bl sub_80D2018
+ bl ClearMonInBox
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
@@ -20353,8 +18848,8 @@ StorageGetCurrentBox: @ 80D1D0C
.pool
thumb_func_end StorageGetCurrentBox
- thumb_func_start sub_80D1D18
-sub_80D1D18: @ 80D1D18
+ thumb_func_start SetCurrentBox
+SetCurrentBox: @ 80D1D18
push {lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -20367,7 +18862,7 @@ _080D1D28:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D1D18
+ thumb_func_end SetCurrentBox
thumb_func_start GetBoxMonDataFromAnyBox
GetBoxMonDataFromAnyBox: @ 80D1D30
@@ -20768,8 +19263,8 @@ _080D2004:
.pool
thumb_func_end sub_80D1F98
- thumb_func_start sub_80D2018
-sub_80D2018: @ 80D2018
+ thumb_func_start ClearMonInBox
+ClearMonInBox: @ 80D2018
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -20798,7 +19293,7 @@ _080D2048:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D2018
+ thumb_func_end ClearMonInBox
thumb_func_start sub_80D2054
sub_80D2054: @ 80D2054
@@ -20914,8 +19409,8 @@ _080D2112:
.pool
thumb_func_end sub_80D20F8
- thumb_func_start sub_80D2120
-sub_80D2120: @ 80D2120
+ thumb_func_start SetBoxWallpaper
+SetBoxWallpaper: @ 80D2120
push {lr}
lsls r0, 24
lsrs r2, r0, 24
@@ -20935,7 +19430,7 @@ _080D213E:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D2120
+ thumb_func_end SetBoxWallpaper
thumb_func_start sub_80D214C
sub_80D214C: @ 80D214C
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index bf1d0e156..b7388b41b 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -10,7 +10,7 @@ sub_80F87D8: @ 80F87D8
push {r4,lr}
ldr r0, =gSaveBlock1Ptr
ldr r2, [r0]
- ldr r1, =gUnknown_02039E00
+ ldr r1, =gContestMons
ldrb r3, [r1, 0x15]
ldr r4, =0x000013bc
adds r0, r2, r4
@@ -150,8 +150,8 @@ sub_80F88DC: @ 80F88DC
thumb_func_start sub_80F88E8
sub_80F88E8: @ 80F88E8
push {lr}
- ldr r0, =gUnknown_02039F20
- ldr r1, =gUnknown_02039F25
+ ldr r0, =gContestFinalStandings
+ ldr r1, =gContestPlayerMonIndex
ldrb r2, [r1]
adds r0, r2, r0
ldrb r0, [r0]
@@ -218,11 +218,11 @@ sub_80F8970: @ 80F8970
mov r5, r8
push {r5-r7}
sub sp, 0x8
- ldr r0, =gUnknown_02039F00
+ ldr r0, =gContestMonConditions
mov r12, r0
ldr r1, =gSpecialVar_0x8006
mov r9, r1
- ldr r2, =gUnknown_02039E00 + 2
+ ldr r2, =gContestMons + 2
mov r10, r2
mov r2, r12
mov r1, sp
@@ -413,7 +413,7 @@ ShowContestWinner: @ 80F8ADC
thumb_func_start sub_80F8AFC
sub_80F8AFC: @ 80F8AFC
push {r4,r5,lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -422,7 +422,7 @@ sub_80F8AFC: @ 80F8AFC
movs r3, 0
ldr r0, =gUnknown_02039F30
adds r4, r0, 0
- ldr r5, =gUnknown_02039E00
+ ldr r5, =gContestMons
ldrb r0, [r4]
cmp r3, r0
bge _080F8B50
@@ -482,7 +482,7 @@ sub_80F8B94: @ 80F8B94
ldr r1, =gReservedSpritePaletteCount
movs r0, 0xC
strb r0, [r1]
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -594,8 +594,8 @@ sub_80F8C7C: @ 80F8C7C
strb r0, [r1]
cmp r0, 0
bne _080F8D18
- ldr r0, =gUnknown_02039F20
- ldr r1, =gUnknown_02039F25
+ ldr r0, =gContestFinalStandings
+ ldr r1, =gContestPlayerMonIndex
ldrb r2, [r1]
adds r0, r2, r0
ldrb r0, [r0]
@@ -675,7 +675,7 @@ _080F8D44:
mov r9, r0
movs r1, 0x3
mov r10, r1
- ldr r2, =gUnknown_02039E00
+ ldr r2, =gContestMons
ldr r4, =gSpecialVar_0x8006
ldrh r1, [r4]
lsls r1, 6
@@ -702,7 +702,7 @@ _080F8D44:
movs r1, 0
strh r1, [r0, 0x8]
strh r6, [r0, 0xA]
- ldr r1, =gUnknown_02039F25
+ ldr r1, =gContestPlayerMonIndex
ldrh r0, [r4]
ldrb r1, [r1]
cmp r0, r1
@@ -758,7 +758,7 @@ _080F8DD8:
bl CreateSprite
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -938,7 +938,7 @@ _080F8F98:
thumb_func_start sub_80F8FA0
sub_80F8FA0: @ 80F8FA0
push {r4,lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
@@ -973,13 +973,13 @@ _080F8FDE:
thumb_func_start sub_80F8FE8
sub_80F8FE8: @ 80F8FE8
push {r4,lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _080F9020
- ldr r2, =gUnknown_030060B8
+ ldr r2, =gContestRngValue
ldr r1, [r2]
ldr r0, =0x41c64e6d
muls r0, r1
@@ -1007,7 +1007,7 @@ _080F902A:
thumb_func_start sub_80F903C
sub_80F903C: @ 80F903C
- ldr r2, =gUnknown_030060B8
+ ldr r2, =gContestRngValue
ldr r1, [r2]
ldr r0, =0x41c64e6d
muls r0, r1
@@ -1022,7 +1022,7 @@ sub_80F903C: @ 80F903C
thumb_func_start sub_80F905C
sub_80F905C: @ 80F905C
push {lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@@ -1087,7 +1087,7 @@ _080F90D4:
thumb_func_start sub_80F90DC
sub_80F90DC: @ 80F90DC
push {lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@@ -1110,7 +1110,7 @@ _080F90FE:
thumb_func_start sub_80F910C
sub_80F910C: @ 80F910C
push {lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
@@ -1130,7 +1130,7 @@ _080F9126:
thumb_func_start sub_80F9134
sub_80F9134: @ 80F9134
push {lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x4
ands r0, r1
@@ -1148,7 +1148,7 @@ _080F914E:
thumb_func_start sub_80F9154
sub_80F9154: @ 80F9154
- ldr r1, =gUnknown_02039F2A
+ ldr r1, =gIsLinkContest
movs r0, 0
strb r0, [r1]
bx lr
@@ -1158,7 +1158,7 @@ sub_80F9154: @ 80F9154
thumb_func_start sub_80F9160
sub_80F9160: @ 80F9160
push {lr}
- ldr r0, =gUnknown_02039F2A
+ ldr r0, =gIsLinkContest
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 4f76d1b69..21cf4a350 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -5,2696 +5,11 @@
.text
- thumb_func_start sub_812A4DC
-sub_812A4DC: @ 812A4DC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0
- beq _0812A500
- cmp r1, 0x1
- beq _0812A518
- b _0812A530
- .pool
-_0812A500:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0812A530
-_0812A518:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812A530
- ldr r0, =sub_812A588
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_0812A530:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A4DC
-
- thumb_func_start PlaySlotMachine
-PlaySlotMachine: @ 812A540
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =gUnknown_0203AB34
- movs r0, 0x68
- bl AllocZeroed
- str r0, [r5]
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812A6D4
- ldr r0, =sub_812A4DC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PlaySlotMachine
-
- thumb_func_start sub_812A588
-sub_812A588: @ 812A588
- push {lr}
- sub sp, 0x4
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xB
- bhi _0812A666
- lsls r0, 2
- ldr r1, =_0812A5AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0812A5AC:
- .4byte _0812A5DC
- .4byte _0812A5E6
- .4byte _0812A5EC
- .4byte _0812A5F6
- .4byte _0812A5FC
- .4byte _0812A602
- .4byte _0812A608
- .4byte _0812A60E
- .4byte _0812A638
- .4byte _0812A63E
- .4byte _0812A644
- .4byte _0812A660
-_0812A5DC:
- bl sub_812A750
- bl sub_812A8C4
- b _0812A64C
-_0812A5E6:
- bl sub_812A7BC
- b _0812A64C
-_0812A5EC:
- bl sub_812A810
- bl sub_812A834
- b _0812A64C
-_0812A5F6:
- bl sub_812A9AC
- b _0812A64C
-_0812A5FC:
- bl sub_812A9CC
- b _0812A64C
-_0812A602:
- bl sub_812AA48
- b _0812A64C
-_0812A608:
- bl sub_812A79C
- b _0812A64C
-_0812A60E:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- b _0812A64C
-_0812A638:
- bl sub_812FBC4
- b _0812A64C
-_0812A63E:
- bl sub_812FB14
- b _0812A64C
-_0812A644:
- bl sub_812AA78
- bl sub_812AA90
-_0812A64C:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0812A666
- .pool
-_0812A660:
- ldr r0, =sub_812A670
- bl SetMainCallback2
-_0812A666:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A588
-
- thumb_func_start sub_812A670
-sub_812A670: @ 812A670
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_812A670
-
- thumb_func_start sub_812A688
-sub_812A688: @ 812A688
- push {r4,lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r1, [r0]
- movs r0, 0x40
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r1, [r0]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0x5C
- ldrh r1, [r0]
- movs r0, 0x48
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0x5E
- ldrh r1, [r0]
- movs r0, 0x4A
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A688
-
- thumb_func_start sub_812A6D4
-sub_812A6D4: @ 812A6D4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =TaskDummy9
- movs r1, 0xFF
- bl CreateTask
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- strh r4, [r0, 0x8]
- adds r0, 0xA
- adds r1, r5, 0
- bl StoreWordInTwoHalfwords
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A6D4
-
- thumb_func_start sub_812A710
-sub_812A710: @ 812A710
- push {lr}
- ldr r0, =TaskDummy9
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r0, =gTasks
- adds r2, r0
- ldr r3, =gUnknown_0203AB34
- ldr r1, [r3]
- ldrh r0, [r2, 0x8]
- strb r0, [r1, 0x1]
- adds r2, 0xA
- ldr r1, [r3]
- adds r1, 0x64
- adds r0, r2, 0
- bl LoadWordFromTwoHalfwords
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A710
-
- thumb_func_start TaskDummy9
-TaskDummy9: @ 812A74C
- bx lr
- thumb_func_end TaskDummy9
-
- thumb_func_start sub_812A750
-sub_812A750: @ 812A750
- push {lr}
- sub sp, 0x4
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- str r0, [sp]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x05006000
- mov r0, sp
- bl CpuSet
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085A7424
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r0, =gUnknown_085A7434
- bl InitWindows
- bl DeactivateAllTextPrinters
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A750
-
- thumb_func_start sub_812A79C
-sub_812A79C: @ 812A79C
- push {lr}
- ldr r0, =sub_812A688
- bl SetVBlankCallback
- movs r0, 0x1
- bl EnableInterrupts
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A79C
-
- thumb_func_start sub_812A7BC
-sub_812A7BC: @ 812A7BC
- push {r4-r7,lr}
- sub sp, 0x4
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0x80
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0812A7DA:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _0812A7DA
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A7BC
-
- thumb_func_start sub_812A810
-sub_812A810: @ 812A810
- sub sp, 0x4
- movs r2, 0xE0
- lsls r2, 19
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r0, =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, =0x81000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- add sp, 0x4
- bx lr
- .pool
- thumb_func_end sub_812A810
-
- thumb_func_start sub_812A834
-sub_812A834: @ 812A834
- push {lr}
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3F
- bl SetGpuReg
- ldr r1, =0x00001048
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x00000809
- movs r0, 0x52
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A834
-
- thumb_func_start sub_812A8C4
-sub_812A8C4: @ 812A8C4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl sub_812A710
- ldr r5, =gUnknown_0203AB34
- ldr r0, [r5]
- movs r4, 0
- strb r4, [r0]
- ldr r0, [r5]
- strb r4, [r0, 0x2]
- bl Random
- ldr r2, [r5]
- movs r1, 0x1
- ands r1, r0
- strb r1, [r2, 0x3]
- ldr r0, [r5]
- strb r4, [r0, 0x4]
- ldr r0, [r5]
- movs r1, 0
- strh r4, [r0, 0x8]
- strb r1, [r0, 0xA]
- ldr r0, [r5]
- strb r1, [r0, 0xB]
- bl GetCoins
- ldr r2, [r5]
- strh r0, [r2, 0xC]
- strh r4, [r2, 0xE]
- strh r4, [r2, 0x10]
- strh r4, [r2, 0x12]
- strh r4, [r2, 0x18]
- movs r0, 0x8
- strh r0, [r2, 0x1A]
- adds r1, r2, 0
- adds r1, 0x58
- movs r0, 0xF0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA0
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r1, 0x3F
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl GetCurrentMapMusic
- ldr r1, [r5]
- adds r1, 0x60
- strh r0, [r1]
- movs r7, 0
- ldr r0, =gUnknown_085A76B4
- mov r8, r0
-_0812A934:
- ldr r0, =gUnknown_0203AB34
- ldr r4, [r0]
- lsls r6, r7, 1
- adds r0, r4, 0
- adds r0, 0x22
- adds r0, r6
- movs r1, 0
- strh r1, [r0]
- adds r5, r4, 0
- adds r5, 0x28
- adds r5, r6
- ldrb r0, [r4, 0x3]
- lsls r0, 1
- lsls r1, r7, 2
- adds r0, r1
- add r0, r8
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x15
- bl __modsi3
- strh r0, [r5]
- adds r4, 0x1C
- adds r4, r6
- movs r2, 0
- ldrsh r0, [r5, r2]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- movs r2, 0xFC
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- adds r1, r2, 0
- bl __modsi3
- strh r0, [r4]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _0812A934
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- bl sub_80EDE70
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A8C4
-
- thumb_func_start sub_812A9AC
-sub_812A9AC: @ 812A9AC
- push {lr}
- bl ResetPaletteFade
- bl ResetSpriteData
- ldr r1, =gOamLimit
- movs r0, 0x80
- strb r0, [r1]
- bl FreeAllSpritePalettes
- bl ResetTasks
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A9AC
-
- thumb_func_start sub_812A9CC
-sub_812A9CC: @ 812A9CC
- push {r4,r5,lr}
- ldr r4, =gUnknown_0203AACC
- movs r0, 0x8
- bl Alloc
- str r0, [r4]
- ldr r4, =gUnknown_0203AAD0
- movs r0, 0xE
- bl AllocZeroed
- str r0, [r4]
- ldr r5, =gUnknown_0203AADC
- movs r0, 0x8
- bl AllocZeroed
- str r0, [r5]
- ldr r1, [r4]
- ldr r2, =0x00002051
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, [r4]
- ldr r2, =0x00002851
- adds r0, r2, 0
- strh r0, [r1, 0x2]
- ldr r2, =0x00002061
- adds r0, r2, 0
- strh r0, [r1, 0x4]
- ldr r2, =0x00002861
- adds r0, r2, 0
- strh r0, [r1, 0x6]
- ldr r2, =0x000020be
- adds r0, r2, 0
- strh r0, [r1, 0x8]
- ldr r2, =0x000028be
- adds r0, r2, 0
- strh r0, [r1, 0xA]
- ldr r2, =0x000020bf
- adds r0, r2, 0
- strh r0, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A9CC
-
- thumb_func_start sub_812AA48
-sub_812AA48: @ 812AA48
- push {lr}
- bl sub_812F908
- bl sub_812F958
- bl sub_812F7E4
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- movs r2, 0xF0
- bl LoadMessageBoxGfx
- movs r1, 0x85
- lsls r1, 2
- movs r0, 0
- movs r2, 0xE0
- bl LoadUserWindowBorderGfx
- movs r0, 0
- bl PutWindowTilemap
- pop {r0}
- bx r0
- thumb_func_end sub_812AA48
-
- thumb_func_start sub_812AA78
-sub_812AA78: @ 812AA78
- push {lr}
- bl sub_812E0E4
- bl sub_812E1C8
- bl sub_812CEF4
- bl sub_812E300
- pop {r0}
- bx r0
- thumb_func_end sub_812AA78
-
- thumb_func_start sub_812AA90
-sub_812AA90: @ 812AA90
- push {lr}
- bl sub_812D188
- bl sub_812BE5C
- bl sub_812DE94
- bl sub_812AAA8
- pop {r0}
- bx r0
- thumb_func_end sub_812AA90
-
- thumb_func_start sub_812AAA8
-sub_812AAA8: @ 812AAA8
- push {r4,lr}
- ldr r4, =sub_812AAC8
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812AAA8
-
- thumb_func_start sub_812AAC8
-sub_812AAC8: @ 812AAC8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r6, =gUnknown_085A7450
- lsls r1, r0, 2
- adds r1, r0
- lsls r4, r1, 3
- ldr r5, =gTasks
-_0812AAD8:
- ldr r0, =gUnknown_0203AB34
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- adds r0, r4, r5
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0812AAD8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812AAC8
-
- thumb_func_start sub_812AB04
-sub_812AB04: @ 812AB04
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- bl sub_812D3B4
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AB04
-
- thumb_func_start sub_812AB38
-sub_812AB38: @ 812AB38
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812AB50
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0812AB50:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AB38
-
- thumb_func_start sub_812AB60
-sub_812AB60: @ 812AB60
- push {lr}
- ldr r3, =gUnknown_0203AB34
- ldr r1, [r3]
- movs r0, 0
- strh r0, [r1, 0xE]
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x18]
- ldrb r2, [r1, 0x4]
- movs r0, 0xC0
- ands r0, r2
- strb r0, [r1, 0x4]
- ldr r1, [r3]
- movs r0, 0x4
- strb r0, [r1]
- ldr r3, [r3]
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bgt _0812AB90
- movs r0, 0x19
- strb r0, [r3]
- b _0812ABA0
- .pool
-_0812AB90:
- ldrb r0, [r3, 0xA]
- cmp r0, 0
- beq _0812ABA0
- movs r0, 0x3
- strb r0, [r3]
- movs r0, 0x4
- bl sub_812DEE4
-_0812ABA0:
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_812AB60
-
- thumb_func_start sub_812ABA8
-sub_812ABA8: @ 812ABA8
- push {lr}
- bl sub_812E054
- lsls r0, 24
- cmp r0, 0
- beq _0812ABBC
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x4
- strb r0, [r1]
-_0812ABBC:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812ABA8
-
- thumb_func_start sub_812ABC8
-sub_812ABC8: @ 812ABC8
- push {lr}
- movs r0, 0
- bl sub_812DEE4
- ldr r2, =gUnknown_0203AB34
- ldr r1, [r2]
- movs r0, 0x5
- strb r0, [r1]
- ldr r2, [r2]
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- ldr r0, =0x0000270e
- cmp r1, r0
- ble _0812ABE8
- movs r0, 0x17
- strb r0, [r2]
-_0812ABE8:
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812ABC8
-
- thumb_func_start sub_812ABF8
-sub_812ABF8: @ 812ABF8
- push {r4,r5,lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0812AC1C
- movs r0, 0
- bl sub_812DC80
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x8
- b _0812ACE2
- .pool
-_0812AC1C:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0812AC82
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- movs r1, 0xC
- ldrsh r0, [r2, r1]
- subs r0, 0x3
- movs r3, 0x12
- ldrsh r1, [r2, r3]
- adds r0, r1
- cmp r0, 0
- blt _0812AC7C
- ldrh r4, [r2, 0x12]
- adds r0, r1, 0
- cmp r0, 0x2
- bgt _0812AC5A
-_0812AC42:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_812CE7C
- lsls r0, r4, 16
- movs r2, 0x80
- lsls r2, 9
- adds r0, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _0812AC42
-_0812AC5A:
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- ldrh r0, [r1, 0xC]
- subs r0, 0x3
- ldrh r3, [r1, 0x12]
- adds r0, r3
- strh r0, [r1, 0xC]
- movs r0, 0x3
- strh r0, [r1, 0x12]
- movs r0, 0x9
- strb r0, [r1]
- movs r0, 0x5F
- bl PlaySE
- b _0812ACE4
- .pool
-_0812AC7C:
- movs r0, 0x6
- strb r0, [r2]
- b _0812ACE4
-_0812AC82:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0812ACB2
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0812ACB2
- movs r0, 0x5F
- bl PlaySE
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- bl sub_812CE7C
- ldr r1, [r4]
- ldrh r0, [r1, 0xC]
- subs r0, 0x1
- strh r0, [r1, 0xC]
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
-_0812ACB2:
- ldr r0, =gUnknown_0203AB34
- ldr r3, [r0]
- movs r1, 0x12
- ldrsh r2, [r3, r1]
- ldr r4, =gMain
- adds r5, r0, 0
- cmp r2, 0x2
- bgt _0812ACD0
- cmp r2, 0
- beq _0812ACD4
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812ACD4
-_0812ACD0:
- movs r0, 0x9
- strb r0, [r3]
-_0812ACD4:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812ACE4
- ldr r1, [r5]
- movs r0, 0x15
-_0812ACE2:
- strb r0, [r1]
-_0812ACE4:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812ABF8
-
- thumb_func_start sub_812ACF4
-sub_812ACF4: @ 812ACF4
- push {lr}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0
- bl NewMenuHelpers_DrawDialogueFrame
- ldr r2, =gText_YouDontHaveThreeCoins
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x7
- strb r0, [r1]
- movs r0, 0
- add sp, 0xC
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812ACF4
-
- thumb_func_start sub_812AD34
-sub_812AD34: @ 812AD34
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0812AD52
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x5
- strb r0, [r1]
-_0812AD52:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AD34
- thumb_func_start sub_812AD60
-sub_812AD60: @ 812AD60
- push {lr}
- bl sub_812DCB4
- lsls r0, 24
- cmp r0, 0
- beq _0812AD74
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x5
- strb r0, [r1]
-_0812AD74:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AD60
- thumb_func_start sub_812AD80
-sub_812AD80: @ 812AD80
- push {r4,lr}
- adds r4, r0, 0
- bl sub_812B4EC
- bl sub_812DFDC
- movs r0, 0
- bl sub_812BEA4
- movs r0, 0x1
- bl sub_812BEA4
- movs r0, 0x2
- bl sub_812BEA4
- bl sub_80EEC80
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- ldrb r1, [r0, 0x4]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0812ADC4
- bl sub_812D4AC
- ldr r1, [r4]
- movs r0, 0xA
- b _0812ADCE
- .pool
-_0812ADC4:
- movs r0, 0x1
- bl sub_812DEE4
- ldr r1, [r4]
- movs r0, 0xB
-_0812ADCE:
- strb r0, [r1]
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- movs r1, 0x8
- strh r1, [r0, 0x1A]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _0812ADE6
- bl dp15_jump_random_unknown
- ldr r1, [r4]
- strh r0, [r1, 0x1A]
-_0812ADE6:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AD80
-
- thumb_func_start sub_812ADF4
-sub_812ADF4: @ 812ADF4
- push {lr}
- bl sub_812D4CC
- lsls r0, 24
- cmp r0, 0
- beq _0812AE18
- movs r0, 0x1
- bl sub_812DEE4
- ldr r3, =gUnknown_0203AB34
- ldr r2, [r3]
- ldrb r1, [r2, 0x4]
- movs r0, 0xDF
- ands r0, r1
- strb r0, [r2, 0x4]
- ldr r1, [r3]
- movs r0, 0xB
- strb r0, [r1]
-_0812AE18:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812ADF4
-
- thumb_func_start sub_812AE24
-sub_812AE24: @ 812AE24
- push {lr}
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x1D
- ble _0812AE40
- bl sub_812B55C
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0xC
- strb r0, [r1]
-_0812AE40:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AE24
-
- thumb_func_start sub_812AE4C
-sub_812AE4C: @ 812AE4C
- push {r4,lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812AE78
- movs r0, 0x18
- bl PlaySE
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- ldrb r0, [r0, 0x18]
- bl sub_812BEDC
- ldr r0, [r4]
- ldrb r0, [r0, 0x18]
- bl sub_812CD40
- ldr r1, [r4]
- movs r0, 0xD
- strb r0, [r1]
-_0812AE78:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AE4C
-
- thumb_func_start sub_812AE88
-sub_812AE88: @ 812AE88
- push {r4,lr}
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- ldrb r0, [r0, 0x18]
- bl sub_812BF04
- lsls r0, 24
- cmp r0, 0
- bne _0812AEBC
- ldr r1, [r4]
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, [r4]
- movs r2, 0x18
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- ble _0812AEB4
- movs r0, 0xE
- strb r0, [r1]
-_0812AEB4:
- movs r0, 0x1
- b _0812AEBE
- .pool
-_0812AEBC:
- movs r0, 0
-_0812AEBE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812AE88
-
- thumb_func_start sub_812AEC4
-sub_812AEC4: @ 812AEC4
- push {r4,lr}
- ldr r4, =gUnknown_0203AB34
- ldr r2, [r4]
- ldrb r1, [r2, 0x4]
- movs r0, 0xC0
- ands r0, r1
- strb r0, [r2, 0x4]
- bl sub_812B828
- ldr r1, [r4]
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- beq _0812AEEA
- subs r0, 0x1
- strb r0, [r1, 0xA]
- ldr r1, [r4]
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
- strb r0, [r1, 0xB]
-_0812AEEA:
- ldr r1, [r4]
- ldrh r0, [r1, 0x8]
- cmp r0, 0
- beq _0812AFCC
- movs r0, 0xF
- strb r0, [r1]
- bl sub_812BABC
- bl sub_812D0B0
- ldr r2, [r4]
- ldrh r0, [r2, 0x10]
- ldrh r1, [r2, 0xE]
- subs r0, r1
- strh r0, [r2, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _0812AF12
- movs r0, 0
- strh r0, [r2, 0x10]
-_0812AF12:
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0812AF38
- ldr r0, =0x00000185
- bl PlayFanfare
- movs r0, 0x6
- bl sub_812DEE4
- b _0812AF62
- .pool
-_0812AF38:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0812AF54
- ldr r0, =0x00000185
- bl PlayFanfare
- movs r0, 0x5
- bl sub_812DEE4
- b _0812AF62
- .pool
-_0812AF54:
- movs r0, 0xC3
- lsls r0, 1
- bl PlayFanfare
- movs r0, 0x2
- bl sub_812DEE4
-_0812AF62:
- ldr r2, =gUnknown_0203AB34
- ldr r3, [r2]
- ldrh r1, [r3, 0x8]
- movs r0, 0xE0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0812AFA6
- ldrb r1, [r3, 0x4]
- movs r0, 0x3F
- ands r0, r1
- movs r4, 0
- strb r0, [r3, 0x4]
- ldr r3, [r2]
- ldrh r1, [r3, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0812AFA6
- strb r4, [r3, 0xA]
- ldr r0, [r2]
- strb r4, [r0, 0xB]
- ldr r0, [r2]
- strb r4, [r0, 0x3]
- ldr r3, [r2]
- ldrh r1, [r3, 0x8]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0812AFA6
- movs r0, 0x1
- strb r0, [r3, 0x3]
-_0812AFA6:
- ldr r3, [r2]
- ldrh r1, [r3, 0x8]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0812AFEE
- ldrb r0, [r3, 0x2]
- cmp r0, 0xF
- bhi _0812AFEE
- adds r0, 0x1
- strb r0, [r3, 0x2]
- ldr r0, [r2]
- ldrb r0, [r0, 0x2]
- bl sub_812D1A8
- b _0812AFEE
- .pool
-_0812AFCC:
- movs r0, 0x3
- bl sub_812DEE4
- ldr r1, [r4]
- movs r0, 0x14
- strb r0, [r1]
- ldr r1, [r4]
- ldrh r0, [r1, 0x12]
- ldrh r2, [r1, 0x10]
- adds r0, r2
- strh r0, [r1, 0x10]
- lsls r0, 16
- asrs r0, 16
- ldr r2, =0x0000270f
- cmp r0, r2
- ble _0812AFEE
- strh r2, [r1, 0x10]
-_0812AFEE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AEC4
-
- thumb_func_start sub_812AFFC
-sub_812AFFC: @ 812AFFC
- push {lr}
- bl sub_812BADC
- lsls r0, 24
- cmp r0, 0
- beq _0812B010
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x10
- strb r0, [r1]
-_0812B010:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812AFFC
-
- thumb_func_start sub_812B01C
-sub_812B01C: @ 812B01C
- push {r4,lr}
- bl sub_812D0E0
- lsls r0, 24
- cmp r0, 0
- beq _0812B088
- ldr r4, =gUnknown_0203AB34
- ldr r1, [r4]
- movs r0, 0x13
- strb r0, [r1]
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0812B044
- movs r0, 0x1C
- bl IncrementGameStat
-_0812B044:
- ldr r2, [r4]
- ldrh r1, [r2, 0x8]
- movs r3, 0x4
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0812B05A
- movs r0, 0
- strh r0, [r2, 0x18]
- movs r0, 0x9
- strb r0, [r2]
-_0812B05A:
- ldr r2, [r4]
- ldrh r1, [r2, 0x8]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0812B06A
- movs r0, 0x11
- strb r0, [r2]
-_0812B06A:
- ldr r1, [r4]
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- beq _0812B088
- ldrh r1, [r1, 0x8]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0812B088
- movs r0, 0x4
- bl sub_812DEE4
- ldr r1, [r4]
- movs r0, 0x12
- strb r0, [r1]
-_0812B088:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B01C
-
- thumb_func_start sub_812B094
-sub_812B094: @ 812B094
- push {r4,lr}
- bl sub_812D20C
- lsls r0, 24
- cmp r0, 0
- bne _0812B0CC
- ldr r4, =gUnknown_0203AB34
- ldr r1, [r4]
- movs r0, 0x13
- strb r0, [r1]
- ldr r2, [r4]
- ldrh r1, [r2, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0812B0CC
- movs r0, 0x9
- strb r0, [r2]
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _0812B0CC
- movs r0, 0x4
- bl sub_812DEE4
- ldr r1, [r4]
- movs r0, 0x12
- strb r0, [r1]
-_0812B0CC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B094
-
- thumb_func_start sub_812B0D8
-sub_812B0D8: @ 812B0D8
- push {lr}
- bl sub_812E054
- lsls r0, 24
- cmp r0, 0
- beq _0812B0FC
- ldr r2, =gUnknown_0203AB34
- ldr r1, [r2]
- movs r0, 0x13
- strb r0, [r1]
- ldr r2, [r2]
- ldrh r1, [r2, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0812B0FC
- movs r0, 0x9
- strb r0, [r2]
-_0812B0FC:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B0D8
-
- thumb_func_start sub_812B108
-sub_812B108: @ 812B108
- push {lr}
- movs r0, 0
- bl sub_812CEB8
- movs r0, 0x1
- bl sub_812CEB8
- movs r0, 0x2
- bl sub_812CEB8
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x2
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B108
-
- thumb_func_start sub_812B130
-sub_812B130: @ 812B130
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x40
- ble _0812B14E
- movs r0, 0
- strh r0, [r1, 0xA]
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x13
- strb r0, [r1]
-_0812B14E:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B130
-
- thumb_func_start sub_812B158
-sub_812B158: @ 812B158
- push {lr}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0
- bl NewMenuHelpers_DrawDialogueFrame
- ldr r2, =gText_QuitTheGame
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- movs r2, 0x85
- lsls r2, 2
- movs r3, 0xC0
- lsls r3, 1
- movs r0, 0xE
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0x15
- movs r1, 0x7
- bl sub_80323CC
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x16
- strb r0, [r1]
- movs r0, 0
- add sp, 0xC
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B158
-
- thumb_func_start sub_812B1B0
-sub_812B1B0: @ 812B1B0
- push {lr}
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _0812B1EC
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- movs r0, 0
- bl sub_812CEB8
- movs r0, 0x1
- bl sub_812CEB8
- movs r0, 0x2
- bl sub_812CEB8
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- ldrh r2, [r1, 0xC]
- adds r0, r2
- strh r0, [r1, 0xC]
- movs r0, 0x1B
- b _0812B206
- .pool
-_0812B1EC:
- cmp r1, 0x1
- beq _0812B1F8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _0812B208
-_0812B1F8:
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x5
-_0812B206:
- strb r0, [r1]
-_0812B208:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B1B0
-
- thumb_func_start sub_812B214
-sub_812B214: @ 812B214
- push {lr}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0
- bl NewMenuHelpers_DrawDialogueFrame
- ldr r2, =gText_YouveGot9999Coins
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x18
- strb r0, [r1]
- movs r0, 0
- add sp, 0xC
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B214
-
- thumb_func_start sub_812B254
-sub_812B254: @ 812B254
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0812B272
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x5
- strb r0, [r1]
-_0812B272:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B254
-
- thumb_func_start sub_812B280
-sub_812B280: @ 812B280
- push {lr}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0
- bl NewMenuHelpers_DrawDialogueFrame
- ldr r2, =gText_YouveRunOutOfCoins
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x1A
- strb r0, [r1]
- movs r0, 0
- add sp, 0xC
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B280
-
- thumb_func_start sub_812B2C0
-sub_812B2C0: @ 812B2C0
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0812B2DE
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0x1B
- strb r0, [r1]
-_0812B2DE:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B2C0
-
- thumb_func_start sub_812B2EC
-sub_812B2EC: @ 812B2EC
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =gUnknown_0203AB34
- ldr r0, [r4]
- ldrh r0, [r0, 0xC]
- bl SetCoins
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- bl sub_80EDD78
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B2EC
-
- thumb_func_start sub_812B32C
-sub_812B32C: @ 812B32C
- push {r4-r6,lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0812B340
- b _0812B470
-_0812B340:
- ldr r6, =gUnknown_0203AB34
- ldr r0, [r6]
- ldr r0, [r0, 0x64]
- bl SetMainCallback2
- ldr r4, =gUnknown_0203AAF4
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAF8
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAFC
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB00
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB04
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB08
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB0C
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB10
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB14
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB18
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB1C
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB20
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB24
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB28
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAE4
- ldr r0, [r4]
- cmp r0, 0
- beq _0812B3E4
- bl Free
- str r5, [r4]
-_0812B3E4:
- ldr r4, =gUnknown_0203AAE8
- ldr r0, [r4]
- cmp r0, 0
- beq _0812B3F2
- bl Free
- str r5, [r4]
-_0812B3F2:
- ldr r4, =gUnknown_0203AAEC
- ldr r0, [r4]
- cmp r0, 0
- beq _0812B400
- bl Free
- str r5, [r4]
-_0812B400:
- ldr r4, =gUnknown_0203AAF0
- ldr r0, [r4]
- cmp r0, 0
- beq _0812B40E
- bl Free
- str r5, [r4]
-_0812B40E:
- ldr r4, =gUnknown_0203AAC8
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AACC
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAD0
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAD4
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAD8
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AADC
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AAE0
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB2C
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203AB30
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r0, [r6]
- bl Free
- str r5, [r6]
-_0812B470:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B32C
-
- thumb_func_start sub_812B4EC
-sub_812B4EC: @ 812B4EC
- push {r4,lr}
- ldr r4, =gUnknown_0203AB34
- ldr r1, [r4]
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0812B54A
- ldrb r1, [r1, 0x4]
- movs r0, 0xC0
- ands r0, r1
- cmp r0, 0
- bne _0812B54A
- bl sub_812B5B0
- lsls r0, 24
- cmp r0, 0
- beq _0812B52C
- bl sub_812B5EC
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- beq _0812B52C
- ldr r2, [r4]
- ldr r1, =gUnknown_085A77FE
- lsls r0, r3, 1
- adds r0, r1
- ldrb r1, [r0]
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strb r0, [r2, 0x4]
- cmp r3, 0x1
- bne _0812B54A
-_0812B52C:
- bl sub_812B634
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- beq _0812B54A
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldr r1, =gUnknown_085A7804
- lsls r0, r3, 1
- adds r0, r1
- ldrb r1, [r0]
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strb r0, [r2, 0x4]
-_0812B54A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B4EC
-
- thumb_func_start sub_812B55C
-sub_812B55C: @ 812B55C
- push {lr}
- ldr r2, =gUnknown_0203AB34
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1, 0x6]
- ldr r2, [r2]
- ldrb r0, [r2, 0x4]
- cmp r0, 0
- beq _0812B572
- movs r0, 0x1
- strb r0, [r2, 0x6]
-_0812B572:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B55C
-
- thumb_func_start sub_812B57C
-sub_812B57C: @ 812B57C
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0
- movs r3, 0x1
- ldr r4, =gUnknown_085A77F6
-_0812B588:
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0812B59C
- adds r0, r2, r4
- ldrb r0, [r0]
- b _0812B5AA
- .pool
-_0812B59C:
- lsrs r1, 1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _0812B588
- movs r0, 0
-_0812B5AA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812B57C
-
- thumb_func_start sub_812B5B0
-sub_812B5B0: @ 812B5B0
- push {r4,lr}
- bl Random
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gUnknown_085A76C0
- ldr r1, =gUnknown_0203AB34
- ldr r1, [r1]
- movs r3, 0x12
- ldrsh r2, [r1, r3]
- ldrb r3, [r1, 0x1]
- lsls r1, r3, 1
- adds r1, r3
- subs r1, 0x1
- adds r2, r1
- adds r2, r4
- ldrb r1, [r2]
- cmp r1, r0
- bhi _0812B5E4
- movs r0, 0
- b _0812B5E6
- .pool
-_0812B5E4:
- movs r0, 0x1
-_0812B5E6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812B5B0
-
- thumb_func_start sub_812B5EC
-sub_812B5EC: @ 812B5EC
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, =gUnknown_085A76D2
-_0812B5F2:
- bl Random
- movs r2, 0xFF
- ldr r1, =gUnknown_0203AB34
- ldr r3, [r1]
- lsls r1, r5, 16
- asrs r4, r1, 16
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 1
- ldrb r3, [r3, 0x1]
- adds r1, r3
- adds r1, r6
- ldrb r1, [r1]
- ands r2, r0
- cmp r1, r2
- bgt _0812B620
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _0812B5F2
-_0812B620:
- lsls r0, r5, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B5EC
-
- thumb_func_start sub_812B634
-sub_812B634: @ 812B634
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, =gUnknown_085A76E4
- mov r8, r0
- movs r7, 0x80
- lsls r7, 17
-_0812B644:
- bl Random
- movs r5, 0xFF
- ands r5, r0
- ldr r0, =gUnknown_0203AB34
- ldr r4, [r0]
- lsls r2, r6, 16
- asrs r1, r2, 16
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- ldrb r3, [r4, 0x1]
- adds r0, r3
- add r0, r8
- ldrb r3, [r0]
- cmp r1, 0
- bne _0812B680
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _0812B680
- adds r3, 0xA
- asrs r0, r7, 16
- cmp r3, r0
- ble _0812B69E
- adds r3, r0, 0
- b _0812B69E
- .pool
-_0812B680:
- asrs r0, r2, 16
- cmp r0, 0x4
- bne _0812B69E
- ldr r0, =gUnknown_0203AB34
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- cmp r0, 0x1
- bne _0812B69E
- lsls r0, r3, 16
- ldr r1, =0xfff60000
- adds r0, r1
- lsrs r3, r0, 16
- cmp r0, 0
- bge _0812B69E
- movs r3, 0
-_0812B69E:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, r5
- bgt _0812B6B4
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r6, r0, 16
- asrs r0, 16
- cmp r0, 0x4
- ble _0812B644
-_0812B6B4:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B634
-
- thumb_func_start sub_812B6CC
-sub_812B6CC: @ 812B6CC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldrb r0, [r2, 0x3]
- cmp r0, 0
- beq _0812B6E8
- ldr r0, =gUnknown_085A7768
- b _0812B6EA
- .pool
-_0812B6E8:
- ldr r0, =gUnknown_085A7702
-_0812B6EA:
- lsls r1, r3, 4
- adds r1, r3
- ldrb r2, [r2, 0x2]
- adds r1, r2
- adds r1, r0
- ldrb r0, [r1]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812B6CC
-
- thumb_func_start sub_812B700
-sub_812B700: @ 812B700
- push {r4-r6,lr}
- ldr r0, =gUnknown_0203AB34
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x5]
- bl Random
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl sub_812B6CC
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _0812B754
- movs r6, 0x5
- b _0812B72E
- .pool
-_0812B728:
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_0812B72E:
- lsls r0, r6, 16
- asrs r5, r0, 16
- cmp r5, 0
- ble _0812B74E
- bl Random
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r6, 24
- lsrs r0, 24
- bl sub_812B6CC
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _0812B728
-_0812B74E:
- ldr r0, =gUnknown_0203AB34
- ldr r0, [r0]
- strb r6, [r0, 0x5]
-_0812B754:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B700
-
- thumb_func_start sub_812B760
-sub_812B760: @ 812B760
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- movs r1, 0xFF
- ands r1, r0
- ldr r0, =gUnknown_085A77CE
- lsls r4, 1
- adds r4, r0
- ldrh r4, [r4]
- cmp r1, r4
- bcc _0812B784
- movs r0, 0
- b _0812B786
- .pool
-_0812B784:
- movs r0, 0x1
-_0812B786:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812B760
-
- thumb_func_start dp15_jump_random_unknown
-dp15_jump_random_unknown: @ 812B78C
- push {r4,r5,lr}
- movs r4, 0
- ldr r0, =gUnknown_0203AB34
- ldr r0, [r0]
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- ldr r0, =0x0000012b
- cmp r1, r0
- ble _0812B7AC
- movs r4, 0x4
- b _0812B7C2
- .pool
-_0812B7AC:
- cmp r1, 0xF9
- ble _0812B7B4
- movs r4, 0x3
- b _0812B7C2
-_0812B7B4:
- cmp r1, 0xC7
- ble _0812B7BC
- movs r4, 0x2
- b _0812B7C2
-_0812B7BC:
- cmp r1, 0x95
- ble _0812B7C2
- movs r4, 0x1
-_0812B7C2:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r5, =gUnknown_085A77D8
- lsls r4, 2
- adds r0, r4, r5
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0812B7E8
- movs r0, 0x4
- b _0812B822
- .pool
-_0812B7E8:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 24
- adds r2, r5, 0x2
- adds r2, r4, r2
- ldr r3, =gUnknown_085A77EC
- ldr r1, =gUnknown_0203AB34
- ldr r1, [r1]
- ldrb r1, [r1, 0xB]
- lsls r1, 1
- adds r1, r3
- ldrb r1, [r1]
- ldrb r2, [r2]
- adds r1, r2
- lsls r1, 24
- cmp r0, r1
- bcc _0812B820
- movs r0, 0x8
- b _0812B822
- .pool
-_0812B820:
- movs r0, 0x2
-_0812B822:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end dp15_jump_random_unknown
-
- thumb_func_start sub_812B828
-sub_812B828: @ 812B828
- push {r4,lr}
- ldr r4, =gUnknown_0203AB34
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1, 0x8]
- bl sub_812B85C
- ldr r0, [r4]
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- ble _0812B844
- bl sub_812B8D0
-_0812B844:
- ldr r0, [r4]
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- ble _0812B852
- bl sub_812B9A0
-_0812B852:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B828
-
- thumb_func_start sub_812B85C
-sub_812B85C: @ 812B85C
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x2
- bl sub_812BC44
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_812BC44
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0x2
- bl sub_812BC44
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_812BA6C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0812B8BC
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldr r0, =gUnknown_085A7828
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, =gUnknown_085A7816
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0
- bl sub_812CF34
-_0812B8BC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B85C
-
- thumb_func_start sub_812B8D0
-sub_812B8D0: @ 812B8D0
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x1
- bl sub_812BC44
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x1
- bl sub_812BC44
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x1
- bl sub_812BC44
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_812BA6C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0812B930
- cmp r1, 0
- bne _0812B90C
- movs r1, 0x1
-_0812B90C:
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldr r0, =gUnknown_085A7828
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, =gUnknown_085A7816
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0x1
- bl sub_812CF34
-_0812B930:
- movs r0, 0
- movs r1, 0x3
- bl sub_812BC44
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x3
- bl sub_812BC44
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x3
- bl sub_812BC44
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_812BA6C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0812B98E
- cmp r1, 0
- bne _0812B96A
- movs r1, 0x1
-_0812B96A:
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldr r0, =gUnknown_085A7828
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, =gUnknown_085A7816
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
- movs r0, 0x2
- bl sub_812CF34
-_0812B98E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B8D0
-
- thumb_func_start sub_812B9A0
-sub_812B9A0: @ 812B9A0
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0x1
- bl sub_812BC44
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_812BC44
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x3
- bl sub_812BC44
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_812BA6C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0812B9FE
- cmp r1, 0
- beq _0812B9F8
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldr r0, =gUnknown_085A7828
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, =gUnknown_085A7816
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
-_0812B9F8:
- movs r0, 0x3
- bl sub_812CF34
-_0812B9FE:
- movs r0, 0
- movs r1, 0x3
- bl sub_812BC44
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x1
- movs r1, 0x2
- bl sub_812BC44
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- movs r1, 0x1
- bl sub_812BC44
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_812BA6C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- beq _0812BA5A
- cmp r1, 0
- beq _0812BA54
- ldr r0, =gUnknown_0203AB34
- ldr r2, [r0]
- ldr r0, =gUnknown_085A7828
- lsls r1, 1
- adds r0, r1, r0
- ldrh r0, [r0]
- ldrh r3, [r2, 0xE]
- adds r0, r3
- strh r0, [r2, 0xE]
- ldr r0, =gUnknown_085A7816
- adds r1, r0
- ldrh r0, [r2, 0x8]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r2, 0x8]
-_0812BA54:
- movs r0, 0x4
- bl sub_812CF34
-_0812BA5A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812B9A0
-
- thumb_func_start sub_812BA6C
-sub_812BA6C: @ 812BA6C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r3, r1
- bne _0812BA90
- cmp r3, r2
- bne _0812BA90
- ldr r0, =gUnknown_085A780E
- adds r0, r3, r0
- ldrb r0, [r0]
- b _0812BAB6
- .pool
-_0812BA90:
- cmp r3, 0
- bne _0812BA9C
- cmp r1, 0
- bne _0812BA9C
- cmp r2, 0x1
- beq _0812BAA8
-_0812BA9C:
- cmp r3, 0x1
- bne _0812BAAC
- cmp r1, 0x1
- bne _0812BAAC
- cmp r2, 0
- bne _0812BAAC
-_0812BAA8:
- movs r0, 0x6
- b _0812BAB6
-_0812BAAC:
- cmp r3, 0x4
- beq _0812BAB4
- movs r0, 0x9
- b _0812BAB6
-_0812BAB4:
- movs r0, 0
-_0812BAB6:
- pop {r1}
- bx r1
- thumb_func_end sub_812BA6C
-
- thumb_func_start sub_812BABC
-sub_812BABC: @ 812BABC
- push {r4,lr}
- ldr r4, =sub_812BAFC
- adds r0, r4, 0
- movs r1, 0x4
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812BABC
-
- thumb_func_start sub_812BADC
-sub_812BADC: @ 812BADC
- push {lr}
- ldr r0, =sub_812BAFC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0812BAF4
- movs r0, 0
- b _0812BAF6
- .pool
-_0812BAF4:
- movs r0, 0x1
-_0812BAF6:
- pop {r1}
- bx r1
- thumb_func_end sub_812BADC
- thumb_func_start sub_812BAFC
-sub_812BAFC: @ 812BAFC
+ thumb_func_start sub_8102A64
+sub_8102A64: @ 812BAFC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -2719,7 +34,7 @@ _0812BB0E:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812BAFC
+ thumb_func_end sub_8102A64
thumb_func_start sub_812BB34
sub_812BB34: @ 812BB34
@@ -2732,7 +47,7 @@ sub_812BB34: @ 812BB34
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r1, 0xE
ldrsh r0, [r0, r1]
@@ -2771,7 +86,7 @@ sub_812BB68: @ 812BB68
movs r0, 0x15
bl PlaySE
_0812BB8E:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r2, [r0]
ldrh r0, [r2, 0xE]
subs r0, 0x1
@@ -2808,7 +123,7 @@ _0812BBBC:
beq _0812BBF6
movs r0, 0x15
bl PlaySE
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r2, [r1]
ldrh r0, [r2, 0xE]
ldrh r3, [r2, 0xC]
@@ -2825,7 +140,7 @@ _0812BBF0:
movs r0, 0
strh r0, [r1, 0xE]
_0812BBF6:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r1, 0xE
ldrsh r0, [r0, r1]
@@ -2849,7 +164,7 @@ sub_812BC20: @ 812BC20
lsls r0, 24
cmp r0, 0
beq _0812BC3A
- ldr r0, =sub_812BAFC
+ ldr r0, =sub_8102A64
bl FindTaskIdByFunc
lsls r0, 24
lsrs r0, 24
@@ -2861,13 +176,13 @@ _0812BC3A:
.pool
thumb_func_end sub_812BC20
- thumb_func_start sub_812BC44
-sub_812BC44: @ 812BC44
+ thumb_func_start GetTagOfReelSymbolOnScreenAtPos
+GetTagOfReelSymbolOnScreenAtPos: @ 812BC44
push {r4,lr}
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
lsls r2, r4, 1
adds r0, 0x28
@@ -2902,7 +217,7 @@ _0812BC76:
pop {r1}
bx r1
.pool
- thumb_func_end sub_812BC44
+ thumb_func_end GetTagOfReelSymbolOnScreenAtPos
thumb_func_start sub_812BC98
sub_812BC98: @ 812BC98
@@ -2913,7 +228,7 @@ sub_812BC98: @ 812BC98
lsls r1, 16
lsrs r5, r1, 16
movs r6, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
lsls r1, r4, 1
adds r0, 0x1C
@@ -2935,7 +250,7 @@ _0812BCC2:
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
- bl sub_812BC44
+ bl GetTagOfReelSymbolOnScreenAtPos
lsls r0, 24
lsrs r0, 24
pop {r4-r6}
@@ -2947,7 +262,7 @@ _0812BCC2:
thumb_func_start sub_812BCE8
sub_812BCE8: @ 812BCE8
push {lr}
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
movs r2, 0x16
ldrsh r1, [r1, r2]
@@ -2981,7 +296,7 @@ sub_812BD28: @ 812BD28
push {r4-r6,lr}
adds r5, r0, 0
lsls r5, 24
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r6, [r0]
lsrs r5, 23
adds r4, r6, 0
@@ -3021,7 +336,7 @@ sub_812BD70: @ 812BD70
adds r5, r0, 0
lsls r1, 16
lsrs r4, r1, 16
- ldr r7, =gUnknown_0203AB34
+ ldr r7, =sSlotMachine
ldr r0, [r7]
lsls r6, r5, 1
adds r0, 0x1C
@@ -3067,7 +382,7 @@ _0812BDC4:
thumb_func_start sub_812BDD4
sub_812BDD4: @ 812BDD4
push {r4,lr}
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r4, [r1]
lsls r0, 16
asrs r0, 16
@@ -3097,7 +412,7 @@ sub_812BE0C: @ 812BE0C
push {r4,r5,lr}
lsls r0, 16
lsrs r4, r0, 16
- ldr r5, =gUnknown_0203AB34
+ ldr r5, =sSlotMachine
ldr r0, [r5]
movs r1, 0x14
ldrsh r0, [r0, r1]
@@ -3134,8 +449,8 @@ _0812BE4E:
.pool
thumb_func_end sub_812BE0C
- thumb_func_start sub_812BE5C
-sub_812BE5C: @ 812BE5C
+ thumb_func_start sub_8102DA8
+sub_8102DA8: @ 812BE5C
push {r4-r6,lr}
movs r4, 0
ldr r5, =sub_812BF2C
@@ -3151,7 +466,7 @@ _0812BE64:
lsls r1, 3
adds r1, r6
strh r4, [r1, 0x26]
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x3A
adds r1, r4
@@ -3166,15 +481,15 @@ _0812BE64:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812BE5C
+ thumb_func_end sub_8102DA8
- thumb_func_start sub_812BEA4
-sub_812BEA4: @ 812BEA4
+ thumb_func_start sub_8102DEC
+sub_8102DEC: @ 812BEA4
push {r4,lr}
lsls r0, 24
lsrs r0, 24
ldr r4, =gTasks
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r2, [r1]
adds r2, 0x3A
adds r2, r0
@@ -3195,14 +510,14 @@ sub_812BEA4: @ 812BEA4
pop {r0}
bx r0
.pool
- thumb_func_end sub_812BEA4
+ thumb_func_end sub_8102DEC
- thumb_func_start sub_812BEDC
-sub_812BEDC: @ 812BEDC
+ thumb_func_start sub_8102E1C
+sub_8102E1C: @ 812BEDC
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x3A
adds r1, r0
@@ -3215,14 +530,14 @@ sub_812BEDC: @ 812BEDC
strh r1, [r0, 0x8]
bx lr
.pool
- thumb_func_end sub_812BEDC
+ thumb_func_end sub_8102E1C
- thumb_func_start sub_812BF04
-sub_812BF04: @ 812BF04
+ thumb_func_start sub_8102E40
+sub_8102E40: @ 812BF04
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x3A
adds r1, r0
@@ -3236,7 +551,7 @@ sub_812BF04: @ 812BF04
lsrs r0, 24
bx lr
.pool
- thumb_func_end sub_812BF04
+ thumb_func_end sub_8102E40
thumb_func_start sub_812BF2C
sub_812BF2C: @ 812BF2C
@@ -3278,7 +593,7 @@ sub_812BF68: @ 812BF68
ldrh r0, [r0, 0x26]
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
movs r2, 0x1A
ldrsh r1, [r1, r2]
@@ -3297,7 +612,7 @@ sub_812BF88: @ 812BF88
adds r0, 0x1
movs r2, 0
strh r0, [r4, 0x8]
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r3, [r0]
movs r0, 0x26
ldrsh r1, [r4, r0]
@@ -3333,7 +648,7 @@ sub_812BF88: @ 812BF88
cmp r0, 0
bne _0812BFF4
_0812BFDC:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
movs r0, 0
strb r0, [r1, 0x6]
@@ -3345,7 +660,7 @@ _0812BFDC:
ldr r0, [r0]
bl _call_via_r0
_0812BFF4:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
movs r2, 0x26
ldrsh r0, [r4, r2]
@@ -3370,7 +685,7 @@ sub_812C01C: @ 812C01C
mov r0, sp
movs r2, 0xA
bl memcpy
- ldr r7, =gUnknown_0203AB34
+ ldr r7, =sSlotMachine
ldr r5, [r7]
movs r1, 0x26
ldrsh r0, [r4, r1]
@@ -3427,7 +742,7 @@ _0812C0A0:
_0812C0A4:
cmp r2, 0
bne _0812C0D2
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
movs r6, 0x26
ldrsh r0, [r4, r6]
@@ -3461,7 +776,7 @@ _0812C0D2:
sub_812C0E0: @ 812C0E0
push {r4,lr}
adds r2, r0, 0
- ldr r4, =gUnknown_0203AB34
+ ldr r4, =sSlotMachine
ldr r1, [r4]
movs r3, 0x26
ldrsh r0, [r2, r3]
@@ -3508,10 +823,10 @@ _0812C12A:
thumb_func_start sub_812C138
sub_812C138: @ 812C138
push {r4,r5,lr}
- ldr r4, =gUnknown_0203AB34
+ ldr r4, =sSlotMachine
ldr r0, [r4]
ldrb r0, [r0, 0x4]
- bl sub_812B57C
+ bl sub_810250C
lsls r0, 24
lsrs r3, r0, 24
adds r5, r3, 0
@@ -3564,7 +879,7 @@ sub_812C184: @ 812C184
cmp r0, r5
bne _0812C1BC
_0812C1AC:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
strb r1, [r0, 0x7]
movs r0, 0x1
@@ -3627,7 +942,7 @@ _0812C212:
thumb_func_start sub_812C218
sub_812C218: @ 812C218
push {lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
ldrb r1, [r0, 0x4]
movs r0, 0xC2
@@ -3669,7 +984,7 @@ _0812C24C:
lsls r0, 24
cmp r0, 0
beq _0812C278
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
movs r0, 0x2
strh r0, [r1, 0x34]
@@ -3729,7 +1044,7 @@ _0812C2C2:
lsls r0, 24
cmp r0, 0
beq _0812C2E8
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
strh r7, [r0, 0x34]
strh r6, [r0, 0x2E]
@@ -3746,7 +1061,7 @@ _0812C2E8:
_0812C2F4:
movs r7, 0x1
adds r6, r5, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
mov r10, r0
_0812C2FC:
lsls r5, r7, 16
@@ -3838,7 +1153,7 @@ _0812C390:
sub_812C3A0: @ 812C3A0
push {lr}
ldr r1, =gUnknown_085A7514
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r2, 0x12
ldrsh r0, [r0, r2]
@@ -3857,7 +1172,7 @@ sub_812C3A0: @ 812C3A0
thumb_func_start sub_812C3C8
sub_812C3C8: @ 812C3C8
push {r4-r7,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r5, 0
ldrh r7, [r0, 0x34]
@@ -3871,7 +1186,7 @@ _0812C3D6:
asrs r1, 16
movs r0, 0x1
bl sub_812BC98
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
lsls r0, 24
lsrs r0, 24
@@ -3904,7 +1219,7 @@ sub_812C414: @ 812C414
lsls r0, 24
cmp r0, 0
beq _0812C476
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
movs r2, 0x34
ldrsh r0, [r1, r2]
@@ -3926,7 +1241,7 @@ _0812C43C:
asrs r1, 16
movs r0, 0x1
bl sub_812BC98
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
lsls r0, 24
lsrs r0, 24
@@ -3949,7 +1264,7 @@ _0812C472:
movs r0, 0x1
b _0812C4B2
_0812C476:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r1, 0x34
ldrsh r0, [r0, r1]
@@ -3965,7 +1280,7 @@ _0812C486:
asrs r1, 16
movs r0, 0x1
bl sub_812BC98
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
lsls r0, 24
lsrs r0, 24
@@ -3990,7 +1305,7 @@ _0812C4B2:
thumb_func_start sub_812C4BC
sub_812C4BC: @ 812C4BC
push {r4,lr}
- ldr r2, =gUnknown_0203AB34
+ ldr r2, =sSlotMachine
ldr r0, [r2]
ldrb r3, [r0, 0x7]
adds r4, r3, 0
@@ -4029,7 +1344,7 @@ sub_812C500: @ 812C500
push {r7}
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r5, 0
ldrh r1, [r0, 0x36]
@@ -4048,7 +1363,7 @@ _0812C518:
lsrs r0, 24
cmp r0, r7
bne _0812C544
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
mov r1, r8
strh r1, [r0, 0x38]
@@ -4079,7 +1394,7 @@ sub_812C55C: @ 812C55C
push {r7}
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r2, 0x34
ldrsh r1, [r0, r2]
@@ -4094,7 +1409,7 @@ sub_812C55C: @ 812C55C
b _0812C5D2
.pool
_0812C588:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
strh r5, [r0, 0x32]
mov r1, r8
@@ -4156,7 +1471,7 @@ _0812C5E8:
lsls r0, 24
cmp r0, 0
bne _0812C5E2
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
strh r5, [r0, 0x2E]
pop {r4,r5}
@@ -4193,7 +1508,7 @@ _0812C624:
sub_812C628: @ 812C628
push {lr}
ldr r1, =gUnknown_085A752C
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r2, 0x12
ldrsh r0, [r0, r2]
@@ -4211,7 +1526,7 @@ sub_812C628: @ 812C628
sub_812C64C: @ 812C64C
push {r4-r7,lr}
sub sp, 0x4
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r2, [r0]
movs r1, 0x34
ldrsh r0, [r2, r1]
@@ -4252,7 +1567,7 @@ _0812C68C:
lsrs r0, 24
cmp r1, r0
bne _0812C6B8
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
movs r0, 0x2
strh r0, [r1, 0x36]
@@ -4277,7 +1592,7 @@ _0812C6C4:
j5_08111E84: @ 812C6CC
push {r4-r7,lr}
sub sp, 0x4
- ldr r4, =gUnknown_0203AB34
+ ldr r4, =sSlotMachine
ldr r2, [r4]
ldrh r3, [r2, 0x34]
movs r1, 0x34
@@ -4344,7 +1659,7 @@ _0812C744:
sub_812C74C: @ 812C74C
push {r4-r7,lr}
sub sp, 0x4
- ldr r6, =gUnknown_0203AB34
+ ldr r6, =sSlotMachine
ldr r2, [r6]
ldrh r4, [r2, 0x34]
movs r0, 0x34
@@ -4362,7 +1677,7 @@ sub_812C74C: @ 812C74C
b _0812C84A
.pool
_0812C778:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r1, 0
strh r5, [r0, 0x36]
@@ -4426,7 +1741,7 @@ _0812C7C6:
ble _0812C7C6
movs r5, 0x1
mov r7, sp
- ldr r6, =gUnknown_0203AB34
+ ldr r6, =sSlotMachine
_0812C7F8:
ldr r0, [r6]
ldrh r1, [r0, 0x34]
@@ -4590,7 +1905,7 @@ _0812C8F8:
sub_812C8FC: @ 812C8FC
push {lr}
ldr r1, =gUnknown_085A7538
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
movs r2, 0x12
ldrsh r0, [r0, r2]
@@ -4608,7 +1923,7 @@ sub_812C8FC: @ 812C8FC
sub_812C920: @ 812C920
push {r4-r7,lr}
movs r6, 0
- ldr r7, =gUnknown_0203AB34
+ ldr r7, =sSlotMachine
ldr r0, [r7]
ldrh r1, [r0, 0x2E]
movs r4, 0x2
@@ -4714,7 +2029,7 @@ _0812C9DE:
cmp r5, r0
beq _0812C9D8
_0812C9F6:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
strh r6, [r0, 0x32]
pop {r4-r7}
@@ -4733,7 +2048,7 @@ sub_812CA08: @ 812CA08
sub sp, 0x4
movs r0, 0
str r0, [sp]
- ldr r4, =gUnknown_0203AB34
+ ldr r4, =sSlotMachine
ldr r2, [r4]
movs r5, 0x36
ldrsh r1, [r2, r5]
@@ -4785,7 +2100,7 @@ _0812CA7E:
asrs r5, r6, 16
cmp r5, 0x4
bgt _0812CAA4
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
ldrh r1, [r0, 0x36]
subs r1, r5
@@ -4800,7 +2115,7 @@ _0812CA7E:
lsrs r6, 16
str r6, [sp]
_0812CAA4:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
mov r9, r0
_0812CAA8:
movs r5, 0x1
@@ -4894,7 +2209,7 @@ _0812CB4A:
str r0, [sp]
b _0812CAA8
_0812CB60:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
mov r5, sp
ldrh r5, [r5]
@@ -4916,7 +2231,7 @@ sub_812CB80: @ 812CB80
mov r7, r8
push {r7}
bl sub_812CA08
- ldr r4, =gUnknown_0203AB34
+ ldr r4, =sSlotMachine
ldr r2, [r4]
movs r0, 0x36
ldrsh r1, [r2, r0]
@@ -4999,7 +2314,7 @@ _0812CC28:
cmp r0, 0x4
ble _0812CBF6
_0812CC34:
- ldr r7, =gUnknown_0203AB34
+ ldr r7, =sSlotMachine
_0812CC36:
ldr r0, [r7]
ldrh r0, [r0, 0x2E]
@@ -5059,7 +2374,7 @@ _0812CCA4:
b _0812CC36
.pool
_0812CCB4:
- ldr r7, =gUnknown_0203AB34
+ ldr r7, =sSlotMachine
_0812CCB6:
ldr r0, [r7]
ldrh r0, [r0, 0x2E]
@@ -5126,8 +2441,8 @@ _0812CD34:
bx r0
thumb_func_end sub_812CB80
- thumb_func_start sub_812CD40
-sub_812CD40: @ 812CD40
+ thumb_func_start sub_8103C14
+sub_8103C14: @ 812CD40
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
@@ -5149,7 +2464,7 @@ sub_812CD40: @ 812CD40
pop {r0}
bx r0
.pool
- thumb_func_end sub_812CD40
+ thumb_func_end sub_8103C14
thumb_func_start sub_812CD74
sub_812CD74: @ 812CD74
@@ -5290,8 +2605,8 @@ sub_812CE54: @ 812CE54
.pool
thumb_func_end sub_812CE54
- thumb_func_start sub_812CE7C
-sub_812CE7C: @ 812CE7C
+ thumb_func_start sub_8103D50
+sub_8103D50: @ 812CE7C
push {r4-r7,lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -5319,10 +2634,10 @@ _0812CEA8:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812CE7C
+ thumb_func_end sub_8103D50
- thumb_func_start sub_812CEB8
-sub_812CEB8: @ 812CEB8
+ thumb_func_start sub_8103D8C
+sub_8103D8C: @ 812CEB8
push {r4-r7,lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -5350,10 +2665,10 @@ _0812CEE4:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812CEB8
+ thumb_func_end sub_8103D8C
- thumb_func_start sub_812CEF4
-sub_812CEF4: @ 812CEF4
+ thumb_func_start sub_8103DC8
+sub_8103DC8: @ 812CEF4
push {r4,r5,lr}
movs r4, 0
ldr r5, =gSprites
@@ -5367,7 +2682,7 @@ _0812CEFA:
lsls r1, 2
adds r1, r5
strh r4, [r1, 0x2E]
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x44
adds r1, r4
@@ -5381,13 +2696,13 @@ _0812CEFA:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812CEF4
+ thumb_func_end sub_8103DC8
- thumb_func_start sub_812CF34
-sub_812CF34: @ 812CF34
+ thumb_func_start sub_8103E04
+sub_8103E04: @ 812CF34
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x44
adds r1, r0
@@ -5409,13 +2724,13 @@ sub_812CF34: @ 812CF34
strh r2, [r0, 0x3C]
bx lr
.pool
- thumb_func_end sub_812CF34
+ thumb_func_end sub_8103E04
thumb_func_start sub_812CF6C
sub_812CF6C: @ 812CF6C
push {r4,r5,lr}
movs r2, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r3, r0, 0
adds r3, 0x44
@@ -5456,7 +2771,7 @@ sub_812CFB8: @ 812CFB8
push {r4,lr}
movs r4, 0
_0812CFBC:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x44
adds r0, r4
@@ -5591,8 +2906,8 @@ _0812D0A6:
.pool
thumb_func_end sub_812D024
- thumb_func_start sub_812D0B0
-sub_812D0B0: @ 812D0B0
+ thumb_func_start sub_8103F70
+sub_8103F70: @ 812D0B0
push {r4,lr}
ldr r4, =sub_812D128
adds r0, r4, 0
@@ -5612,10 +2927,10 @@ sub_812D0B0: @ 812D0B0
pop {r0}
bx r0
.pool
- thumb_func_end sub_812D0B0
+ thumb_func_end sub_8103F70
- thumb_func_start sub_812D0E0
-sub_812D0E0: @ 812D0E0
+ thumb_func_start sub_8103FA0
+sub_8103FA0: @ 812D0E0
push {lr}
ldr r0, =sub_812D128
bl FindTaskIdByFunc
@@ -5646,7 +2961,7 @@ _0812D120:
pop {r1}
bx r1
.pool
- thumb_func_end sub_812D0E0
+ thumb_func_end sub_8103FA0
thumb_func_start sub_812D128
sub_812D128: @ 812D128
@@ -5697,25 +3012,25 @@ _0812D166:
.pool
thumb_func_end sub_812D128
- thumb_func_start sub_812D188
-sub_812D188: @ 812D188
+ thumb_func_start sub_8104048
+sub_8104048: @ 812D188
push {lr}
ldr r0, =sub_812D230
movs r1, 0x8
bl CreateTask
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x3E
strb r0, [r1]
pop {r0}
bx r0
.pool
- thumb_func_end sub_812D188
+ thumb_func_end sub_8104048
- thumb_func_start sub_812D1A8
-sub_812D1A8: @ 812D1A8
+ thumb_func_start sub_8104064
+sub_8104064: @ 812D1A8
push {r4,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3E
ldrb r0, [r0]
@@ -5736,12 +3051,12 @@ sub_812D1A8: @ 812D1A8
pop {r0}
bx r0
.pool
- thumb_func_end sub_812D1A8
+ thumb_func_end sub_8104064
thumb_func_start sub_812D1DC
sub_812D1DC: @ 812D1DC
push {r4,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3E
ldrb r0, [r0]
@@ -5762,10 +3077,10 @@ sub_812D1DC: @ 812D1DC
.pool
thumb_func_end sub_812D1DC
- thumb_func_start sub_812D20C
-sub_812D20C: @ 812D20C
+ thumb_func_start sub_81040C8
+sub_81040C8: @ 812D20C
ldr r2, =gTasks
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3E
ldrb r1, [r0]
@@ -5778,7 +3093,7 @@ sub_812D20C: @ 812D20C
lsrs r0, 24
bx lr
.pool
- thumb_func_end sub_812D20C
+ thumb_func_end sub_81040C8
thumb_func_start sub_812D230
sub_812D230: @ 812D230
@@ -5987,8 +3302,8 @@ _0812D39E:
bx r0
thumb_func_end sub_812D394
- thumb_func_start sub_812D3B4
-sub_812D3B4: @ 812D3B4
+ thumb_func_start sub_810423C
+sub_810423C: @ 812D3B4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
@@ -6095,7 +3410,7 @@ _0812D448:
ble _0812D428
_0812D484:
ldr r2, =gTasks
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3E
ldrb r1, [r0]
@@ -6108,10 +3423,10 @@ _0812D484:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812D3B4
+ thumb_func_end sub_810423C
- thumb_func_start sub_812D4AC
-sub_812D4AC: @ 812D4AC
+ thumb_func_start sub_810430C
+sub_810430C: @ 812D4AC
push {r4,lr}
ldr r4, =sub_812D4EC
adds r0, r4, 0
@@ -6124,10 +3439,10 @@ sub_812D4AC: @ 812D4AC
pop {r0}
bx r0
.pool
- thumb_func_end sub_812D4AC
+ thumb_func_end sub_810430C
- thumb_func_start sub_812D4CC
-sub_812D4CC: @ 812D4CC
+ thumb_func_start sub_810432C
+sub_810432C: @ 812D4CC
push {lr}
ldr r0, =sub_812D4EC
bl FindTaskIdByFunc
@@ -6143,7 +3458,7 @@ _0812D4E4:
_0812D4E6:
pop {r1}
bx r1
- thumb_func_end sub_812D4CC
+ thumb_func_end sub_810432C
thumb_func_start sub_812D4EC
sub_812D4EC: @ 812D4EC
@@ -6171,7 +3486,7 @@ sub_812D4EC: @ 812D4EC
thumb_func_start sub_812D51C
sub_812D51C: @ 812D51C
push {lr}
- ldr r3, =gUnknown_0203AB34
+ ldr r3, =sSlotMachine
ldr r1, [r3]
movs r2, 0
strb r2, [r1, 0xA]
@@ -6205,7 +3520,7 @@ sub_812D51C: @ 812D51C
bl sub_812E650
bl sub_812E70C
bl sub_812E7CC
- bl sub_812B700
+ bl sub_8102680
bl StopMapMusic
movs r0, 0xC4
lsls r0, 1
@@ -6343,7 +3658,7 @@ sub_812D63C: @ 812D63C
movs r1, 0
ldrsh r0, [r6, r1]
bl sub_812EBAC
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3F
ldrb r1, [r0]
@@ -6400,7 +3715,7 @@ sub_812D6EC: @ 812D6EC
strh r0, [r4, 0x12]
movs r0, 0x2
bl sub_812EBAC
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3F
ldrb r1, [r0]
@@ -6467,7 +3782,7 @@ sub_812D774: @ 812D774
ble _0812D7DC
movs r0, 0
strh r0, [r4, 0x12]
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
ldrb r0, [r1, 0x5]
cmp r0, 0
@@ -6491,7 +3806,7 @@ _0812D7B8:
b _0812D7D4
_0812D7C6:
ldrh r0, [r4, 0x14]
- bl sub_812B760
+ bl sub_81026DC
lsls r0, 24
cmp r0, 0
beq _0812D7D6
@@ -6512,7 +3827,7 @@ _0812D7DC:
sub_812D7E4: @ 812D7E4
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gUnknown_0203AB34
+ ldr r6, =sSlotMachine
ldr r0, [r6]
movs r1, 0x14
ldrsh r0, [r0, r1]
@@ -6559,7 +3874,7 @@ _0812D842:
bne _0812D866
movs r0, 0x1
bl sub_812BCE8
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
lsls r0, 24
lsrs r0, 24
@@ -6595,7 +3910,7 @@ sub_812D870: @ 812D870
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r5, =gUnknown_0203AB34
+ ldr r5, =sSlotMachine
ldr r1, [r5]
ldrb r0, [r1, 0x5]
cmp r0, 0
@@ -6671,7 +3986,7 @@ sub_812D920: @ 812D920
cmp r0, 0
bne _0812D948
_0812D938:
- bl sub_812D20C
+ bl sub_81040C8
lsls r0, 24
cmp r0, 0
bne _0812D948
@@ -6731,7 +4046,7 @@ _0812D99E:
sub_812D9A4: @ 812D9A4
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gUnknown_0203AB34
+ ldr r4, =sSlotMachine
ldr r0, [r4]
movs r6, 0
strb r6, [r0, 0xB]
@@ -6766,7 +4081,7 @@ sub_812D9A4: @ 812D9A4
.pool
_0812DA04:
movs r0, 0x4
- bl sub_812DEE4
+ bl sub_8104CAC
bl dp15_jump_random_unknown
strh r0, [r5, 0xA]
strh r6, [r5, 0xC]
@@ -6784,7 +4099,7 @@ _0812DA1A:
sub_812DA20: @ 812DA20
push {r4,r5,lr}
adds r4, r0, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r5, [r0]
movs r0, 0x1A
ldrsh r1, [r5, r0]
@@ -6825,7 +4140,7 @@ _0812DA66:
thumb_func_start sub_812DA6C
sub_812DA6C: @ 812DA6C
push {lr}
- bl sub_812E054
+ bl sub_8104E18
lsls r0, 24
cmp r0, 0
beq _0812DA86
@@ -6849,7 +4164,7 @@ sub_812DA90: @ 812DA90
bl sub_812EBCC
bl sub_812EC20
ldr r5, =gSprites
- ldr r3, =gUnknown_0203AB34
+ ldr r3, =sSlotMachine
ldr r0, [r3]
adds r0, 0x4E
ldrb r1, [r0]
@@ -6929,7 +4244,7 @@ _0812DB3C:
bl sub_812E5A8
bl sub_812EDC0
ldr r2, =gSprites
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x4E
ldrb r1, [r0]
@@ -6988,7 +4303,7 @@ sub_812DBBC: @ 812DBBC
movs r0, 0x14
movs r1, 0
bl SetGpuReg
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x60
ldrh r0, [r0]
@@ -7071,8 +4386,8 @@ _0812DC58:
.pool
thumb_func_end sub_812DC50
- thumb_func_start sub_812DC80
-sub_812DC80: @ 812DC80
+ thumb_func_start sub_8104AB8
+sub_8104AB8: @ 812DC80
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
@@ -7094,10 +4409,10 @@ sub_812DC80: @ 812DC80
pop {r0}
bx r0
.pool
- thumb_func_end sub_812DC80
+ thumb_func_end sub_8104AB8
- thumb_func_start sub_812DCB4
-sub_812DCB4: @ 812DCB4
+ thumb_func_start sub_8104AEC
+sub_8104AEC: @ 812DCB4
push {lr}
ldr r0, =sub_812DCD4
bl FindTaskIdByFunc
@@ -7113,7 +4428,7 @@ _0812DCCC:
_0812DCCE:
pop {r1}
bx r1
- thumb_func_end sub_812DCB4
+ thumb_func_end sub_8104AEC
thumb_func_start sub_812DCD4
sub_812DCD4: @ 812DCD4
@@ -7182,7 +4497,7 @@ _0812DD3E:
sub_812DD48: @ 812DD48
push {r4,lr}
adds r4, r0, 0
- bl sub_812DFDC
+ bl sub_8104DA4
bl sub_812FAF4
ldr r0, =gUnknown_085A7444
bl AddWindow
@@ -7295,7 +4610,7 @@ sub_812DE30: @ 812DE30
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4, 0xA]
- bl sub_812DEE4
+ bl sub_8104CAC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -7309,10 +4624,10 @@ sub_812DE48: @ 812DE48
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
ldrb r0, [r0, 0x2]
- bl sub_812D3B4
+ bl sub_810423C
movs r0, 0x1
negs r0, r0
movs r1, 0
@@ -7343,15 +4658,15 @@ sub_812DE7C: @ 812DE7C
.pool
thumb_func_end sub_812DE7C
- thumb_func_start sub_812DE94
-sub_812DE94: @ 812DE94
+ thumb_func_start sub_8104C5C
+sub_8104C5C: @ 812DE94
push {lr}
ldr r0, =sub_812E0B0
movs r1, 0x3
bl CreateTask
lsls r0, 24
lsrs r1, r0, 24
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3D
strb r1, [r0]
@@ -7378,18 +4693,18 @@ _0812DEC0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812DE94
+ thumb_func_end sub_8104C5C
- thumb_func_start sub_812DEE4
-sub_812DEE4: @ 812DEE4
+ thumb_func_start sub_8104CAC
+sub_8104CAC: @ 812DEE4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl sub_812DFDC
- ldr r0, =gUnknown_0203AB34
+ bl sub_8104DA4
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3D
ldrb r1, [r0]
@@ -7443,7 +4758,7 @@ _0812DF52:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812DEE4
+ thumb_func_end sub_8104CAC
thumb_func_start sub_812DF68
sub_812DF68: @ 812DF68
@@ -7455,7 +4770,7 @@ sub_812DF68: @ 812DF68
ldr r4, [sp, 0x1C]
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3D
ldrb r1, [r0]
@@ -7505,10 +4820,10 @@ _0812DFCE:
bx r0
thumb_func_end sub_812DF68
- thumb_func_start sub_812DFDC
-sub_812DFDC: @ 812DFDC
+ thumb_func_start sub_8104DA4
+sub_8104DA4: @ 812DFDC
push {r4-r6,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3D
ldrb r1, [r0]
@@ -7558,12 +4873,12 @@ _0812E02E:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812DFDC
+ thumb_func_end sub_8104DA4
- thumb_func_start sub_812E054
-sub_812E054: @ 812E054
+ thumb_func_start sub_8104E18
+sub_8104E18: @ 812E054
push {r4,r5,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3D
ldrb r1, [r0]
@@ -7605,7 +4920,7 @@ _0812E0A8:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_812E054
+ thumb_func_end sub_8104E18
thumb_func_start sub_812E0B0
sub_812E0B0: @ 812E0B0
@@ -7635,8 +4950,8 @@ nullsub_51: @ 812E0E0
bx lr
thumb_func_end nullsub_51
- thumb_func_start sub_812E0E4
-sub_812E0E4: @ 812E0E4
+ thumb_func_start sub_8104EA8
+sub_8104EA8: @ 812E0E4
push {r4-r7,lr}
movs r6, 0
movs r0, 0x30
@@ -7688,13 +5003,13 @@ _0812E0F0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812E0E4
+ thumb_func_end sub_8104EA8
thumb_func_start sub_812E154
sub_812E154: @ 812E154
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r4, [r0]
movs r1, 0x2E
ldrsh r0, [r5, r1]
@@ -7731,7 +5046,7 @@ sub_812E154: @ 812E154
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
- bl sub_812BC44
+ bl GetTagOfReelSymbolOnScreenAtPos
lsls r0, 24
lsrs r0, 24
bl GetSpriteTileStartByTag
@@ -7746,8 +5061,8 @@ sub_812E154: @ 812E154
.pool
thumb_func_end sub_812E154
- thumb_func_start sub_812E1C8
-sub_812E1C8: @ 812E1C8
+ thumb_func_start sub_8104F8C
+sub_8104F8C: @ 812E1C8
push {r4-r6,lr}
movs r4, 0xCB
movs r5, 0x1
@@ -7799,7 +5114,7 @@ _0812E1FE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_812E1C8
+ thumb_func_end sub_8104F8C
thumb_func_start sub_812E230
sub_812E230: @ 812E230
@@ -7862,7 +5177,7 @@ sub_812E230: @ 812E230
sub_812E2A8: @ 812E2A8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
ldrh r2, [r1, 0xC]
movs r3, 0x2E
@@ -7903,8 +5218,8 @@ _0812E2F6:
.pool
thumb_func_end sub_812E2A8
- thumb_func_start sub_812E300
-sub_812E300: @ 812E300
+ thumb_func_start sub_81050C4
+sub_81050C4: @ 812E300
push {lr}
ldr r0, =gUnknown_085A7D10
movs r1, 0x58
@@ -7928,7 +5243,7 @@ sub_812E300: @ 812E300
pop {r0}
bx r0
.pool
- thumb_func_end sub_812E300
+ thumb_func_end sub_81050C4
thumb_func_start sub_812E33C
sub_812E33C: @ 812E33C
@@ -7999,7 +5314,7 @@ _0812E350:
movs r3, 0x2
orrs r1, r3
strb r1, [r2]
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x3F
strb r0, [r1]
@@ -8013,7 +5328,7 @@ _0812E350:
thumb_func_start sub_812E3E8
sub_812E3E8: @ 812E3E8
push {r4,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x3F
ldrb r1, [r0]
@@ -8148,7 +5463,7 @@ _0812E490:
ldr r1, =gUnknown_085A7FE0
adds r0, r2, 0
bl SetSubspriteTables
- ldr r5, =gUnknown_0203AB34
+ ldr r5, =sSlotMachine
ldr r0, [r5]
adds r0, 0x49
strb r4, [r0]
@@ -8280,7 +5595,7 @@ _0812E5BC:
strb r1, [r3]
ldr r1, =gUnknown_085A8010
bl SetSubspriteTables
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x42
strb r4, [r0]
@@ -8327,7 +5642,7 @@ _0812E656:
mov r2, r12
strb r1, [r2]
strh r5, [r3, 0x3C]
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x4B
adds r1, r4
@@ -8352,7 +5667,7 @@ _0812E656:
sub_812E6C4: @ 812E6C4
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r1, [r0]
ldrh r0, [r4, 0x3C]
ldrh r1, [r1, 0x14]
@@ -8426,7 +5741,7 @@ sub_812E70C: @ 812E70C
adds r0, r2, 0
mov r1, r9
bl SetSubspriteTables
- ldr r6, =gUnknown_0203AB34
+ ldr r6, =sSlotMachine
ldr r0, [r6]
adds r0, 0x4E
strb r4, [r0]
@@ -8502,7 +5817,7 @@ sub_812E7CC: @ 812E7CC
strb r1, [r0, 0x5]
ldr r1, =gUnknown_085A803C
bl SetSubspriteTables
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x40
strb r4, [r0]
@@ -8515,7 +5830,7 @@ sub_812E7CC: @ 812E7CC
thumb_func_start sub_812E82C
sub_812E82C: @ 812E82C
push {r4,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x40
ldrb r1, [r0]
@@ -8527,7 +5842,7 @@ sub_812E82C: @ 812E82C
bl DestroySprite
movs r4, 0
_0812E846:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x49
adds r0, r4
@@ -8561,7 +5876,7 @@ _0812E878:
_0812E888:
movs r4, 0
_0812E88A:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x4B
adds r0, r4
@@ -8588,7 +5903,7 @@ sub_812E8C4: @ 812E8C4
push {r4,lr}
movs r4, 0
_0812E8C8:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x4E
adds r0, r4
@@ -8613,7 +5928,7 @@ _0812E8C8:
thumb_func_start sub_812E8F8
sub_812E8F8: @ 812E8F8
push {r4,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x42
ldrb r1, [r0]
@@ -8674,7 +5989,7 @@ sub_812E934: @ 812E934
movs r2, 0x1
orrs r1, r2
strb r1, [r5]
- ldr r6, =gUnknown_0203AB34
+ ldr r6, =sSlotMachine
ldr r1, [r6]
adds r1, 0x50
strb r0, [r1]
@@ -8780,7 +6095,7 @@ sub_812EA44: @ 812EA44
lsls r0, 16
lsrs r0, 16
ldr r4, =gSprites
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r3, [r1]
adds r1, r3, 0
adds r1, 0x50
@@ -8808,7 +6123,7 @@ sub_812EA7C: @ 812EA7C
push {r4,lr}
movs r4, 0
_0812EA80:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x50
adds r0, r4
@@ -8866,7 +6181,7 @@ sub_812EAB0: @ 812EAB0
strh r1, [r2, 0x3A]
movs r1, 0x8
strh r1, [r2, 0x3C]
- ldr r5, =gUnknown_0203AB34
+ ldr r5, =sSlotMachine
ldr r1, [r5]
adds r1, 0x52
strb r0, [r1]
@@ -8953,7 +6268,7 @@ _0812EB9A:
thumb_func_start sub_812EBAC
sub_812EBAC: @ 812EBAC
ldr r3, =gSprites
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x52
ldrb r2, [r1]
@@ -8982,7 +6297,7 @@ sub_812EBCC: @ 812EBCC
bl MultiplyInvertedPaletteRGBComponents
movs r4, 0
_0812EBEA:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x52
adds r0, r4
@@ -9026,7 +6341,7 @@ sub_812EC20: @ 812EC20
movs r3, 0x4
orrs r2, r3
strb r2, [r1, 0x5]
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x41
strb r0, [r1]
@@ -9047,7 +6362,7 @@ sub_812EC64: @ 812EC64
thumb_func_start sub_812EC70
sub_812EC70: @ 812EC70
push {lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x41
ldrb r1, [r0]
@@ -9109,7 +6424,7 @@ _0812ECA4:
add r1, sp
ldrh r1, [r1]
strh r1, [r3, 0x2E]
- ldr r1, =gUnknown_0203AB34
+ ldr r1, =sSlotMachine
ldr r1, [r1]
adds r1, 0x54
adds r1, r4
@@ -9188,7 +6503,7 @@ sub_812ED8C: @ 812ED8C
push {r4,lr}
movs r4, 0
_0812ED90:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x54
adds r0, r4
@@ -9238,7 +6553,7 @@ sub_812EDC0: @ 812EDC0
orrs r1, r2
strb r1, [r0, 0x1]
bl InitSpriteAffineAnim
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x43
strb r4, [r0]
@@ -9331,7 +6646,7 @@ _0812EE90:
thumb_func_start sub_812EEA8
sub_812EEA8: @ 812EEA8
ldr r2, =gSprites
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x43
ldrb r1, [r0]
@@ -9349,7 +6664,7 @@ sub_812EEA8: @ 812EEA8
thumb_func_start sub_812EECC
sub_812EECC: @ 812EECC
push {r4,lr}
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
adds r0, 0x43
ldrb r0, [r0]
@@ -9817,7 +7132,7 @@ _0812F238:
.4byte _0812F2AC
.4byte _0812F2C2
_0812F250:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r0, [r0]
ldrb r1, [r0, 0xA]
subs r1, 0x1
@@ -10378,7 +7693,7 @@ _0812F660:
beq _0812F71C
b _0812F76C
_0812F66A:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r2, [r0]
adds r1, r2, 0
adds r1, 0x5C
@@ -10422,7 +7737,7 @@ _0812F6B0:
movs r0, 0xD0
strh r0, [r5, 0x34]
_0812F6BC:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r2, [r0]
ldrh r0, [r5, 0x32]
lsls r0, 8
@@ -10438,7 +7753,7 @@ _0812F6BC:
b _0812F75E
.pool
_0812F6E0:
- ldr r6, =gUnknown_0203AB34
+ ldr r6, =sSlotMachine
ldr r0, [r6]
movs r1, 0x12
ldrsh r0, [r0, r1]
@@ -10490,7 +7805,7 @@ _0812F738:
movs r0, 0xD0
strh r0, [r5, 0x34]
_0812F744:
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r2, [r0]
ldrh r0, [r5, 0x32]
lsls r0, 8
@@ -10559,7 +7874,7 @@ sub_812F794: @ 812F794
thumb_func_start sub_812F7C0
sub_812F7C0: @ 812F7C0
- ldr r0, =gUnknown_0203AB34
+ ldr r0, =sSlotMachine
ldr r2, [r0]
adds r1, r2, 0
adds r1, 0x58
@@ -10955,8 +8270,8 @@ sub_812FAF4: @ 812FAF4
.pool
thumb_func_end sub_812FAF4
- thumb_func_start sub_812FB14
-sub_812FB14: @ 812FB14
+ thumb_func_start SlotMachineSetup_9_0
+SlotMachineSetup_9_0: @ 812FB14
ldr r1, =gUnknown_03001188
ldr r0, =gUnknown_0203AAF4
ldr r0, [r0]
@@ -11015,10 +8330,10 @@ sub_812FB14: @ 812FB14
str r0, [r1, 0x64]
bx lr
.pool
- thumb_func_end sub_812FB14
+ thumb_func_end SlotMachineSetup_9_0
- thumb_func_start sub_812FBC4
-sub_812FBC4: @ 812FBC4
+ thumb_func_start SlotMachineSetup_8_0
+SlotMachineSetup_8_0: @ 812FBC4
push {r4-r6,lr}
mov r6, r8
push {r6}
@@ -11218,6 +8533,6 @@ sub_812FBC4: @ 812FBC4
pop {r0}
bx r0
.pool
- thumb_func_end sub_812FBC4
+ thumb_func_end SlotMachineSetup_8_0
.align 2, 0 @ Don't pad with nop.
diff --git a/common_syms/contest.txt b/common_syms/contest.txt
new file mode 100644
index 000000000..6a519fb46
--- /dev/null
+++ b/common_syms/contest.txt
@@ -0,0 +1 @@
+gContestRngValue
diff --git a/data/contest.s b/data/contest.s
index 357a95d1d..eaf3f8c95 100644
--- a/data/contest.s
+++ b/data/contest.s
@@ -352,7 +352,7 @@ gUnknown_08587FA4:: @ 8587FA4
.align 2
-gUnknown_085880A4:: @ 85880A4
+gContestOpponents:: @ 85880A4
.include "data/contest_opponents.inc"
gUnknown_085898A4:: @ 85898A4
diff --git a/data/event_scripts.s b/data/event_scripts.s
index f28707fbb..56658a994 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1802,7 +1802,7 @@ EventScript_271E0E:: @ 8271E0E
checkflag FLAG_SYS_PC_LANETTE
call_if 1, EventScript_271E3E
msgbox gUnknown_082726A3, 4
- special sub_80C7578
+ special ShowPokemonStorageSystem
waitstate
goto EventScript_271DAC
end
diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s
index c2e0d729d..cc3ff2447 100644
--- a/data/field_player_avatar.s
+++ b/data/field_player_avatar.s
@@ -6,63 +6,6 @@
.section .rodata
.align 2, 0
-
-gUnknown_084973FC:: @ 84973FC
- .4byte MetatileBehavior_IsTrickHouseSlipperyFloor
- .4byte MetatileBehavior_IsIce_2
- .4byte MetatileBehavior_IsWalkSouth
- .4byte MetatileBehavior_IsWalkNorth
- .4byte MetatileBehavior_IsWalkWest
- .4byte MetatileBehavior_IsWalkEast
- .4byte MetatileBehavior_IsSouthwardCurrent
- .4byte MetatileBehavior_IsNorthwardCurrent
- .4byte MetatileBehavior_IsWestwardCurrent
- .4byte MetatileBehavior_IsEastwardCurrent
- .4byte MetatileBehavior_IsSlideSouth
- .4byte MetatileBehavior_IsSlideNorth
- .4byte MetatileBehavior_IsSlideWest
- .4byte MetatileBehavior_IsSlideEast
- .4byte MetatileBehavior_IsWaterfall
- .4byte MetatileBehavior_IsSecretBaseJumpMat
- .4byte MetatileBehavior_IsSecretBaseSpinMat
- .4byte MetatileBehavior_IsMuddySlope
-
-gUnknown_08497444:: @ 8497444
- .4byte ForcedMovement_None
- .4byte ForcedMovement_Slip
- .4byte ForcedMovement_Slip
- .4byte ForcedMovement_WalkSouth
- .4byte ForcedMovement_WalkNorth
- .4byte ForcedMovement_WalkWest
- .4byte ForcedMovement_WalkEast
- .4byte ForcedMovement_PushedSouthByCurrent
- .4byte ForcedMovement_PushedNorthByCurrent
- .4byte ForcedMovement_PushedWestByCurrent
- .4byte ForcedMovement_PushedEastByCurrent
- .4byte ForcedMovement_SlideSouth
- .4byte ForcedMovement_SlideNorth
- .4byte ForcedMovement_SlideWest
- .4byte ForcedMovement_SlideEast
- .4byte ForcedMovement_PushedSouthByCurrent
- .4byte ForcedMovement_0xBB
- .4byte ForcedMovement_0xBC
- .4byte ForcedMovement_MuddySlope
-
-gUnknown_08497490:: @ 8497490
- .4byte PlayerNotOnBikeNotMoving
- .4byte PlayerNotOnBikeTurningInPlace
- .4byte PlayerNotOnBikeMoving
-
-gUnknown_0849749C:: @ 849749C
- .4byte MetatileBehavior_IsBumpySlope
- .4byte MetatileBehavior_IsIsolatedVerticalRail
- .4byte MetatileBehavior_IsIsolatedHorizontalRail
- .4byte MetatileBehavior_IsVerticalRail
- .4byte MetatileBehavior_IsHorizontalRail
-
-gUnknown_084974B0:: @ 84974B0
- .byte 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00
-
gUnknown_084974B8:: @ 84974B8
.4byte PlayerAvatarTransition_Normal
.4byte PlayerAvatarTransition_MachBike
@@ -158,4 +101,3 @@ gUnknown_084975B0:: @ 84975B0
gUnknown_084975BC:: @ 84975BC
.byte 0x01, 0x03, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00
-
diff --git a/data/graphics.s b/data/graphics.s
index fdfa76343..01e8c3b2c 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -1241,11 +1241,11 @@ gUnknown_08C17980:: @ 8C17980
.incbin "graphics/unknown/unknown_C17980.bin.lz"
.align 2
-gUnknown_08C17AB0:: @ 8C17AB0
+gContestMiscGfx:: @ 8C17AB0
.incbin "graphics/contest/misc.4bpp.lz"
.align 2
-gUnknown_08C1850C:: @ 8C1850C
+gContestAudienceGfx:: @ 8C1850C
.incbin "graphics/contest/audience.4bpp.lz"
.align 2
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index f05613b00..b859133a6 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -4,18 +4,6 @@
.section .rodata
.align 2
-gUnknown_0857173C:: @ 857173C
- .incbin "graphics/unknown/unknown_57173C.gbapal"
-
- .align 2
-gUnknown_0857175C:: @ 857175C
- .incbin "graphics/pokemon_storage/box_selection_popup_center.4bpp"
-
- .align 2
-gUnknown_08571F5C:: @ 8571F5C
- .incbin "graphics/pokemon_storage/box_selection_popup_sides.4bpp"
-
- .align 2
gUnknown_085720DC:: @ 85720DC
.incbin "graphics/pokemon_storage/scrolling_bg.4bpp.lz"
diff --git a/data/slot_machine.s b/data/slot_machine.s
index b704cdb7a..0896d6348 100644
--- a/data/slot_machine.s
+++ b/data/slot_machine.s
@@ -20,36 +20,36 @@ gUnknown_085A7444:: @ 85A7444
gUnknown_085A744C:: @ 85A744C
.byte 3, 1, 2, 0
-gUnknown_085A7450:: @ 85A7450
- .4byte sub_812AB04
- .4byte sub_812AB38
- .4byte sub_812AB60
- .4byte sub_812ABA8
- .4byte sub_812ABC8
- .4byte sub_812ABF8
- .4byte sub_812ACF4
- .4byte sub_812AD34
- .4byte sub_812AD60
- .4byte sub_812AD80
- .4byte sub_812ADF4
- .4byte sub_812AE24
- .4byte sub_812AE4C
- .4byte sub_812AE88
- .4byte sub_812AEC4
- .4byte sub_812AFFC
- .4byte sub_812B01C
- .4byte sub_812B094
- .4byte sub_812B0D8
- .4byte sub_812B108
- .4byte sub_812B130
- .4byte sub_812B158
- .4byte sub_812B1B0
- .4byte sub_812B214
- .4byte sub_812B254
- .4byte sub_812B280
- .4byte sub_812B2C0
- .4byte sub_812B2EC
- .4byte sub_812B32C
+gUnknown_083ECAAC:: @ 85A7450
+ .4byte sub_8101D5C
+ .4byte sub_8101D8C
+ .4byte sub_8101DB0
+ .4byte sub_8101DF4
+ .4byte sub_8101E10
+ .4byte sub_8101E3C
+ .4byte sub_8101F44
+ .4byte sub_8101F60
+ .4byte sub_8101F88
+ .4byte sub_8101FA4
+ .4byte sub_8102008
+ .4byte sub_8102034
+ .4byte sub_8102058
+ .4byte sub_8102090
+ .4byte sub_81020C8
+ .4byte sub_81021E0
+ .4byte sub_81021FC
+ .4byte sub_8102264
+ .4byte sub_81022A0
+ .4byte sub_81022CC
+ .4byte sub_81022F0
+ .4byte sub_8102318
+ .4byte sub_8102344
+ .4byte sub_810239C
+ .4byte sub_81023B8
+ .4byte sub_81023E0_
+ .4byte sub_81023FC
+ .4byte sub_8102424
+ .4byte sub_8102460
gUnknown_085A74C4:: @ 85A74C4
.4byte sub_812BB34
@@ -203,10 +203,10 @@ gUnknown_085A766E:: @ 85A766E
gUnknown_085A76AD:: @ 85A76AD
.byte 1, 0, 5, 4, 3, 2, 0
-gUnknown_085A76B4:: @ 85A76B4
+gUnknown_083ECCF8:: @ 85A76B4
.2byte 0, 6, 0, 10, 0, 2
-gUnknown_085A76C0:: @ 85A76C0
+gUnknown_083ECD04:: @ 85A76C0
.byte 1, 1, 12
.byte 1, 1, 14
.byte 2, 2, 14
@@ -214,19 +214,19 @@ gUnknown_085A76C0:: @ 85A76C0
.byte 2, 3, 16
.byte 3, 3, 16
-gUnknown_085A76D2:: @ 85A76D2
+gUnknown_083ECD16:: @ 85A76D2
.byte 0x19, 0x19, 0x1E, 0x28, 0x28, 0x32
.byte 0x19, 0x19, 0x1E, 0x1E, 0x23, 0x23
.byte 0x19, 0x19, 0x1E, 0x19, 0x19, 0x1E
-gUnknown_085A76E4:: @ 85A76E4
+gUnknown_083ECD28:: @ 85A76E4
.byte 0x14, 0x19, 0x19, 0x14, 0x19, 0x19
.byte 0xC, 0xF, 0xF, 0x12, 0x13, 0x16
.byte 0x19, 0x19, 0x19, 0x1E, 0x1E, 0x28
.byte 0x19, 0x19, 0x14, 0x14, 0xF, 0xF
.byte 0x28, 0x28, 0x23, 0x23, 0x28, 0x28
-gUnknown_085A7702:: @ 85A7702
+gUnknown_083ECD46:: @ 85A7702
.byte 0xF3, 0xF3, 0xF3, 0x50, 0x50, 0x50, 0x50, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x5, 0x5, 0x5, 0x5
.byte 0x5, 0x5, 0x5, 0x96, 0x96, 0x96, 0x96, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x64, 0x64, 0x64, 0x5
.byte 0x4, 0x4, 0x4, 0x14, 0x14, 0x14, 0x14, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x64, 0x64, 0x64, 0x28
@@ -234,7 +234,7 @@ gUnknown_085A7702:: @ 85A7702
.byte 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x5, 0x64
.byte 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x6
-gUnknown_085A7768:: @ 85A7768
+gUnknown_083ECDAC:: @ 85A7768
.byte 0xF3, 0xF3, 0xF3, 0xC8, 0xC8, 0xC8, 0xC8, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x46, 0x46, 0x46, 0x05
.byte 0x05, 0x05, 0x05, 0x19, 0x19, 0x19, 0x19, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x02, 0x06
.byte 0x04, 0x04, 0x04, 0x19, 0x19, 0x19, 0x19, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x28, 0x28, 0x28, 0x23
@@ -242,45 +242,45 @@ gUnknown_085A7768:: @ 85A7768
.byte 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x28, 0x28, 0x28, 0x64
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x3C
-gUnknown_085A77CE:: @ 85A77CE
+gUnknown_083ECE12:: @ 85A77CE
.2byte 0x80, 0xAF, 0xC8, 0xE1, 0x100
-gUnknown_085A77D8:: @ 85A77D8
+gUnknown_083ECE1C:: @ 85A77D8
.byte 10, 0, 5, 0
.byte 10, 0, 10, 0
.byte 10, 0, 15, 0
.byte 10, 0, 25, 0
.byte 10, 0, 35, 0
-gUnknown_085A77EC:: @ 85A77EC
+gUnknown_083ECE30:: @ 85A77EC
.byte 0, 0
.byte 5, 0
.byte 10, 0
.byte 15, 0
.byte 20, 0
-gUnknown_085A77F6:: @ 85A77F6
+gUnknown_083ECE3A:: @ 85A77F6
.byte 6, 4, 3, 2, 5, 0, 0, 0
-gUnknown_085A77FE:: @ 85A77FE
+gUnknown_083ECE42:: @ 85A77FE
.byte 0x80, 0
.byte 0x20, 0
.byte 0x40, 0
-gUnknown_085A7804:: @ 85A7804
+gUnknown_083ECE48:: @ 85A7804
.byte 16, 0
.byte 8, 0
.byte 4, 0
.byte 2, 0
.byte 1, 0
-gUnknown_085A780E:: @ 85A780E
+sSym2Match:: @ 85A780E
.byte 7, 8, 4, 3, 0, 5, 2, 0
-gUnknown_085A7816:: @ 85A7816
+sSlotMatchFlags:: @ 85A7816
.2byte 1, 2, 4, 8, 16, 32, 64, 128, 256
-gUnknown_085A7828:: @ 85A7828
+sSlotPayouts:: @ 85A7828
.2byte 2, 4, 0, 6, 12, 3, 0x5A, 0x12C, 0x12C
gUnknown_085A783A:: @ 85A783A
diff --git a/data/specials.inc b/data/specials.inc
index 86355f484..d0d04837a 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -71,7 +71,7 @@ gSpecials:: @ 81DBA64
def_special ShouldTryRematchBattle
def_special IsTrainerReadyForRematch
def_special BattleSetup_StartRematchBattle
- def_special sub_80C7578
+ def_special ShowPokemonStorageSystem
def_special HasEnoughMonsForDoubleBattle
def_special TurnOffTVScreen
def_special DoTVShow
diff --git a/include/battle_anim.h b/include/battle_anim.h
index d6d4c05d6..f690cf10c 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -107,4 +107,6 @@ u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
+u8 sub_80A600C(u8, u16, u8);
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/contest.h b/include/contest.h
index c263882eb..b7324e26b 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -1,36 +1,241 @@
#ifndef GUARD_CONTEST_H
#define GUARD_CONTEST_H
-struct ContestMove
+enum
{
- u8 effect;
- u8 contestCategory:3;
- u8 comboStarterId;
- u8 comboMoves[4];
+ CONTEST_CATEGORY_COOL,
+ CONTEST_CATEGORY_BEAUTY,
+ CONTEST_CATEGORY_CUTE,
+ CONTEST_CATEGORY_SMART,
+ CONTEST_CATEGORY_TOUGH,
};
-struct ContestEffect
+enum
{
- u8 effectType;
- u8 appeal;
- u8 jam;
+ CONTEST_EFFECT_HIGHLY_APPEALING,
+ CONTEST_EFFECT_USER_MORE_EASILY_STARTLED,
+ CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
+ CONTEST_EFFECT_REPETITION_NOT_BORING,
+ CONTEST_EFFECT_AVOID_STARTLE_ONCE,
+ CONTEST_EFFECT_AVOID_STARTLE,
+ CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY,
+ CONTEST_EFFECT_USER_LESS_EASILY_STARTLED,
+ CONTEST_EFFECT_STARTLE_FRONT_MON,
+ CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS,
+ CONTEST_EFFECT_STARTLE_PREV_MON,
+ CONTEST_EFFECT_STARTLE_PREV_MONS,
+ CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON,
+ CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS,
+ CONTEST_EFFECT_STARTLE_PREV_MON_2,
+ CONTEST_EFFECT_STARTLE_PREV_MONS_2,
+ CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
+ CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION,
+ CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN,
+ CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL,
+ CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL,
+ CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL,
+ CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL,
+ CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL,
+ CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL,
+ CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS,
+ CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS,
+ CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS,
+ CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION,
+ CONTEST_EFFECT_BETTER_IF_FIRST,
+ CONTEST_EFFECT_BETTER_IF_LAST,
+ CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES,
+ CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE,
+ CONTEST_EFFECT_BETTER_WHEN_LATER,
+ CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING,
+ CONTEST_EFFECT_BETTER_IF_SAME_TYPE,
+ CONTEST_EFFECT_BETTER_IF_DIFF_TYPE,
+ CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL,
+ CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS,
+ CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION,
+ CONTEST_EFFECT_NEXT_APPEAL_EARLIER,
+ CONTEST_EFFECT_NEXT_APPEAL_LATER,
+ CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER,
+ CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER,
+ CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST,
+ CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS,
+ CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED,
+ CONTEST_EFFECT_DONT_EXCITE_AUDIENCE
};
-struct ContestStruct_02039E00
+enum
{
- u16 unk_00;
- u8 unk_02[11];
- u8 unk_0d[8];
- u8 filler_15[9];
- u8 filler_1E[34];
+ COMBO_STARTER_RAIN_DANCE = 1,
+ COMBO_STARTER_RAGE,
+ COMBO_STARTER_FOCUS_ENERGY,
+ COMBO_STARTER_HYPNOSIS,
+ COMBO_STARTER_ENDURE,
+ COMBO_STARTER_HORN_ATTACK,
+ COMBO_STARTER_SWORDS_DANCE,
+ COMBO_STARTER_STOCKPILE,
+ COMBO_STARTER_SUNNY_DAY,
+ COMBO_STARTER_REST,
+ COMBO_STARTER_VICE_GRIP,
+ COMBO_STARTER_DEFENSE_CURL,
+ COMBO_STARTER_CHARGE,
+ COMBO_STARTER_ROCK_THROW,
+ COMBO_STARTER_YAWN,
+ COMBO_STARTER_SCARY_FACE,
+ COMBO_STARTER_POWDER_SNOW,
+ COMBO_STARTER_LOCK_ON,
+ COMBO_STARTER_SOFT_BOILED,
+ COMBO_STARTER_MEAN_LOOK,
+ COMBO_STARTER_SCRATCH,
+ COMBO_STARTER_GROWTH,
+ COMBO_STARTER_HAIL,
+ COMBO_STARTER_SANDSTORM,
+ COMBO_STARTER_BELLY_DRUM,
+ COMBO_STARTER_MIND_READER,
+ COMBO_STARTER_DRAGON_BREATH,
+ COMBO_STARTER_DRAGON_RAGE,
+ COMBO_STARTER_DRAGON_DANCE,
+ COMBO_STARTER_SURF,
+ COMBO_STARTER_DIVE,
+ COMBO_STARTER_STRING_SHOT,
+ COMBO_STARTER_LEER,
+ COMBO_STARTER_TAUNT,
+ COMBO_STARTER_CHARM,
+ COMBO_STARTER_HARDEN,
+ COMBO_STARTER_SING,
+ COMBO_STARTER_EARTHQUAKE,
+ COMBO_STARTER_DOUBLE_TEAM,
+ COMBO_STARTER_CURSE,
+ COMBO_STARTER_SWEET_SCENT,
+ COMBO_STARTER_SLUDGE,
+ COMBO_STARTER_SLUDGE_BOMB,
+ COMBO_STARTER_THUNDER_PUNCH,
+ COMBO_STARTER_FIRE_PUNCH,
+ COMBO_STARTER_ICE_PUNCH,
+ COMBO_STARTER_PECK,
+ COMBO_STARTER_METAL_SOUND,
+ COMBO_STARTER_MUD_SPORT,
+ COMBO_STARTER_WATER_SPORT,
+ COMBO_STARTER_BONE_CLUB,
+ COMBO_STARTER_BONEMERANG,
+ COMBO_STARTER_BONE_RUSH,
+ COMBO_STARTER_SAND_ATTACK,
+ COMBO_STARTER_MUD_SLAP,
+ COMBO_STARTER_FAKE_OUT,
+ COMBO_STARTER_PSYCHIC,
+ COMBO_STARTER_KINESIS,
+ COMBO_STARTER_CONFUSION,
+ COMBO_STARTER_POUND,
+ COMBO_STARTER_SMOG,
+ COMBO_STARTER_CALM_MIND
};
-extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
+enum
+{
+ CONTEST_STRING_MORE_CONSCIOUS,
+ CONTEST_STRING_NO_APPEAL,
+ CONTEST_STRING_SETTLE_DOWN,
+ CONTEST_STRING_OBLIVIOUS_TO_OTHERS,
+ CONTEST_STRING_LESS_AWARE,
+ CONTEST_STRING_STOPPED_CARING,
+ CONTEST_STRING_STARTLE_ATTEMPT,
+ CONTEST_STRING_DAZZLE_ATTEMPT,
+ CONTEST_STRING_JUDGE_LOOK_AWAY2,
+ CONTEST_STRING_UNNERVE_ATTEMPT,
+ CONTEST_STRING_NERVOUS,
+ CONTEST_STRING_UNNERVE_WAITING,
+ CONTEST_STRING_TAUNT_WELL,
+ CONTEST_STRING_REGAINED_FORM,
+ CONTEST_STRING_JAM_WELL,
+ CONTEST_STRING_HUSTLE_STANDOUT,
+ CONTEST_STRING_WORK_HARD_UNNOTICED,
+ CONTEST_STRING_WORK_BEFORE,
+ CONTEST_STRING_APPEAL_NOT_WELL,
+ CONTEST_STRING_WORK_PRECEDING,
+ CONTEST_STRING_APPEAL_NOT_WELL2,
+ CONTEST_STRING_APPEAL_NOT_SHOWN_WELL,
+ CONTEST_STRING_APPEAL_SLIGHTLY_WELL,
+ CONTEST_STRING_APPEAL_PRETTY_WELL,
+ CONTEST_STRING_APPEAL_EXCELLENTLY,
+ CONTEST_STRING_APPEAL_DUD,
+ CONTEST_STRING_APPEAL_NOT_VERY_WELL,
+ CONTEST_STRING_APPEAL_SLIGHTLY_WELL2,
+ CONTEST_STRING_APPEAL_PRETTY_WELL2,
+ CONTEST_STRING_APPEAL_VERY_WELL,
+ CONTEST_STRING_APPEAL_EXCELLENTLY2,
+ CONTEST_STRING_SAME_TYPE_GOOD,
+ CONTEST_STRING_DIFF_TYPE_GOOD,
+ CONTEST_STRING_STOOD_OUT_AS_MUCH,
+ CONTEST_STRING_NOT_AS_WELL,
+ CONTEST_STRING_CONDITION_ROSE,
+ CONTEST_STRING_HOT_STATUS,
+ CONTEST_STRING_MOVE_UP_LINE,
+ CONTEST_STRING_MOVE_BACK_LINE,
+ CONTEST_STRING_SCRAMBLE_ORDER,
+ CONTEST_STRING_JUDGE_EXPECTANTLY2,
+ CONTEST_STRING_WENT_OVER_WELL,
+ CONTEST_STRING_WENT_OVER_VERY_WELL,
+ CONTEST_STRING_APPEAL_COMBO_EXCELLENTLY,
+ CONTEST_STRING_AVERT_GAZE,
+ CONTEST_STRING_AVOID_SEEING,
+ CONTEST_STRING_NOT_FAZED,
+ CONTEST_STRING_LITTLE_DISTRACTED,
+ CONTEST_STRING_ATTEMPT_STARTLE,
+ CONTEST_STRING_LOOKED_DOWN,
+ CONTEST_STRING_TURNED_BACK,
+ CONTEST_STRING_UTTER_CRY,
+ CONTEST_STRING_LEAPT_UP,
+ CONTEST_STRING_TRIPPED_OVER,
+ CONTEST_STRING_MESSED_UP2,
+ CONTEST_STRING_FAILED_TARGET_NERVOUS,
+ CONTEST_STRING_FAILED_ANYONE_NERVOUS,
+ CONTEST_STRING_IGNORED,
+ CONTEST_STRING_NO_CONDITION_IMPROVE,
+ CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL,
+ CONTEST_STRING_UNAFFECTED,
+ CONTEST_STRING_ATTRACTED_ATTENTION,
+ CONTEST_STRING_NONE = 255
+};
+
+struct ContestPokemon
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x0D*/ u8 trainerName[8];
+ /*0x15*/ u8 trainerGfxId;
+ /*0x18*/ u32 flags;
+ /*0x1C*/ u8 whichRank:2;
+ u8 aiPool_Cool:1;
+ u8 aiPool_Beauty:1;
+ u8 aiPool_Cute:1;
+ u8 aiPool_Smart:1;
+ u8 aiPool_Tough:1;
+ /*0x1E*/ u16 moves[4]; // moves
+ /*0x26*/ u8 cool; // cool
+ /*0x27*/ u8 beauty; // beauty
+ /*0x28*/ u8 cute; // cute
+ /*0x29*/ u8 smart; // smart
+ /*0x2A*/ u8 tough; // tough
+ /*0x2B*/ u8 sheen; // sheen
+ /*0x2C*/ u8 unk2C[12];
+ /*0x38*/ u32 personality; // personality
+ /*0x3C*/ u32 otId; // otId
+}; // wow
+
+extern struct ContestPokemon gContestMons[4];
extern u8 gUnknown_02039F24;
extern u16 gSpecialVar_ContestCategory;
-extern u8 gSpecialVar_ContestRank;
+extern u16 gSpecialVar_ContestRank;
extern u8 gUnknown_02039F30;
+struct Shared18000
+{
+ /*0x18000*/ u8 unk18000;
+ /*0x18001*/ u8 filler18001[3];
+ /*0x18004*/ u16 unk18004[16][16];
+ /*0x18204*/ u16 unk18204[0x200];
+ /*0x18604*/ u16 unk18604[0x200];
+ /*0x18A04*/ u8 unk18A04[0x800];
+};
+
struct ContestStruct_field_18
{
// unknown size
@@ -43,19 +248,173 @@ struct ContestStruct_field_18
u32 field_10;
};
+struct Contest
+{
+ /*0x19204*/ u8 playerMoveChoice;
+ /*0x19205*/ u8 turnNumber;
+ /*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function
+ /*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
+ u16 unk1920A_1:1;
+ u16 unk1920A_2:1;
+ u16 unk1920A_3:1;
+ u16 unk1920A_4:1;
+ u16 unk1920A_5:1;
+ u16 unk1920A_6:1;
+ u16 unk1920A_7:1;
+ /*0x1920B*/ u16 unk1920B_0:1;
+ u16 unk1920B_1:1;
+ u16 unk1920B_2:1;
+ /*0x1920C*/ u8 mainTaskId;
+ /*0x1920D*/ u8 unk1920D[4];
+ /*0x19211*/ u8 unk19211;
+ /*0x19212*/ u8 unk19212;
+ /*0x19213*/ u8 filler19213;
+ /*0x19214*/ u8 unk19214;
+ /*0x19215*/ u8 unk19215;
+ /*0x19216*/ u8 unk19216; // sprite ID
+ /*0x19217*/ s8 applauseLevel;
+ /*0x19218*/ u8 unk19218[4];
+ /*0x1921C*/ u32 unk1921C; // saved RNG value?
+ u16 unk19220[5][4]; // move history?
+ u8 unk19248[5][4]; // excitement history
+ u8 applauseMeterSpriteId; // sprite ID
+ /*0x1925D*/ u8 unk1925D;
+ /*0x1925E*/ u8 unk1925E;
+};
+
+struct ContestantStatus
+{
+ /*0x00*/ s16 appeal1; // move appeal?
+ /*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
+ /*0x04*/ s16 unk4;
+ /*0x06*/ u16 currMove;
+ /*0x08*/ u16 prevMove;
+ /*0x0A*/ u8 moveCategory;
+ /*0x0B*/ u8 unkB_0:2;
+ u8 unkB_2:2;
+ u8 moveRepeatCount:3;
+ u8 noMoreTurns:1; // used a one-time move?
+ /*0x0C*/ u8 nervous:1;
+ u8 numTurnsSkipped:2;
+ /*0x0D*/ s8 condition;
+ /*0x0E*/ u8 jam;
+ /*0x0F*/ u8 jamReduction;
+
+ // Flags set by move effect
+ /*0x10*/ u8 resistant:1;
+ u8 immune:1;
+ u8 moreEasilyStartled:1;
+ u8 usedRepeatableMove:1;
+ u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition
+ u8 turnOrderMod:2; // 1: defined; 2: random
+ /*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
+ u8 turnSkipped:1;
+ u8 exploded:1;
+ u8 overrideCategoryExcitementMod:1;
+ u8 appealTripleCondition:1;
+
+ /*0x12*/ u8 jamSafetyCount;
+ /*0x13*/ u8 effectStringId; // status action?
+ /*0x14*/ u8 effectStringId2;
+ /*0x15*/ u8 disappointedRepeat:1;
+ u8 unk15_1:1;
+ u8 unk15_2:1;
+ u8 unk15_3:1;
+ u8 hasJudgesAttention:1;
+ u8 judgesAttentionWasRemoved:1;
+ u8 unk15_6:1;
+ /*0x16*/ u8 unk16;
+ /*0x17*/ u8 unk17;
+ /*0x18*/ u8 unk18;
+ /*0x19*/ u8 nextTurnOrder; // turn position
+ /*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
+ /*0x1B*/ u8 unk1B;
+};
+
+struct UnknownContestStruct7
+{
+ u8 turnOrder[4];
+ s16 jam;
+ s16 jam2;
+ u8 jamQueue[5];
+ u8 unnervedPokes[4];
+ u8 contestant;
+};
+
+struct ContestAIInfo {
+ /*0x00*/ u8 aiState;
+ /*0x02*/ u16 unk2;
+ /*0x04*/ u8 unk4;
+ /*0x05*/ u8 unk5[4];
+ /*0x09*/ u8 aiAction;
+ /*0x0A*/ u8 fillerA[0x6]; // TODO: don't know what's here
+ /*0x10*/ u8 unk10;
+ /*0x14*/ u32 flags;
+ /*0x18*/ s16 scriptResult;
+ /*0x1A*/ s16 scriptArr[3];
+ /*0x20*/ u32 stack[8];
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+};
+
+struct UnknownContestStruct5
+{
+ s8 bits_0; // current move excitement?
+ u8 excitementFrozen:1;
+ u8 excitementFreezer:3;
+ s8 unk2;
+};
+
+struct UnknownContestStruct4
+{
+ u8 unk0; // sprite ID
+ u8 unk1; // sprite ID
+ u8 unk2_0:1;
+ u8 unk2_1:1;
+ u8 unk2_2:1;
+};
+
+struct ContestResourcesField1C
+{
+ u8 filler_00[0x40];
+};
+
+struct ContestResourcesField20
+{
+ u8 filler_00[0x0C];
+};
+
struct ContestResources
{
- void *field_0;
- void *field_4;
- void *field_8;
- void *field_C;
- void *field_10;
- void *field_14;
+ struct Contest *field_0;
+ struct ContestantStatus *field_4;
+ struct UnknownContestStruct7 *field_8;
+ struct ContestAIInfo *field_C;
+ struct UnknownContestStruct5 *field_10;
+ struct UnknownContestStruct4 *field_14;
struct ContestStruct_field_18 *field_18;
+ struct ContestResourcesField1C * field_1c;
+ struct ContestResourcesField20 * field_20;
+ u8 * field_24[4];
+ void * field_34;
+ void * field_38;
+ void * field_3c;
};
extern struct ContestResources *gContestResources;
+#define sContest (*gContestResources->field_0)
+#define sContestantStatus (gContestResources->field_4)
+#define shared192D0 (*gContestResources->field_8)
+#define eContestAI (*gContestResources->field_C)
+#define shared19328 (*gContestResources->field_10)
+#define shared19338 (*gContestResources->field_14)
+
+#define shared15800 (gHeap + 0x18000)
+#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
+
+extern u32 gContestRngValue;
+
bool8 IsSpeciesNotUnown(u16 species);
void LoadContestBgAfterMoveAnim(void);
diff --git a/include/contest_effect.h b/include/contest_effect.h
new file mode 100644
index 000000000..3484ca5df
--- /dev/null
+++ b/include/contest_effect.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_CONTEST_EFFECT_H
+#define GUARD_CONTEST_EFFECT_H
+
+struct ContestMove
+{
+ u8 effect;
+ u8 contestCategory:3;
+ u8 comboStarterId;
+ u8 comboMoves[4];
+};
+
+struct ContestEffect
+{
+ u8 effectType;
+ u8 appeal;
+ u8 jam;
+};
+
+extern const struct ContestMove gContestMoves[];
+extern struct ContestEffect gContestEffects[];
+
+#endif //GUARD_CONTEST_EFFECT_H
diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h
index 98523c175..3c12e5e53 100644
--- a/include/contest_link_80F57C4.h
+++ b/include/contest_link_80F57C4.h
@@ -4,5 +4,6 @@
void sub_80F840C(void);
void sub_80F8484(void);
void sub_80F84C4(u8);
+void sub_80FC998(u8 taskId);
#endif // GUARD_CONTEST_LINK_80F57C4_H
diff --git a/include/contest_link_80FC4F4.h b/include/contest_link_80FC4F4.h
new file mode 100644
index 000000000..6f3bab97d
--- /dev/null
+++ b/include/contest_link_80FC4F4.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CONTEST_LINK_80FC4F4_H
+#define GUARD_CONTEST_LINK_80FC4F4_H
+
+void sub_80FCC88(u8);
+void sub_80FCC88(u8);
+void sub_80FCACC(u8);
+
+#endif //GUARD_CONTEST_LINK_80FC4F4_H
diff --git a/include/data2.h b/include/data2.h
index af830a4c4..176365146 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -19,5 +19,6 @@ extern const u8 gMoveNames[][MOVE_NAME_LENGTH + 1];
extern struct CompressedSpriteSheet gUnknown_0831C620;
extern struct CompressedSpritePalette gUnknown_0831C628;
extern const struct SpriteTemplate gUnknown_0831C688;
+extern const struct CompressedSpriteSheet gMonBackPicTable[];
#endif // GUARD_DATA2_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index c382ae4d8..1a473eea9 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -146,6 +146,7 @@ u8 GetJumpInPlaceMovementAction(u32);
bool8 EventObjectSetHeldMovement(struct EventObject *eventObject, u8 specialAnimId);
bool8 EventObjectIsMovementOverridden(struct EventObject *eventObject);
u8 EventObjectCheckHeldMovementStatus(struct EventObject *eventObject);
+u8 EventObjectGetHeldMovementActionId(struct EventObject *eventObject);
void TryOverrideTemplateCoordsForEventObject(const struct EventObject *eventObject, u8 movementType);
void OverrideTemplateCoordsForEventObject(const struct EventObject *eventObject);
void ShiftStillEventObjectCoords(struct EventObject *pObject);
@@ -185,6 +186,7 @@ bool8 FreezeEventObject(struct EventObject *eventObject);
u8 GetMoveDirectionFastAnimNum(u8);
u8 GetMoveDirectionFasterAnimNum(u8);
u8 GetMoveDirectionFastestAnimNum(u8);
+u8 GetLedgeJumpDirection(s16, s16, u8);
void CameraObjectSetFollowedObjectId(u8 objectId);
void MovementType_None(struct Sprite *);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index c187682b0..4f85156aa 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -394,6 +394,10 @@ extern const u8 Route111_EventScript_2907F0[];
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_1F863F[];
extern const u8 LittlerootTown_MaysHouse_2F_EventScript_1F958F[];
+//contest_strings
+extern const u8 gText_0827D507[];
+extern const u8 gText_0827D531[];
+
//mauville_old_man
extern const u8 gOtherText_Is[];
extern const u8 gOtherText_DontYouAgree[];
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 8cd6c275b..b11b5e21a 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -45,4 +45,22 @@ void SetPlayerAvatarStateMask(u8 a);
u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
u8 GetJumpSpecialMovementAction(u32);
+bool8 ForcedMovement_None(void);
+bool8 ForcedMovement_Slip(void);
+bool8 ForcedMovement_WalkSouth(void);
+bool8 ForcedMovement_WalkNorth(void);
+bool8 ForcedMovement_WalkWest(void);
+bool8 ForcedMovement_WalkEast(void);
+bool8 ForcedMovement_PushedSouthByCurrent(void);
+bool8 ForcedMovement_PushedNorthByCurrent(void);
+bool8 ForcedMovement_PushedWestByCurrent(void);
+bool8 ForcedMovement_PushedEastByCurrent(void);
+bool8 ForcedMovement_SlideSouth(void);
+bool8 ForcedMovement_SlideNorth(void);
+bool8 ForcedMovement_SlideWest(void);
+bool8 ForcedMovement_SlideEast(void);
+bool8 ForcedMovement_0xBB(void);
+bool8 ForcedMovement_0xBC(void);
+bool8 ForcedMovement_MuddySlope(void);
+
#endif // GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/gba/types.h b/include/gba/types.h
index 9f63489aa..a7dbf3e03 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -28,6 +28,17 @@ typedef u8 bool8;
typedef u16 bool16;
typedef u32 bool32;
+struct BgCnt
+{
+ u16 priority:2;
+ u16 charBaseBlock:2;
+ u16 dummy:4;
+ u16 screenBaseBlock:5;
+ u16 areaOverflowMode:1;
+ u16 screenSize:2;
+};
+typedef volatile struct BgCnt vBgCnt;
+
struct PlttData
{
u16 r:5; // red
diff --git a/include/global.h b/include/global.h
index 2015d47cc..1a179d858 100644
--- a/include/global.h
+++ b/include/global.h
@@ -761,7 +761,7 @@ struct LilycoveLadyContest
/*0x00e*/ u8 language;
};
-typedef union
+typedef union // 3b58
{
struct LilycoveLadyQuiz quiz;
struct LilycoveLadyFavour favour;
diff --git a/include/global.tv.h b/include/global.tv.h
index 805922d5c..61f014984 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -91,7 +91,7 @@ typedef union // size = 0x24
/*0x0E*/ u8 pokemonNameLanguage;
/*0x0F*/ u8 filler_0F[1];
/*0x10*/ u8 nickname[8];
- /*0x18*/ u8 filler_18[4];
+ /*0x18*/ u16 words18[2];
/*0x1C*/ u16 words[4];
} fanclubOpinions;
@@ -99,7 +99,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 pad02[4];
+ /*0x02*/ u16 words[2];
/*0x06*/ u16 var06;
/*0x08*/ u8 pad_08[3];
/*0x0b*/ u8 string_0b[12];
diff --git a/include/link.h b/include/link.h
index b1b5a6d04..9561728bd 100644
--- a/include/link.h
+++ b/include/link.h
@@ -301,5 +301,6 @@ void sub_8009FAC(void);
bool8 sub_800A4D8(u8 a0);
u8 sub_800A9D8(void);
u8 sub_800A0C8(s32, s32);
+u16 *sub_801B058(void);
#endif // GUARD_LINK_H
diff --git a/include/main_menu.h b/include/main_menu.h
index 08cd913dc..4f75b1767 100644
--- a/include/main_menu.h
+++ b/include/main_menu.h
@@ -2,5 +2,6 @@
#define GUARD_MAIN_MENU_H
void CB2_InitMainMenu(void);
+void sub_80323CC(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f);
#endif // GUARD_MAIN_MENU_H
diff --git a/include/pc_screen_effect.h b/include/pc_screen_effect.h
new file mode 100644
index 000000000..5cfde0093
--- /dev/null
+++ b/include/pc_screen_effect.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_PC_SCREEN_EFFECT_H
+#define GUARD_PC_SCREEN_EFFECT_H
+
+struct PCScreenEffectStruct
+{
+ /*0x00*/ u16 tileTag;
+ /*0x02*/ u16 paletteTag;
+ /*0x04*/ u16 unk04;
+ /*0x06*/ u16 unk06;
+ /*0x08*/ u16 unk08;
+ /*0x0A*/ u16 unk0A;
+ /*0x0C*/ s16 unk0C;
+ /*0x10*/ u32 selectedPalettes;
+};
+
+#endif //GUARD_PC_SCREEN_EFFECT_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 990331e86..03f4e0da6 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -4,6 +4,78 @@
#define TOTAL_BOXES_COUNT 14
#define IN_BOX_COUNT 30
+#include "pc_screen_effect.h"
+#include "mon_markings.h"
+
+struct PokemonStorageSystemFunc
+{
+ u8 (*func)(void);
+ s8 unk4;
+};
+
+struct StorageAction
+{
+ const u8 *text;
+ u8 format;
+};
+
+struct StorageText
+{
+ const u8 *text;
+ int textId;
+};
+
+struct PSS_MenuStringPtrs
+{
+ const u8 *text;
+ const u8 *desc;
+};
+
+struct UnkStruct_2000028
+{
+ const u8 *unk_00;
+ u8 *unk_04;
+ u16 unk_08;
+ u16 unk_0a;
+ void (*unk_0c)(struct UnkStruct_2000028 *data);
+};
+
+struct UnkStruct_2000020
+{
+ struct UnkStruct_2000028 *unk_00;
+ u8 unk_04;
+ u8 unk_05;
+};
+
+struct UnkPSSStruct_2002370
+{
+ struct Sprite *unk_0000;
+ struct Sprite *unk_0004[4];
+ u32 unk_0014[3];
+ struct Sprite *unk_0020[2];
+ u8 filler_0028[0x214];
+ u32 unk_023c;
+ u16 unk_0240;
+ u16 unk_0242;
+ u8 curBox;
+ u8 unk_0245;
+ u8 unk_0246;
+};
+
+struct PokemonStorageSystemData
+{
+ u8 state;
+ u8 boxOption;
+ u8 unk_0002;
+ u8 unk_0003;
+ u8 taskId;
+ u8 unk_0005[710];
+ u16 bg2_X;
+};
+
+extern struct UnkPSSStruct_2002370 *gUnknown_02039D04;
+extern struct PokemonStorageSystemData *gUnknown_02039D08;
+
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
diff --git a/include/rotating_gate.h b/include/rotating_gate.h
index 50a838953..2ae26aa5b 100644
--- a/include/rotating_gate.h
+++ b/include/rotating_gate.h
@@ -4,5 +4,6 @@
void RotatingGatePuzzleCameraUpdate(s16, s16);
void RotatingGate_InitPuzzleAndGraphics();
u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16);
+bool32 CheckForRotatingGatePuzzleCollisionWithoutAnimation(u8, s16, s16);
#endif // GUARD_ROTATING_GATE_H
diff --git a/include/script_pokemon_util_80F87D8.h b/include/script_pokemon_util_80F87D8.h
new file mode 100644
index 000000000..555b3428b
--- /dev/null
+++ b/include/script_pokemon_util_80F87D8.h
@@ -0,0 +1,7 @@
+
+#ifndef GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
+#define GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
+
+u16 sub_80F903C(void);
+
+#endif // GUARD_SCRIPT_POKEMON_UTIL_80F87D8_H
diff --git a/include/slot_machine.h b/include/slot_machine.h
index 8334e56fc..88bbbd91b 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -1,6 +1,6 @@
#ifndef GUARD_SLOT_MACHINE_H
#define GUARD_SLOT_MACHINE_H
-void PlaySlotMachine(u8, void *);
+void PlaySlotMachine(u8, void (callback)(void));
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/strings.h b/include/strings.h
index 528f70f69..2577579c5 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -451,6 +451,8 @@ extern const u8 gText_TooImportantToToss[];
extern const u8 gText_ConfirmTossItems[];
extern const u8 gText_MoveVar1Where[];
+extern const u8 gText_ColorLightShadowDarkGrey[];
+extern const u8 gText_ColorBlue[];
extern const u8 gText_Friend[];
extern const u8 gText_Tristan[];
extern const u8 gText_Philip[];
@@ -461,6 +463,8 @@ extern const u8 gText_FiveMarks[];
extern const u8 gText_TotalRecordWLD[];
extern const u8 gText_PlayersBattleResults[];
extern const u8 gText_WinLoseDraw[];
+extern const u8 gText_ColorTransparent[];
+extern const u8 gText_Slash[];
extern const u8 gText_99TimesPlus[];
extern const u8 gText_1MinutePlus[];
diff --git a/include/tv.h b/include/tv.h
index 554bbad85..7a938f888 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -47,6 +47,7 @@ void UpdateTVShowsPerDay(u16 days);
void PutPokemonTodayCaughtOnAir(void);
void TV_PutSecretBaseVisitOnTheAir(void);
void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
+void BravoTrainerPokemonProfile_BeforeInterview1(u16 move);
void UpdateTVScreensOnMap(int, int);
void TV_PrintIntToStringVar(u8 varIdx, int value);
diff --git a/ld_script.txt b/ld_script.txt
index ea17676bf..7e0a351db 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -92,6 +92,7 @@ SECTIONS {
src/metatile_behavior.o(.text);
src/field_camera.o(.text);
src/field_door.o(.text);
+ src/field_player_avatar.o(.text);
asm/field_player_avatar.o(.text);
src/event_object_movement.o(.text);
src/field_message_box.o(.text);
@@ -135,6 +136,7 @@ SECTIONS {
src/item_menu_icons.o(.text);
asm/battle_anim_80D51AC.o(.text);
src/item.o(.text);
+ src/contest.o(.text);
asm/contest.o(.text);
asm/shop.o(.text);
src/berry.o(.text);
@@ -157,6 +159,7 @@ SECTIONS {
src/item_use.o(.text);
asm/battle_anim_80FE840.o(.text);
src/bike.o(.text);
+ src/easy_chat.o(.text);
asm/easy_chat.o(.text);
src/mon_markings.o(.text);
src/mauville_old_man.o(.text);
@@ -167,6 +170,7 @@ SECTIONS {
src/region_map.o(.text);
asm/cute_sketch.o(.text);
src/decoration.o(.text);
+ src/slot_machine.o(.text);
asm/slot_machine.o(.text);
asm/contest_painting.o(.text);
src/battle_ai_script_commands.o(.text);
@@ -399,6 +403,7 @@ SECTIONS {
src/fieldmap.o(.rodata);
src/metatile_behavior.o(.rodata);
src/field_door.o(.rodata);
+ src/field_player_avatar.o(.rodata);
data/field_player_avatar.o(.rodata);
src/event_object_movement.o(.rodata);
src/text_window.o(.rodata);
@@ -460,6 +465,7 @@ SECTIONS {
src/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
src/decoration.o(.rodata);
+ src/slot_machine.o(.rodata);
data/slot_machine.o(.rodata);
data/contest_painting.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
diff --git a/src/contest.c b/src/contest.c
new file mode 100644
index 000000000..8513fc4a9
--- /dev/null
+++ b/src/contest.c
@@ -0,0 +1,2761 @@
+#include "global.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "malloc.h"
+#include "constants/items.h"
+#include "constants/event_objects.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/flags.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "contest.h"
+#include "data2.h"
+#include "decompress.h"
+#include "graphics.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "random.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "tv.h"
+#include "scanline_effect.h"
+#include "util.h"
+#include "contest_link_80F57C4.h"
+#include "dma3.h"
+#include "battle_message.h"
+#include "event_scripts.h"
+#include "event_data.h"
+#include "strings.h"
+#include "contest_effect.h"
+#include "contest_link_80FC4F4.h"
+#include "script_pokemon_util_80F87D8.h"
+#include "international_string_util.h"
+#include "data2.h"
+#include "constants/rgb.h"
+
+extern void (*gFieldCallback)(void);
+
+void sub_80D782C(void);
+void sub_80D7C7C(u8 taskId);
+void sub_80D7CB4(u8 taskId);
+void sub_80D7DAC(u8 taskId);
+void sub_80D7DC8(u8 taskId);
+void sub_80D7DE8(u8 taskId);
+bool8 sub_80D7E44(u8 *);
+void sub_80D80C8(u8 taskId);
+void sub_80D8108(u8 taskId);
+void vblank_cb_battle(void);
+void sub_80D823C(void);
+void sub_80D833C(u8 taskId);
+void sub_80D8424(u8 taskId);
+void sub_80D8610(u8 taskId);
+void sub_80D8490(u8 taskId);
+void sub_80D880C(s8);
+void sub_80D883C(s8);
+void sub_80D8894(u8 taskId);
+void sub_80D892C(u8 taskId);
+void sub_80D895C(u8 taskId);
+void sub_80D8A04(u8 taskId);
+void sub_80D8A50(u8 taskId);
+void sub_80D8A88(u8 taskId);
+void sub_80D8B38(u8 taskId);
+void sub_80DA110(u8);
+void sub_80DA134(struct Sprite *);
+void sub_80DA164(struct Sprite *);
+void sub_80DA198(u8);
+void sub_80DA25C(u8);
+void sub_80DA28C(u8);
+void sub_80DA31C(u8);
+void sub_80DA348(u8);
+void sub_80DA38C(u8);
+void sub_80DA3CC(u8);
+void sub_80DA464(u8);
+void sub_80DA49C(u8);
+void sub_80DA4CC(u8);
+void sub_80DA51C(u8);
+void sub_80DA5B4(u8);
+void sub_80DA5E8(u8);
+void sub_80DA6B4(u8);
+void sub_80DA700(u8);
+void sub_80DA740(u8);
+void sub_80DA7A0(u8);
+void sub_80DA7EC(u8);
+void sub_80DA830(u8);
+void sub_80DA874(void);
+bool8 sub_80DA8A4(void);
+void sub_80DAF04(u8);
+void sub_80DAF1C(u8 a0, u8 a1);
+void sub_80DAF88(u8);
+void sub_80DAFA0(u8, u8);
+u8 sub_80DB0C4(void);
+u8 sub_80DB120(void);
+u8 sub_80DB174(u16, u32, u32, u32);
+void sub_80DB2BC(void);
+void prints_contest_move_description(u16);
+u16 sub_80DE84C(u16);
+void sub_80DB89C(void);
+u16 sub_80DB8B8(u8);
+void sub_80DB918(void);
+bool8 sub_80DBCA8(u8);
+void sub_80DBF68(void);
+void sub_80DBF90(void);
+void sub_80DC2BC(void);
+void sub_80DC490(bool8);
+void sub_80DC4F0(void);
+void sub_80DC594(void);
+void sub_80DC5E8(void);
+void sub_80DC7EC(void);
+void sub_80DCD48(void);
+void sub_80DCE58(u8);
+void sub_80DD04C(void);
+void sub_80DD590(void);
+void sub_80DDB0C(void);
+void sub_80DDBE8(void);
+bool8 sub_80DE1E8(u8);
+void sub_80DE224(void);
+void sub_80DE350(void);
+void sub_80DE424(u8);
+void sub_80DE69C(u8);
+void sub_80DEA20(void);
+void Contest_PrintTextToBg0WindowAt(u32, u8 *, s32, u8, u8);
+void Contest_StartTextPrinter(const u8 *, u8);
+void ContestBG_FillBoxWithIncrementingTile(u8, u16, u8, u8, u8, u8, u8, u8);
+bool32 Contest_RunTextPrinters(void);
+void Contest_SetBgCopyFlags(u32);
+void sub_80FC9F8(u8);
+bool8 AreMovesContestCombo(u16, u16);
+void sub_80DBD18(void);
+void sub_80DF250(void);
+void sub_80DF4F8(void);
+void sub_80DD080(u8);
+void sub_80DF080(u8);
+void sub_80DF750(void);
+void sub_80DE9DC(u8);
+void sub_80DCBE8(u8, u8);
+u8 sub_80DC9EC(u8);
+u16 sub_80DE834(u16);
+void sub_80DE864(u8);
+void sub_80DEAA8(u16);
+void sub_80DE9B0(u8);
+void sub_80DC674(u8);
+void sub_80DE12C(void);
+void sub_80DD45C(u8, u8);
+void sub_80DD720(u8);
+void sub_80DE008(bool8);
+void sub_80DC028(s16, s16, u8);
+bool8 sub_80DB5B8(u8, u8);
+bool8 sub_80DB798(u8);
+void sub_80DB884(void);
+void sub_80DC9B4(u8);
+void sub_80DDED0(s8, s8);
+void sub_80DDCDC(s8);
+void sub_80DDE0C(void);
+void sub_80DD940(void);
+void sub_80DB944(void);
+void sub_80DBA18(void);
+void sub_80DC3AC(void);
+bool8 sub_80DC3C4(void);
+void sub_80DF9D4(u8 *);
+void sub_80DF9E0(u8 *, s32);
+void ContestBG_FillBoxWithTile(u8, u16, u8, u8, u8, u8, u8);
+void Contest_PrintTextToBg0WindowStd(u8, const u8 *);
+
+EWRAM_DATA struct ContestPokemon gContestMons[4] = {0};
+EWRAM_DATA s16 gContestMonConditions[4] = {0};
+EWRAM_DATA s16 gUnknown_02039F08[4] = {0};
+EWRAM_DATA s16 gUnknown_02039F10[4] = {0};
+EWRAM_DATA s16 gUnknown_02039F18[4] = {0};
+EWRAM_DATA u8 gContestFinalStandings[4] = {0};
+EWRAM_DATA u8 gUnknown_02039F24 = 0;
+EWRAM_DATA u8 gContestPlayerMonIndex = 0;
+EWRAM_DATA u8 gUnknown_02039F26[4] = {0};
+EWRAM_DATA u8 gIsLinkContest = 0;
+// Bit 0: Is a link contest
+// Bit 1: Link contest uses wireless adapter
+EWRAM_DATA u8 gUnknown_02039F2B = 0;
+EWRAM_DATA u16 gSpecialVar_ContestCategory = 0;
+EWRAM_DATA u16 gSpecialVar_ContestRank = 0;
+EWRAM_DATA u8 gUnknown_02039F30 = 0;
+EWRAM_DATA u8 gUnknown_02039F31 = 0;
+EWRAM_DATA struct ContestResources * gContestResources = NULL;
+EWRAM_DATA u8 sContestBgCopyFlags = 0;
+EWRAM_DATA struct ContestWinner gUnknown_02039F3C = {0};
+
+u32 gContestRngValue;
+
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG1_X;
+extern s16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+extern u16 gBattle_WIN0H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattle_WIN1H;
+extern u16 gBattle_WIN1V;
+
+extern const u8 gContestMiscGfx[];
+extern const u8 gContestAudienceGfx[];
+extern const u8 gUnknown_08C16FA8[];
+extern const u8 gUnknown_08C16E90[];
+extern const u8 gUnknown_08C17170[];
+extern const u16 gUnknown_08587C30[];
+extern const struct BgTemplate gUnknown_08587F34[4];
+extern const struct WindowTemplate gUnknown_08587F44[];
+extern const u8 *const gUnknown_08587D90[];
+extern const u8 *const gUnknown_08587F08[];
+extern const u8 *const gUnknown_08587F1C[];
+extern const u8 gText_0827D55A[];
+extern const u8 gText_0827E793[];
+extern const u8 gText_0827E32E[];
+extern const u8 gText_0827E35B[];
+extern const u8 gText_0827E38D[];
+extern const u8 gText_0827E2FE[];
+extern const u8 gText_0827E6E3[];
+extern const u8 gText_0827E73C[];
+extern const u8 gText_0827E717[];
+extern const u8 gText_0827E76A[];
+extern const u8 gText_0827E7EA[];
+extern const u8 gText_0827E817[];
+extern const u8 gText_0827E58A[];
+extern const u8 gText_0827D56F[];
+extern const u8 gText_0827D597[];
+extern const struct ContestPokemon gContestOpponents[96];
+extern const u8 gUnknown_085898A4[96];
+extern const struct CompressedSpriteSheet gUnknown_08587C00;
+extern const u8 gContest2Pal[];
+extern const struct SpriteTemplate gSpriteTemplate_8587BE8;
+extern const struct CompressedSpriteSheet gUnknown_08587C08;
+extern const struct CompressedSpritePalette gUnknown_08587C10;
+extern const struct SpriteTemplate gSpriteTemplate_8587C18;
+extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
+extern const union AffineAnimCmd *const gUnknown_082FF694[];
+extern const u8 *const gContestEffectDescriptionPointers[];
+
+void TaskDummy1(u8 taskId)
+{
+}
+
+void ResetLinkContestBoolean(void)
+{
+ gIsLinkContest = 0;
+}
+
+void sub_80D7678(void)
+{
+ u16 savedIme;
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3 | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ gBattle_WIN1H = 0;
+ gBattle_WIN1V = 0;
+}
+
+void LoadContestBgAfterMoveAnim(void)
+{
+ s32 i;
+
+ LZDecompressVram(gContestMiscGfx, (void *)VRAM);
+ LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
+ CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
+ CopyBgTilemapBufferToVram(3);
+ LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
+ sub_80D782C();
+ for (i = 0; i < 4; i++)
+ {
+ u32 var = 5 + i;
+
+ LoadPalette(shared18000.unk18004[var], 16 * (5 + gUnknown_02039F26[i]), 16 * sizeof(u16));
+ }
+}
+
+void sub_80D779C(void)
+{
+ s32 i;
+
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_08587F34, ARRAY_COUNT(gUnknown_08587F34));
+ SetBgAttribute(3, BG_CTRL_ATTR_PRIORITY, 1);
+ for (i = 0; i < 4; i++)
+ {
+ SetBgTilemapBuffer(i, gContestResources->field_24[i]);
+ }
+}
+
+void sub_80D77E4(void)
+{
+ InitWindows(gUnknown_08587F44);
+ DeactivateAllTextPrinters();
+ if (gIsLinkContest & 1)
+ {
+ gTextFlags.flag_0 = FALSE;
+ }
+ else
+ {
+ gTextFlags.flag_0 = TRUE;
+ }
+}
+
+void sub_80D782C(void)
+{
+ s32 i;
+
+ LoadPalette(gUnknown_08587C30, 0xf0, 0x20);
+ FillPalette(RGB_BLACK, 0, 2);
+ for (i = 10; i < 14; i++)
+ LoadPalette(gPlttBufferUnfaded + 241, 240 + i, 2);
+ FillPalette(RGB(31, 17, 31), 0xF3, 2);
+}
+
+void sub_80D787C(void)
+{
+ s32 i;
+
+ *gContestResources->field_0 = (struct Contest){};
+ for (i = 0; i < 4; i++)
+ {
+ gContestResources->field_0->unk19206[i] = 0xFF;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ gContestResources->field_4[i] = (struct ContestantStatus){};
+ }
+ for (i = 0; i < 4; i++)
+ {
+ gContestResources->field_4[i].unkB_0 = 0;
+ gContestResources->field_4[i].effectStringId = CONTEST_STRING_NONE;
+ gContestResources->field_4[i].effectStringId2 = CONTEST_STRING_NONE;
+ }
+ *gContestResources->field_8 = (struct UnknownContestStruct7){};
+ *gContestResources->field_C = (struct ContestAIInfo){};
+ *gContestResources->field_10 = (struct UnknownContestStruct5){};
+ memset(gContestResources->field_14, 0, 4 * sizeof(struct UnknownContestStruct4));
+ if (!(gIsLinkContest & 1))
+ sub_80DCE58(0);
+ for (i = 0; i < 4; i++)
+ {
+ gContestResources->field_4[i].nextTurnOrder = 0xFF;
+ gContestResources->field_0->unk19218[i] = gUnknown_02039F26[i];
+ }
+ sub_80DD590();
+ *gContestResources->field_1c = (struct ContestResourcesField1C){};
+}
+
+void sub_80D7988(void)
+{
+ gContestResources = AllocZeroed(sizeof(struct ContestResources));
+ gContestResources->field_0 = AllocZeroed(sizeof(struct Contest));
+ gContestResources->field_4 = AllocZeroed(sizeof(struct ContestantStatus) * 4);
+ gContestResources->field_8 = AllocZeroed(sizeof(struct UnknownContestStruct7));
+ gContestResources->field_C = AllocZeroed(sizeof(struct ContestAIInfo));
+ gContestResources->field_10 = AllocZeroed(sizeof(struct UnknownContestStruct5) * 4);
+ gContestResources->field_14 = AllocZeroed(sizeof(struct UnknownContestStruct4) * 4);
+ gContestResources->field_18 = AllocZeroed(sizeof(struct ContestStruct_field_18));
+ gContestResources->field_1c = AllocZeroed(sizeof(struct ContestResourcesField1C));
+ gContestResources->field_20 = AllocZeroed(sizeof(struct ContestResourcesField20));
+ gContestResources->field_24[0] = AllocZeroed(0x1000);
+ gContestResources->field_24[1] = AllocZeroed(0x1000);
+ gContestResources->field_24[2] = AllocZeroed(0x1000);
+ gContestResources->field_24[3] = AllocZeroed(0x1000);
+ gContestResources->field_34 = AllocZeroed(0x800);
+ gContestResources->field_38 = AllocZeroed(0x800);
+ gContestResources->field_3c = AllocZeroed(0x2000);
+ gUnknown_0202305C = gContestResources->field_3c;
+ gUnknown_02023060 = gContestResources->field_24[1];
+}
+
+void sub_80D7A5C(void)
+{
+ FREE_AND_SET_NULL(gContestResources->field_0);
+ FREE_AND_SET_NULL(gContestResources->field_4);
+ FREE_AND_SET_NULL(gContestResources->field_8);
+ FREE_AND_SET_NULL(gContestResources->field_C);
+ FREE_AND_SET_NULL(gContestResources->field_10);
+ FREE_AND_SET_NULL(gContestResources->field_14);
+ FREE_AND_SET_NULL(gContestResources->field_18);
+ FREE_AND_SET_NULL(gContestResources->field_1c);
+ FREE_AND_SET_NULL(gContestResources->field_20);
+ FREE_AND_SET_NULL(gContestResources->field_24[0]);
+ FREE_AND_SET_NULL(gContestResources->field_24[1]);
+ FREE_AND_SET_NULL(gContestResources->field_24[2]);
+ FREE_AND_SET_NULL(gContestResources->field_24[3]);
+ FREE_AND_SET_NULL(gContestResources->field_34);
+ FREE_AND_SET_NULL(gContestResources->field_38);
+ FREE_AND_SET_NULL(gContestResources->field_3c);
+ FREE_AND_SET_NULL(gContestResources);
+ gUnknown_0202305C = NULL;
+ gUnknown_02023060 = NULL;
+}
+
+void sub_80D7B24(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ sContestBgCopyFlags = 0;
+ sub_80D7988();
+ AllocateMonSpritesGfx();
+ FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
+ gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x4000);
+ SetVBlankCallback(NULL);
+ sub_80D779C();
+ sub_80D77E4();
+ sub_80D7678();
+ ScanlineEffect_Clear();
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ //shared18000.unk18000 = 0;
+ gHeap[0x1a000] = 0;
+ ClearBattleMonForms();
+ sub_80D787C();
+ gMain.state++;
+ break;
+ case 1:
+ gMain.state++;
+ break;
+ case 2:
+ if (sub_80D7E44(&gContestResources->field_0->unk1925D))
+ {
+ gContestResources->field_0->unk1925D = 0;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ sub_80DE224();
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ BeginFastPaletteFade(2);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ SetVBlankCallback(vblank_cb_battle);
+ gContestResources->field_0->mainTaskId = CreateTask(sub_80D7C7C, 10);
+ SetMainCallback2(sub_80D823C);
+ if (gIsLinkContest & 2)
+ {
+ sub_800E0E8();
+ CreateWirelessStatusIndicatorSprite(8, 8);
+ }
+ break;
+ }
+}
+
+void sub_80D7C7C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80D7CB4;
+ }
+}
+
+void sub_80D7CB4(u8 taskId)
+{
+ if (gIsLinkContest & 1)
+ {
+ if (gIsLinkContest & 2)
+ {
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sub_80DBF68();
+ gTasks[taskId].data[0]++;
+ // fallthrough
+ case 1:
+ if (sub_800A520())
+ {
+ sub_800ADF8();
+ gTasks[taskId].data[0]++;
+ }
+ return;
+ case 2:
+ if (sub_800A520() != TRUE)
+ return;
+ gTasks[taskId].data[0]++;
+ break;
+ }
+ }
+
+ if (!gPaletteFade.active)
+ {
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ if (!(gIsLinkContest & 2))
+ sub_80DBF68();
+ CreateTask(sub_80D7DAC, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = TaskDummy1;
+ }
+ }
+ else
+ {
+ gTasks[taskId].func = sub_80D80C8;
+ }
+}
+
+void sub_80D7DAC(u8 taskId)
+{
+ SetTaskFuncWithFollowupFunc(taskId, sub_80FC998, sub_80D7DC8);
+}
+
+void sub_80D7DC8(u8 taskId)
+{
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].func = sub_80D7DE8;
+}
+
+void sub_80D7DE8(u8 taskId)
+{
+ gTasks[taskId].data[0]--;
+ if (gTasks[taskId].data[0] <= 0)
+ {
+ GetMultiplayerId(); // unused return value
+ DestroyTask(taskId);
+ gTasks[gContestResources->field_0->mainTaskId].func = sub_80D80C8;
+ gRngValue = gContestRngValue;
+ }
+}
+
+u8 sub_80D7E44(u8 *a)
+{
+ u16 sp0[16];
+ u16 sp20[16];
+
+ switch (*a)
+ {
+ case 0:
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ RequestDma3Fill(0, (void *)VRAM, 0x8000, 1);
+ RequestDma3Fill(0, (void *)VRAM + 0x8000, 0x8000, 1);
+ RequestDma3Fill(0, (void *)VRAM + 0x10000, 0x8000, 1);
+ break;
+ case 1:
+ LZDecompressVram(gContestMiscGfx, (void *)VRAM);
+ break;
+ case 2:
+ LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
+ DmaCopyLarge32(3, (void *)(VRAM + 0x2000), shared15800, 0x2000, 0x1000);
+ break;
+ case 3:
+ CopyToBgTilemapBuffer(3, gUnknown_08C16FA8, 0, 0);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 4:
+ CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
+ CopyBgTilemapBufferToVram(2);
+ DmaCopy32Defvars(3, gContestResources->field_24[2], shared18000.unk18A04, 0x800);
+ break;
+ case 5:
+ LoadCompressedPalette(gUnknown_08C16E90, 0, 0x200);
+ CpuCopy32(gPlttBufferUnfaded + 128, sp0, 16 * sizeof(u16));
+ CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16));
+ CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
+ CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200);
+ sub_80D782C();
+ break;
+ case 6:
+ sub_80DD04C();
+ sub_80DBF90();
+ sub_80DB2BC();
+ gContestResources->field_0->unk19216 = sub_80DB120();
+ sub_80DC2BC();
+ sub_80DC4F0();
+ sub_80DC594();
+ sub_80DC5E8();
+ sub_80DC7EC();
+ gBattlerPositions[0] = 0;
+ gBattlerPositions[1] = 1;
+ gBattlerPositions[2] = 3;
+ gBattlerPositions[3] = 2;
+ gBattleTypeFlags = 0;
+ gBattlerAttacker = 2;
+ gBattlerTarget = 3;
+ gBattlerSpriteIds[gBattlerAttacker] = sub_80DB0C4();
+ sub_80DEA20();
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ ShowBg(3);
+ ShowBg(2);
+ ShowBg(0);
+ ShowBg(1);
+ break;
+ default:
+ *a = 0;
+ return 1;
+ }
+
+ (*a)++;
+ return 0;
+}
+
+void sub_80D80C8(u8 taskId)
+{
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80D8108;
+ }
+}
+
+
+void sub_80D8108(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gTasks[taskId].data[1]++ <= 60)
+ break;
+ gTasks[taskId].data[1] = 0;
+ PlaySE12WithPanning(SE_C_MAKU_U, 0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if ((gBattle_BG1_Y += 7) <= 160)
+ break;
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ sub_80DE350();
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ {
+ u16 bg0Cnt = GetGpuReg(REG_OFFSET_BG0CNT);
+ u16 bg2Cnt = GetGpuReg(REG_OFFSET_BG2CNT);
+ ((struct BgCnt *)&bg0Cnt)->priority = 0;
+ ((struct BgCnt *)&bg2Cnt)->priority = 0;
+ SetGpuReg(REG_OFFSET_BG0CNT, bg0Cnt);
+ SetGpuReg(REG_OFFSET_BG2CNT, bg2Cnt);
+ sub_80DDB0C();
+ gTasks[taskId].data[0]++;
+ break;
+ }
+ case 4:
+ default:
+ if (gContestResources->field_0->unk1920A_6)
+ break;
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80D833C;
+ break;
+ }
+}
+
+void sub_80D823C(void)
+{
+ s32 i;
+
+ AnimateSprites();
+ RunTasks();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+
+ for (i = 0; i < 4; i++)
+ {
+ if ((sContestBgCopyFlags >> i) & 1)
+ CopyBgTilemapBufferToVram(i);
+ }
+ sContestBgCopyFlags = 0;
+}
+
+void vblank_cb_battle(void)
+{
+ SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X);
+ SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y);
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+ SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
+ SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X);
+ SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y);
+ SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
+ SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
+ SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H);
+ SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V);
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+void sub_80D833C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ sub_80DCD48();
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400);
+ ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ if (!sub_80DBCA8(gContestPlayerMonIndex))
+ StringCopy(gDisplayedStringBattle, gText_0827D507);
+ else
+ StringCopy(gDisplayedStringBattle, gText_0827D531);
+ sub_80DB89C();
+ StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!Contest_RunTextPrinters())
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80D8424;
+ }
+ }
+}
+
+void sub_80D8424(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (!sub_80DBCA8(gContestPlayerMonIndex))
+ {
+ sub_80DC490(TRUE);
+ gTasks[taskId].func = sub_80D8490;
+ }
+ else
+ {
+ gTasks[taskId].func = sub_80D8894;
+ }
+ }
+}
+
+void sub_80D8490(u8 taskId)
+{
+ u8 i;
+ u8 sp8[32];
+
+ gBattle_BG0_Y = 0xA0;
+ gBattle_BG2_Y = 0xA0;
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 move = gContestMons[gContestPlayerMonIndex].moves[i];
+ u8 *r5 = sp8;
+
+ if (gContestResources->field_4[gContestPlayerMonIndex].prevMove != MOVE_NONE
+ && sub_80DE1E8(gContestPlayerMonIndex)
+ && AreMovesContestCombo(gContestResources->field_4[gContestPlayerMonIndex].prevMove, move) != 0
+ && gContestResources->field_4[gContestPlayerMonIndex].hasJudgesAttention)
+ {
+ r5 = StringCopy(sp8, gText_ColorLightShadowDarkGrey);
+ }
+ else if (move != 0
+ && gContestResources->field_4[gContestPlayerMonIndex].prevMove == move
+ && gContestMoves[move].effect != CONTEST_EFFECT_REPETITION_NOT_BORING)
+ {
+ // Gray the text because it is a repeated move
+ r5 = StringCopy(sp8, gText_ColorBlue);
+ }
+ r5 = StringCopy(r5, gMoveNames[move]);
+
+ FillWindowPixelBuffer(i + 5, 0);
+ Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7);
+ }
+
+ sub_80D880C(gContestResources->field_0->playerMoveChoice);
+ prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ gTasks[taskId].func = sub_80D8610;
+}
+
+void sub_80D8610(u8 taskId)
+{
+ u8 numMoves = 0;
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gContestMons[gContestPlayerMonIndex].moves[i] != MOVE_NONE)
+ numMoves++;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = sub_80D8894;
+ }
+ else
+ {
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case B_BUTTON:
+ PlaySE(SE_SELECT);
+ sub_80DC490(FALSE);
+ ConvertIntToDecimalStringN(gStringVar1, gContestResources->field_0->turnNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ if (!sub_80DBCA8(gContestPlayerMonIndex))
+ StringCopy(gDisplayedStringBattle, gText_0827D507);
+ else
+ StringCopy(gDisplayedStringBattle, gText_0827D531);
+ sub_80DB89C();
+ StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
+ Contest_StartTextPrinter(gStringVar4, 0);
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ gTasks[taskId].func = sub_80D8424;
+ break;
+ case DPAD_LEFT:
+ case DPAD_RIGHT:
+ break;
+ case DPAD_UP:
+ sub_80D883C(gContestResources->field_0->playerMoveChoice);
+ if (gContestResources->field_0->playerMoveChoice == 0)
+ gContestResources->field_0->playerMoveChoice = numMoves - 1;
+ else
+ gContestResources->field_0->playerMoveChoice--;
+ sub_80D880C(gContestResources->field_0->playerMoveChoice);
+ prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ if (numMoves > 1)
+ PlaySE(SE_SELECT);
+ break;
+ case DPAD_DOWN:
+ sub_80D883C(gContestResources->field_0->playerMoveChoice);
+ if (gContestResources->field_0->playerMoveChoice == numMoves - 1)
+ gContestResources->field_0->playerMoveChoice = 0;
+ else
+ gContestResources->field_0->playerMoveChoice++;
+ sub_80D880C(gContestResources->field_0->playerMoveChoice);
+ prints_contest_move_description(gContestMons[gContestPlayerMonIndex].moves[gContestResources->field_0->playerMoveChoice]);
+ if (numMoves > 1)
+ PlaySE(SE_SELECT);
+ break;
+ }
+ }
+}
+
+void sub_80D880C(s8 a0)
+{
+ ContestBG_FillBoxWithIncrementingTile(2, 55, 0, 31 + a0 * 2, 2, 2, 17, 1);
+}
+
+void sub_80D883C(s8 a0)
+{
+ ContestBG_FillBoxWithIncrementingTile(2, 11, 0, 31 + a0 * 2, 2, 1, 17, 1);
+ ContestBG_FillBoxWithIncrementingTile(2, 11, 0, 32 + a0 * 2, 2, 1, 17, 1);
+}
+
+void sub_80D8894(u8 taskId)
+{
+ if (gIsLinkContest & 1)
+ {
+ u16 var = sub_80DB8B8(gContestPlayerMonIndex);
+ u8 taskId2;
+
+ gContestResources->field_4[gContestPlayerMonIndex].currMove = var;
+ taskId2 = CreateTask(sub_80FC9F8, 0);
+ SetTaskFuncWithFollowupFunc(taskId2, sub_80FC9F8, sub_80D892C);
+ gTasks[taskId].func = TaskDummy1;
+ sub_80DBF68();
+ sub_80DC490(FALSE);
+ }
+ else
+ {
+ sub_80DB918();
+ gTasks[taskId].func = sub_80D895C;
+ }
+}
+
+void sub_80D892C(u8 taskId)
+{
+ DestroyTask(taskId);
+ gTasks[gContestResources->field_0->mainTaskId].func = sub_80D895C;
+}
+
+void sub_80D895C(u8 taskId)
+{
+ s32 i;
+
+ sub_80DB89C();
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ sub_80DC490(FALSE);
+
+ for (i = 0; i < 4; i++)
+ {
+ FillWindowPixelBuffer(5 + i, 0);
+ PutWindowTilemap(5 + i);
+ CopyWindowToVram(5 + i, 2);
+ }
+ Contest_SetBgCopyFlags(0);
+
+ DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400);
+ LoadPalette(shared18000.unk18204, 0, 0x400);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80D8A04;
+}
+
+void sub_80D8A04(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] > 2)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (++gTasks[taskId].data[1] == 2)
+ {
+ sub_80DDBE8();
+ sub_80DE69C(1);
+ gTasks[taskId].func = sub_80D8A50;
+ }
+ }
+}
+
+void sub_80D8A50(u8 taskId)
+{
+ if (!gContestResources->field_0->unk1920A_6 && !gContestResources->field_0->unk1920B_1)
+ gTasks[taskId].func = sub_80D8A88;
+}
+
+void sub_80D8A88(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] > 19)
+ {
+ gContestResources->field_0->unk19214 = 0;
+ gContestResources->field_0->unk1921C = gRngValue;
+ if ((gIsLinkContest & 1) && sub_80DA8A4())
+ {
+ s32 i;
+
+ for (i = 0; i + gUnknown_02039F30 < 4; i++)
+ {
+ gContestResources->field_4[gUnknown_02039F30 + i].currMove = sub_80DB8B8(gUnknown_02039F30 + i);
+ }
+ }
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80D8B38;
+ }
+}
+
+void sub_80D8B38(u8 taskId)
+{
+ u8 spriteId;
+ s32 i;
+ u8 r6 = gContestResources->field_0->unk19215;
+ s8 r3;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sub_80DCD48();
+ for (i = 0; gContestResources->field_0->unk19214 != gContestResources->field_8->turnOrder[i]; i++)
+ ;
+ gContestResources->field_0->unk19215 = i;
+ r6 = gContestResources->field_0->unk19215;
+ if (gIsLinkContest & 1)
+ {
+ u8 taskId2;
+
+ gContestResources->field_0->unk1920B_2 = 1;
+ if (sub_80DA8A4())
+ sub_80DD080(gContestResources->field_0->unk19215);
+ taskId2 = CreateTask(sub_80FCC88, 0);
+ SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
+ sub_80DBF68();
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ sub_80DD080(gContestResources->field_0->unk19215);
+ gTasks[taskId].data[0] = 2;
+ }
+ return;
+ case 1:
+ if (!gContestResources->field_0->unk1920B_2)
+ gTasks[taskId].data[0] = 2;
+ return;
+ case 2:
+ sub_80DF080(r6);
+ sub_80DF750();
+ if (gContestResources->field_4[r6].numTurnsSkipped != 0
+ || gContestResources->field_4[r6].noMoreTurns)
+ {
+ gTasks[taskId].data[0] = 31;
+ }
+ else
+ {
+ sub_80DB89C();
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 3;
+ }
+ return;
+ case 3:
+ for (i = 0; i < 4; i++)
+ gBattleMonForms[i] = 0;
+ memset(gContestResources->field_18, 0, sizeof(*gContestResources->field_18));
+ sub_80DE9DC(gContestResources->field_0->unk19215);
+ spriteId = sub_80DB174(
+ gContestMons[gContestResources->field_0->unk19215].species,
+ gContestMons[gContestResources->field_0->unk19215].otId,
+ gContestMons[gContestResources->field_0->unk19215].personality,
+ gContestResources->field_0->unk19215);
+ gSprites[spriteId].pos2.x = 120;
+ gSprites[spriteId].callback = sub_80DA134;
+ gTasks[taskId].data[2] = spriteId;
+ gBattlerSpriteIds[gBattlerAttacker] = spriteId;
+ sub_80DCBE8(sub_80DC9EC(gContestResources->field_0->unk19215), FALSE);
+ gTasks[taskId].data[0] = 4;
+ return;
+ case 4:
+ spriteId = gTasks[taskId].data[2];
+ if (gSprites[spriteId].callback == SpriteCallbackDummy)
+ {
+ if (!gContestResources->field_14[r6].unk2_1)
+ gTasks[taskId].data[0] = 5;
+ }
+ return;
+ case 5:
+ if (gContestResources->field_4[r6].nervous)
+ {
+ gTasks[taskId].data[0] = 33;
+ }
+ else
+ {
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ if (gContestResources->field_4[r6].currMove < MOVES_COUNT)
+ StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ else
+ StringCopy(gStringVar2, gUnknown_08587F1C[gContestResources->field_4[r6].moveCategory]);
+ StringExpandPlaceholders(gStringVar4, gText_0827D55A);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0] = 6;
+ }
+ return;
+ case 6:
+ if (!Contest_RunTextPrinters())
+ {
+ gContestResources->field_0->unk1925E = 0;
+ gTasks[taskId].data[0] = 7;
+ }
+ return;
+ case 7:
+ {
+ u16 move = sub_80DE834(gContestResources->field_4[gContestResources->field_0->unk19215].currMove);
+
+ sub_80DE864(gContestResources->field_0->unk19215);
+ sub_80DE9DC(gContestResources->field_0->unk19215);
+ sub_80DEAA8(move);
+ DoMoveAnim(move);
+ gTasks[taskId].data[0] = 8;
+ }
+ return;
+ case 8:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80DE9B0(r6);
+ if (gContestResources->field_0->unk1925E != 0)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 9;
+ }
+ else
+ {
+ if (!gContestResources->field_4[r6].hasJudgesAttention)
+ sub_80DC674(r6);
+ sub_80DE12C();
+ gTasks[taskId].data[0] = 23;
+ }
+ }
+ return;
+ case 9:
+ if (gTasks[taskId].data[10]++ > 30)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 7;
+ }
+ return;
+ case 23:
+ gTasks[taskId].data[1] = 0;
+ if (gContestResources->field_4[r6].effectStringId != CONTEST_STRING_NONE)
+ {
+ sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId);
+ gContestResources->field_4[r6].effectStringId = CONTEST_STRING_NONE;
+ gTasks[taskId].data[0] = 24;
+ }
+ else
+ {
+ if (gContestResources->field_4[r6].effectStringId2 != CONTEST_STRING_NONE)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (i != r6 && gContestResources->field_4[i].effectStringId != CONTEST_STRING_NONE)
+ break;
+ }
+ if (i == 4)
+ {
+ sub_80DD45C(r6, gContestResources->field_4[r6].effectStringId2);
+ gContestResources->field_4[r6].effectStringId2 = CONTEST_STRING_NONE;
+ gTasks[taskId].data[0] = 24;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 48;
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 48;
+ }
+ }
+ return;
+ case 24:
+ if (!Contest_RunTextPrinters())
+ gTasks[taskId].data[0] = 23;
+ return;
+ case 48:
+ if (gContestResources->field_4[r6].turnOrderModAction == 1)
+ {
+ sub_80DD720(5);
+ }
+ else if (gContestResources->field_4[r6].turnOrderModAction == 2)
+ {
+ sub_80DD720(6);
+ }
+ else if (gContestResources->field_4[r6].turnOrderModAction == 3)
+ {
+ sub_80DD720(7);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 47;
+ return;
+ }
+ gTasks[taskId].data[0] = 49;
+ return;
+ case 49:
+ if (!gContestResources->field_0->unk1920A_4)
+ gTasks[taskId].data[0] = 47;
+ return;
+ case 47:
+ sub_80DE008(TRUE);
+ gTasks[taskId].data[0] = 12;
+ return;
+ case 12:
+ sub_80DC028(0, gContestResources->field_4[r6].appeal2, r6);
+ gTasks[taskId].data[0] = 13;
+ return;
+ case 13:
+ if (!gContestResources->field_14[gContestResources->field_0->unk19215].unk2_2)
+ gTasks[taskId].data[0] = 35;
+ return;
+ case 35:
+ if (gContestResources->field_4[r6].conditionMod == 1)
+ sub_80DD720(8);
+ gTasks[taskId].data[0] = 36;
+ return;
+ case 36:
+ if (!gContestResources->field_0->unk1920A_4)
+ gTasks[taskId].data[0] = 37;
+ return;
+ case 37:
+ if (sub_80DB5B8(r6, 1))
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 38;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 50;
+ }
+ return;
+ case 38:
+ if (++gTasks[taskId].data[10] > 20)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 50;
+ }
+ return;
+ case 50:
+ if (sub_80DB798(r6))
+ PlaySE(SE_C_PASI);
+ gTasks[taskId].data[0] = 25;
+ return;
+ case 25:
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0] = 26;
+ return;
+ case 26:
+ {
+ s32 r2 = 0;
+
+ r3 = 0;
+ for (i = gTasks[taskId].data[1]; i < 4; i++)
+ {
+ r3 = 0;
+ for (r2 = 0; r2 < 4; r2++)
+ {
+ if (r2 != r6 && gUnknown_02039F26[r2] == i
+ && gContestResources->field_4[r2].effectStringId != CONTEST_STRING_NONE)
+ {
+ r3 = 1;
+ break;
+ }
+ }
+ if (r3 != 0)
+ break;
+ }
+ if (r3)
+ {
+ gTasks[taskId].data[1] = gUnknown_02039F26[r2];
+ sub_80DD45C(r2, gContestResources->field_4[r2].effectStringId);
+ gContestResources->field_4[r2].effectStringId = CONTEST_STRING_NONE;
+ gTasks[taskId].data[0] = 27;
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 51;
+ sub_80DB884();
+ }
+ }
+ return;
+ case 27:
+ if (!Contest_RunTextPrinters())
+ gTasks[taskId].data[0] = 28;
+ return;
+ case 28:
+ for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ ;
+ sub_80DC028(gContestResources->field_4[i].appeal2 + gContestResources->field_4[i].jam, -gContestResources->field_4[i].jam, i);
+ gTasks[taskId].data[0] = 29;
+ return;
+ case 29:
+ for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ ;
+ if (!gContestResources->field_14[i].unk2_2)
+ gTasks[taskId].data[0] = 39;
+ return;
+ case 39:
+ for (i = 0; gTasks[taskId].data[1] != gUnknown_02039F26[i]; i++)
+ ;
+ if (sub_80DB5B8(i, 1))
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 40;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 30;
+ }
+ return;
+ case 40:
+ if (++gTasks[taskId].data[10] > 20)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 30;
+ }
+ return;
+ case 30:
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_02039F26[i] == gTasks[taskId].data[1])
+ break;
+ }
+ if (sub_80DB798(i))
+ PlaySE(SE_C_PASI);
+ else
+ PlaySE(SE_C_SYU);
+ if (gContestResources->field_4[i].judgesAttentionWasRemoved)
+ {
+ sub_80DC674(i);
+ gContestResources->field_4[i].judgesAttentionWasRemoved = 0;
+ }
+ gTasks[taskId].data[1]++;
+ gTasks[taskId].data[0] = 26;
+ return;
+ case 51:
+ if (gTasks[taskId].data[10]++ > 9)
+ {
+ gTasks[taskId].data[10] = 0;
+ if (gContestResources->field_4[r6].numTurnsSkipped != 0
+ || gContestResources->field_4[r6].turnSkipped)
+ {
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ StringExpandPlaceholders(gStringVar4, gText_0827E793);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ }
+ gTasks[taskId].data[0] = 52;
+ }
+ return;
+ case 52:
+ if (!Contest_RunTextPrinters())
+ {
+ if (!gContestResources->field_4[r6].unk15_6)
+ gTasks[taskId].data[0] = 17;
+ else
+ gTasks[taskId].data[0] = 14;
+ }
+ return;
+ case 14:
+ r3 = gContestResources->field_4[r6].unk16;
+ if (gContestResources->field_4[r6].unk16 != 0)
+ {
+ sub_80DB89C();
+ if (r3 == 1)
+ Contest_StartTextPrinter(gText_0827E32E, 1);
+ else if (r3 == 2)
+ Contest_StartTextPrinter(gText_0827E35B, 1);
+ else
+ Contest_StartTextPrinter(gText_0827E38D, 1);
+ sub_80DD720(3);
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 45;
+ }
+ else
+ {
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ StringExpandPlaceholders(gStringVar4, gText_0827E2FE);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ sub_80DD720(2);
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 45;
+ }
+ return;
+ case 45:
+ if (!gContestResources->field_0->unk1920A_4)
+ {
+ sub_80DC9B4(gContestResources->field_0->unk19215);
+ gTasks[taskId].data[0] = 15;
+ }
+ return;
+ case 15:
+ if (!Contest_RunTextPrinters())
+ {
+ if (++gTasks[taskId].data[10] > 50)
+ {
+ if (!gContestResources->field_4[r6].hasJudgesAttention)
+ {
+ sub_80DC028(
+ gContestResources->field_4[r6].appeal2,
+ gContestResources->field_4[r6].unk17,
+ r6);
+ gContestResources->field_4[r6].appeal2 += gContestResources->field_4[r6].unk17;
+ }
+ gTasks[taskId].data[0] = 16;
+ }
+ }
+ return;
+ case 16:
+ if (!gContestResources->field_14[r6].unk2_2)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 17;
+ }
+ return;
+ case 17:
+ if (gContestResources->field_4[r6].disappointedRepeat)
+ {
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ StringExpandPlaceholders(gStringVar4, gText_0827E6E3);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[10] = 0;
+ sub_80DD720(0);
+ gTasks[taskId].data[0] = 46;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 41;
+ }
+ return;
+ case 46:
+ if (!gContestResources->field_0->unk1920A_4)
+ gTasks[taskId].data[0] = 19;
+ return;
+ case 19:
+ if (!Contest_RunTextPrinters())
+ {
+ sub_80DC028(gContestResources->field_4[r6].appeal2, -gContestResources->field_4[r6].unk18, r6);
+ gContestResources->field_4[r6].appeal2 -= gContestResources->field_4[r6].unk18;
+ gTasks[taskId].data[0] = 18;
+ }
+ return;
+ case 18:
+ sub_80DCD48();
+ if (!gContestResources->field_14[r6].unk2_2)
+ {
+ gTasks[taskId].data[10] = 0;
+ sub_80DB89C();
+ gTasks[taskId].data[0] = 41;
+ }
+ return;
+ case 41:
+ if (gContestResources->field_10->excitementFrozen && r6 != gContestResources->field_10->excitementFreezer)
+ {
+ gTasks[taskId].data[0] = 57;
+ }
+ else
+ {
+ r3 = gContestResources->field_10->bits_0;
+ if (gContestResources->field_4[r6].overrideCategoryExcitementMod)
+ {
+ r3 = 1;
+ StringCopy(gStringVar3, gMoveNames[gContestResources->field_4[r6].currMove]);
+ }
+ else
+ {
+ StringCopy(gStringVar3, gUnknown_08587F08[gContestMoves[gContestResources->field_4[r6].currMove].contestCategory]);
+ }
+ if (r3 > 0)
+ {
+ if (gContestResources->field_4[r6].disappointedRepeat)
+ r3 = 0;
+ }
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ gContestResources->field_0->applauseLevel += r3;
+ if (gContestResources->field_0->applauseLevel < 0)
+ gContestResources->field_0->applauseLevel = 0;
+ if (r3 == 0)
+ {
+ gTasks[taskId].data[0] = 55;
+ }
+ else
+ {
+ if (r3 < 0)
+ StringExpandPlaceholders(gStringVar4, gText_0827E73C);
+ else if (r3 > 0 && gContestResources->field_0->applauseLevel <= 4)
+ StringExpandPlaceholders(gStringVar4, gText_0827E717);
+ else
+ StringExpandPlaceholders(gStringVar4, gText_0827E76A);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = 0;
+ if (r3 < 0)
+ gTasks[taskId].data[0] = 53;
+ else
+ gTasks[taskId].data[0] = 54;
+ }
+ }
+ return;
+ case 53:
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ sub_80DDED0(-1, 1);
+ PlayFanfare(MUS_ME_ZANNEN);
+ gTasks[taskId].data[10]++;
+ break;
+ case 1:
+ if (!gContestResources->field_0->unk1920B_0 && !Contest_RunTextPrinters())
+ {
+ sub_80DDCDC(-1);
+ gTasks[taskId].data[10]++;
+ }
+ break;
+ case 2:
+ if (!gContestResources->field_0->unk1920A_5)
+ {
+ if (gTasks[taskId].data[11]++ > 29)
+ {
+ gTasks[taskId].data[11] = 0;
+ sub_80DDED0(-1, -1);
+ gTasks[taskId].data[10]++;
+ }
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[0] = 43;
+ }
+ break;
+ }
+ return;
+ case 54:
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ if (!Contest_RunTextPrinters())
+ {
+ sub_80DDED0(1, 1);
+ gTasks[taskId].data[10]++;
+ }
+ break;
+ case 1:
+ if (!gContestResources->field_0->unk1920B_0)
+ {
+ sub_80DDE0C();
+ PlaySE(SE_W227B);
+ sub_80DDCDC(1);
+ gTasks[taskId].data[10]++;
+ }
+ break;
+ case 2:
+ if (!gContestResources->field_0->unk1920A_5)
+ {
+ if (gTasks[taskId].data[11]++ > 29)
+ {
+ gTasks[taskId].data[11] = 0;
+ sub_80DC028(gContestResources->field_4[r6].appeal2, gContestResources->field_10->unk2, r6);
+ gContestResources->field_4[r6].appeal2 += gContestResources->field_10->unk2;
+ gTasks[taskId].data[10]++;
+ }
+ }
+ break;
+ case 3:
+ if (!gContestResources->field_14[r6].unk2_2)
+ {
+ if (!gContestResources->field_0->unk1920A_7)
+ {
+ sub_80DDED0(1, -1);
+ gTasks[taskId].data[10]++;
+ }
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11] = 0;
+ gTasks[taskId].data[0] = 43;
+ }
+ break;
+ }
+ return;
+ case 43:
+ if (!gContestResources->field_14[r6].unk2_2)
+ {
+ sub_80DB89C();
+ gTasks[taskId].data[0] = 55;
+ }
+ return;
+ case 57:
+ sub_80DB89C();
+ StringCopy(gStringVar3, gContestMons[gContestResources->field_10->excitementFreezer].nickname);
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringExpandPlaceholders(gStringVar4, gText_0827E7EA);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0] = 58;
+ return;
+ case 58:
+ if (!Contest_RunTextPrinters())
+ {
+ sub_80DB89C();
+ StringExpandPlaceholders(gStringVar4, gText_0827E817);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0] = 59;
+ }
+ return;
+ case 59:
+ if (!Contest_RunTextPrinters())
+ {
+ sub_80DB89C();
+ gTasks[taskId].data[0] = 55;
+ }
+ return;
+ case 33:
+ if (gContestResources->field_4[r6].hasJudgesAttention)
+ gContestResources->field_4[r6].hasJudgesAttention = 0;
+ sub_80DC9B4(r6);
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ StringCopy(gStringVar2, gMoveNames[gContestResources->field_4[r6].currMove]);
+ StringExpandPlaceholders(gStringVar4, gText_0827E58A);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0] = 34;
+ return;
+ case 34:
+ if (!Contest_RunTextPrinters())
+ gTasks[taskId].data[0] = 55;
+ return;
+ case 55:
+ sub_80DDBE8();
+ gTasks[taskId].data[0] = 56;
+ return;
+ case 56:
+ if (!gContestResources->field_0->unk1920A_6)
+ {
+ if (gContestResources->field_0->applauseLevel > 4)
+ {
+ gContestResources->field_0->applauseLevel = 0;
+ sub_80DD940();
+ }
+ gTasks[taskId].data[0] = 10;
+ }
+ return;
+ case 10:
+ spriteId = gTasks[taskId].data[2];
+ gSprites[spriteId].callback = sub_80DA164;
+ gTasks[taskId].data[0] = 11;
+ return;
+ case 11:
+ spriteId = gTasks[taskId].data[2];
+ if (gSprites[spriteId].invisible)
+ {
+ FreeSpriteOamMatrix(&gSprites[spriteId]);
+ DestroySprite(&gSprites[spriteId]);
+ gTasks[taskId].data[0] = 20;
+ }
+ return;
+ case 20:
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 21;
+ return;
+ case 31:
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[r6].nickname);
+ StringExpandPlaceholders(gStringVar4, gText_0827D56F);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0] = 32;
+ return;
+ case 32:
+ if (!Contest_RunTextPrinters())
+ gTasks[taskId].data[0] = 21;
+ return;
+ case 21:
+ if (++gTasks[taskId].data[10] > 29)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 22;
+ }
+ return;
+ case 22:
+ if (++gContestResources->field_0->unk19214 == 4)
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_80DA198;
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 0;
+ }
+ return;
+ }
+}
+
+void sub_80DA110(u8 taskId)
+{
+ sContest.unk1920B_2 = 0;
+ DestroyTask(taskId);
+}
+
+void sub_80DA134(struct Sprite *sprite)
+{
+ if (sprite->pos2.x != 0)
+ {
+ sprite->pos2.x -= 2;
+ }
+ else
+ {
+ if (++sprite->data[0] == 31)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ }
+}
+
+void sub_80DA164(struct Sprite *sprite)
+{
+ sprite->pos2.x -= 6;
+ if (sprite->pos1.x + sprite->pos2.x < -32)
+ {
+ sprite->callback = SpriteCallbackDummy;
+ sprite->invisible = TRUE;
+ }
+}
+
+void sub_80DA198(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gIsLinkContest & 1)
+ {
+ u8 taskId2;
+
+ sContest.unk1920B_2 = 1;
+ if (sub_80DA8A4())
+ {
+ sub_80DB944();
+ sub_80DBA18();
+ }
+ taskId2 = CreateTask(sub_80FCC88, 0);
+ SetTaskFuncWithFollowupFunc(taskId2, sub_80FCC88, sub_80DA110);
+ sub_80DBF68();
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ sub_80DB944();
+ sub_80DBA18();
+ gTasks[taskId].data[0] = 2;
+ }
+ break;
+ case 1:
+ if (!sContest.unk1920B_2)
+ gTasks[taskId].data[0] = 2;
+ break;
+ case 2:
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80DA25C;
+ break;
+ }
+}
+
+void sub_80DA25C(u8 taskId)
+{
+ sub_80DE008(FALSE);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80DA28C;
+}
+
+void sub_80DA28C(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (++gTasks[taskId].data[1] > 20)
+ {
+ sub_80DE69C(2);
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 1:
+ if (!sContest.unk1920B_1)
+ {
+ if (++gTasks[taskId].data[1] > 20)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ }
+ break;
+ case 2:
+ sub_80DC3AC();
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].func = sub_80DA31C;
+ break;
+ }
+}
+
+void sub_80DA31C(u8 taskId)
+{
+ if (sub_80DC3C4())
+ gTasks[taskId].func = sub_80DA348;
+}
+
+void sub_80DA348(u8 taskId)
+{
+ DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 0x400);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 2;
+ gTasks[taskId].func = sub_80DA38C;
+}
+
+void sub_80DA38C(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] > 2)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (--gTasks[taskId].data[1] == 0)
+ gTasks[taskId].func = sub_80DA3CC;
+ }
+}
+
+void sub_80DA3CC(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel;
+
+ sub_80DB89C();
+ StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname);
+ StringExpandPlaceholders(gStringVar4, gUnknown_08587D90[r4]);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (!Contest_RunTextPrinters())
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80DA464;
+ sub_80DCD48();
+ }
+ }
+}
+
+void sub_80DA464(u8 taskId)
+{
+ if (gTasks[taskId].data[0]++ > 29)
+ {
+ gTasks[taskId].data[0] = 0;
+ sub_80DC3AC();
+ gTasks[taskId].func = sub_80DA49C;
+ }
+}
+
+void sub_80DA49C(u8 taskId)
+{
+ if (sub_80DC3C4())
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80DA4CC;
+ }
+}
+
+void sub_80DA4CC(u8 taskId)
+{
+ sub_80DE224();
+ gTasks[taskId].func = sub_80DE424;
+}
+
+void sub_80DA4F4(u8 taskId)
+{
+ sub_80DE350();
+ gTasks[taskId].func = sub_80DA51C;
+}
+
+void sub_80DA51C(u8 taskId)
+{
+ vu16 sp0 = GetGpuReg(REG_OFFSET_BG0CNT);
+ vu16 sp2 = GetGpuReg(REG_OFFSET_BG2CNT);
+ ((vBgCnt *)&sp0)->priority = 0;
+ ((vBgCnt *)&sp2)->priority = 0;
+ SetGpuReg(REG_OFFSET_BG0CNT, sp0);
+ SetGpuReg(REG_OFFSET_BG2CNT, sp2);
+ sContest.turnNumber++;
+ if (sContest.turnNumber == 5)
+ {
+ gTasks[taskId].func = sub_80DA5E8;
+ }
+ else
+ {
+ sub_80DDB0C();
+ gTasks[taskId].func = sub_80DA5B4;
+ }
+}
+
+void sub_80DA5B4(u8 taskId)
+{
+ if (!sContest.unk1920A_6)
+ gTasks[taskId].func = sub_80D833C;
+}
+
+void sub_80DA5E8(u8 taskId)
+{
+ s32 i;
+
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ for (i = 0; i < 4; i++)
+ gUnknown_02039F10[i] = sContestantStatus[i].unk4;
+ sub_80DBD18();
+ sub_80DB89C();
+ if (!(gIsLinkContest & 1))
+ BravoTrainerPokemonProfile_BeforeInterview1(sContestantStatus[gContestPlayerMonIndex].prevMove);
+ else
+ {
+ sub_80DF250();
+ sub_80DF4F8();
+ sub_80DF750();
+ }
+ gContestRngValue = gRngValue;
+ StringExpandPlaceholders(gStringVar4, gText_0827D597);
+ Contest_StartTextPrinter(gStringVar4, 1);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_80DA6B4;
+}
+
+void sub_80DA6B4(u8 taskId)
+{
+ if (!Contest_RunTextPrinters())
+ {
+ sub_80DE224();
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 160;
+ PlaySE12WithPanning(SE_C_MAKU_D, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_80DA700;
+ }
+}
+
+void sub_80DA700(u8 taskId)
+{
+ gBattle_BG1_Y -= 7;
+ if (gBattle_BG1_Y < 0)
+ gBattle_BG1_Y = 0;
+ if (*(u16 *)&gBattle_BG1_Y == 0) // Why cast?
+ {
+ gTasks[taskId].func = sub_80DA740;
+ gTasks[taskId].data[0] = 0;
+ }
+}
+
+void sub_80DA740(u8 taskId)
+{
+ if (gTasks[taskId].data[0]++ >= 50)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (gIsLinkContest & 1)
+ {
+ gTasks[taskId].func = sub_80DA7A0;
+ }
+ else
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_80DA830;
+ }
+ }
+}
+
+void sub_80DA7A0(u8 taskId)
+{
+ u8 taskId2 = CreateTask(sub_80FCACC, 0);
+
+ SetTaskFuncWithFollowupFunc(taskId2, sub_80FCACC, sub_80DA7EC);
+ gTasks[taskId].func = TaskDummy1;
+ sub_80DBF68();
+ sub_80DC490(FALSE);
+}
+
+void sub_80DA7EC(u8 taskId)
+{
+ DestroyTask(taskId);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[sContest.mainTaskId].func = sub_80DA830;
+}
+
+void sub_80DA830(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ gFieldCallback = sub_80DA874;
+ FreeAllWindowBuffers();
+ sub_80D7A5C();
+ FreeMonSpritesGfx();
+ SetMainCallback2(CB2_ReturnToField);
+ }
+}
+
+void sub_80DA874(void)
+{
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+}
+
+void sub_80DA884(void)
+{
+ if (!(gIsLinkContest & 1))
+ gContestPlayerMonIndex = 3;
+}
+
+bool8 sub_80DA8A4(void)
+{
+ if (gContestPlayerMonIndex == gUnknown_02039F2B)
+ return TRUE;
+ return FALSE;
+}
+
+
+void sub_80DA8C8(u8 partyIndex)
+{
+ u8 name[20];
+ u16 heldItem;
+ s16 cool;
+ s16 beauty;
+ s16 cute;
+ s16 smart;
+ s16 tough;
+
+ StringCopy(name, gSaveBlock2Ptr->playerName);
+ if (gIsLinkContest & 1)
+ {
+ sub_80DF9D4(name);
+ }
+ memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8);
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_BRENDAN;
+ else
+ gContestMons[gContestPlayerMonIndex].trainerGfxId = EVENT_OBJ_GFX_LINK_MAY;
+ gContestMons[gContestPlayerMonIndex].flags = 0;
+ gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
+ gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
+ GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name);
+ StringGetEnd10(name);
+ if (gIsLinkContest & 1)
+ {
+ sub_80DF9E0(name, GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE));
+ }
+ memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, POKEMON_NAME_LENGTH + 1);
+ StringCopy(gContestMons[gContestPlayerMonIndex].nickname, name);
+ gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[partyIndex], MON_DATA_COOL);
+ gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[partyIndex], MON_DATA_BEAUTY);
+ gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[partyIndex], MON_DATA_CUTE);
+ gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SMART);
+ gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TOUGH);
+ gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SHEEN);
+ gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1);
+ gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE2);
+ gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE3);
+ gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE4);
+ gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY);
+ gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID);
+
+ heldItem = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM);
+ cool = gContestMons[gContestPlayerMonIndex].cool;
+ beauty = gContestMons[gContestPlayerMonIndex].beauty;
+ cute = gContestMons[gContestPlayerMonIndex].cute;
+ smart = gContestMons[gContestPlayerMonIndex].smart;
+ tough = gContestMons[gContestPlayerMonIndex].tough;
+ if (heldItem == ITEM_RED_SCARF)
+ cool += 20;
+ else if (heldItem == ITEM_BLUE_SCARF)
+ beauty += 20;
+ else if (heldItem == ITEM_PINK_SCARF)
+ cute += 20;
+ else if (heldItem == ITEM_GREEN_SCARF)
+ smart += 20;
+ else if (heldItem == ITEM_YELLOW_SCARF)
+ tough += 20;
+ if (cool > 255)
+ cool = 255;
+ if (beauty > 255)
+ beauty = 255;
+ if (cute > 255)
+ cute = 255;
+ if (smart > 255)
+ smart = 255;
+ if (tough > 255)
+ tough = 255;
+ gContestMons[gContestPlayerMonIndex].cool = cool;
+ gContestMons[gContestPlayerMonIndex].beauty = beauty;
+ gContestMons[gContestPlayerMonIndex].cute = cute;
+ gContestMons[gContestPlayerMonIndex].smart = smart;
+ gContestMons[gContestPlayerMonIndex].tough = tough;
+}
+
+void sub_80DAB8C(u8 contestType, u8 rank)
+{
+ s32 i;
+ u8 opponentsCount = 0;
+ u8 opponents[100];
+ bool8 r7 = FALSE;
+ const u8 * r3;
+
+ sub_80DA884();
+
+ if (FlagGet(FLAG_SYS_GAME_CLEAR) && !(gIsLinkContest & 1))
+ r7 = TRUE;
+
+ // Find all suitable opponents
+ r3 = gUnknown_085898A4;
+ for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++)
+ {
+ if (rank == gContestOpponents[i].whichRank)
+ {
+ if (r7 == TRUE)
+ {
+ if (r3[i] == 1)
+ continue;
+ }
+ else
+ {
+ if (r3[i] == 2)
+ continue;
+ }
+ if (contestType == CONTEST_CATEGORY_COOL && gContestOpponents[i].aiPool_Cool)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_BEAUTY && gContestOpponents[i].aiPool_Beauty)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_CUTE && gContestOpponents[i].aiPool_Cute)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_SMART && gContestOpponents[i].aiPool_Smart)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_TOUGH && gContestOpponents[i].aiPool_Tough)
+ opponents[opponentsCount++] = i;
+ }
+ }
+ opponents[opponentsCount] = 0xFF;
+
+ // Choose three random opponents from the list
+ for (i = 0; i < 3; i++)
+ {
+ u16 rnd = Random() % opponentsCount;
+ s32 j;
+
+ gContestMons[i] = gContestOpponents[opponents[rnd]];
+ for (j = rnd; opponents[j] != 0xFF; j++)
+ opponents[j] = opponents[j + 1];
+ opponentsCount--;
+ }
+
+ sub_80DA8C8(gUnknown_02039F24);
+}
+
+#ifdef NONMATCHING
+void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
+{
+ s32 i;
+ u8 opponentsCount = 0;
+ u8 opponents[100];
+ const u8 * r6;
+
+ if (gUnknown_02039F30 == 4)
+ return;
+
+ r6 = gUnknown_085898A4;
+ for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++)
+ {
+ if (rank != gContestOpponents[i].whichRank)
+ continue;
+ if (isPostgame == TRUE)
+ {
+ if (r6[i] == 1)
+ continue;
+ }
+ else
+ {
+ if (r6[i] == 2)
+ continue;
+ }
+ if (contestType == CONTEST_CATEGORY_COOL && gContestOpponents[i].aiPool_Cool)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_BEAUTY && gContestOpponents[i].aiPool_Beauty)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_CUTE && gContestOpponents[i].aiPool_Cute)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_SMART && gContestOpponents[i].aiPool_Smart)
+ opponents[opponentsCount++] = i;
+ else if (contestType == CONTEST_CATEGORY_TOUGH && gContestOpponents[i].aiPool_Tough)
+ opponents[opponentsCount++] = i;
+ }
+ opponents[opponentsCount] = 0xFF;
+ for (i = 0; i < 4 - gUnknown_02039F30; i++)
+ {
+ u16 rnd = sub_80F903C() % opponentsCount;
+ s32 j;
+
+ gContestMons[gUnknown_02039F30 + i] = gContestOpponents[opponents[rnd]];
+ sub_80DF9D4(gContestMons[gUnknown_02039F30 + i].trainerName);
+ sub_80DF9E0(gContestMons[gUnknown_02039F30 + i].nickname, GAME_LANGUAGE);
+ for (j = rnd; opponents[j] != 0xFF; j++)
+ opponents[j] = opponents[j + 1];
+ opponentsCount--;
+ }
+}
+#else
+NAKED void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tsub sp, 0x64\n"
+ "\tmov r8, r2\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r2, r1, 24\n"
+ "\tmovs r7, 0\n"
+ "\tldr r0, =gUnknown_02039F30\n"
+ "\tldrb r1, [r0]\n"
+ "\tmov r9, r0\n"
+ "\tcmp r1, 0x4\n"
+ "\tbne _080DACDE\n"
+ "\tb _080DADF6\n"
+ "_080DACDE:\n"
+ "\tmovs r5, 0\n"
+ "\tldr r3, =gContestOpponents\n"
+ "\tldr r6, =gUnknown_085898A4\n"
+ "_080DACE4:\n"
+ "\tldrb r0, [r3, 0x1C]\n"
+ "\tlsls r0, 30\n"
+ "\tlsrs r0, 30\n"
+ "\tcmp r2, r0\n"
+ "\tbne _080DAD56\n"
+ "\tmov r0, r8\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _080DAD08\n"
+ "\tldrb r0, [r6]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _080DAD56\n"
+ "\tb _080DAD0E\n"
+ "\t.pool\n"
+ "_080DAD08:\n"
+ "\tldrb r0, [r6]\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _080DAD56\n"
+ "_080DAD0E:\n"
+ "\tcmp r4, 0\n"
+ "\tbne _080DAD1A\n"
+ "\tldrb r0, [r3, 0x1C]\n"
+ "\tlsls r0, 29\n"
+ "\tcmp r0, 0\n"
+ "\tblt _080DAD4A\n"
+ "_080DAD1A:\n"
+ "\tcmp r4, 0x1\n"
+ "\tbne _080DAD26\n"
+ "\tldrb r0, [r3, 0x1C]\n"
+ "\tlsls r0, 28\n"
+ "\tcmp r0, 0\n"
+ "\tblt _080DAD4A\n"
+ "_080DAD26:\n"
+ "\tcmp r4, 0x2\n"
+ "\tbne _080DAD32\n"
+ "\tldrb r0, [r3, 0x1C]\n"
+ "\tlsls r0, 27\n"
+ "\tcmp r0, 0\n"
+ "\tblt _080DAD4A\n"
+ "_080DAD32:\n"
+ "\tcmp r4, 0x3\n"
+ "\tbne _080DAD3E\n"
+ "\tldrb r0, [r3, 0x1C]\n"
+ "\tlsls r0, 26\n"
+ "\tcmp r0, 0\n"
+ "\tblt _080DAD4A\n"
+ "_080DAD3E:\n"
+ "\tcmp r4, 0x4\n"
+ "\tbne _080DAD56\n"
+ "\tldrb r0, [r3, 0x1C]\n"
+ "\tlsls r0, 25\n"
+ "\tcmp r0, 0\n"
+ "\tbge _080DAD56\n"
+ "_080DAD4A:\n"
+ "\tadds r0, r7, 0\n"
+ "\tadds r1, r0, 0x1\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r7, r1, 24\n"
+ "\tadd r0, sp\n"
+ "\tstrb r5, [r0]\n"
+ "_080DAD56:\n"
+ "\tadds r3, 0x40\n"
+ "\tadds r6, 0x1\n"
+ "\tadds r5, 0x1\n"
+ "\tcmp r5, 0x5F\n"
+ "\tbls _080DACE4\n"
+ "\tmov r3, sp\n"
+ "\tadds r1, r3, r7\n"
+ "\tmovs r0, 0xFF\n"
+ "\tstrb r0, [r1]\n"
+ "\tmovs r5, 0\n"
+ "\tmov r0, r9\n"
+ "\tldrb r1, [r0]\n"
+ "\tmovs r0, 0x4\n"
+ "\tsubs r0, r1\n"
+ "\tcmp r5, r0\n"
+ "\tbge _080DADF6\n"
+ "\tldr r3, =gContestMons\n"
+ "\tmov r8, r3\n"
+ "\tmov r6, r9\n"
+ "\tmovs r0, 0x2\n"
+ "\tadd r0, r8\n"
+ "\tmov r9, r0\n"
+ "_080DAD82:\n"
+ "\tbl sub_80F903C\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tadds r1, r7, 0\n"
+ "\tbl __modsi3\n"
+ "\tadds r1, r0, 0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tldrb r0, [r6]\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 6\n"
+ "\tadd r0, r8\n"
+ "\tldr r2, =gContestOpponents\n"
+ "\tmov r3, sp\n"
+ "\tadds r4, r3, r1\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r1, 6\n"
+ "\tadds r1, r2\n"
+ "\tmovs r2, 0x40\n"
+ "\tbl memcpy\n"
+ "\tldrb r0, [r6]\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 6\n"
+ "\tmov r1, r8\n"
+ "\tadds r1, 0xD\n"
+ "\tadds r0, r1\n"
+ "\tbl sub_80DF9D4\n"
+ "\tldrb r0, [r6]\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 6\n"
+ "\tadd r0, r9\n"
+ "\tmovs r1, 0x2\n"
+ "\tbl sub_80DF9E0\n"
+ "\tldrb r0, [r4]\n"
+ "\tadds r3, r5, 0x1\n"
+ "\tsubs r1, r7, 0x1\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _080DADE6\n"
+ "\tadds r2, r4, 0\n"
+ "_080DADDA:\n"
+ "\tldrb r0, [r2, 0x1]\n"
+ "\tstrb r0, [r2]\n"
+ "\tadds r2, 0x1\n"
+ "\tldrb r0, [r2]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _080DADDA\n"
+ "_080DADE6:\n"
+ "\tlsls r0, r1, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tadds r5, r3, 0\n"
+ "\tldrb r1, [r6]\n"
+ "\tmovs r0, 0x4\n"
+ "\tsubs r0, r1\n"
+ "\tcmp r5, r0\n"
+ "\tblt _080DAD82\n"
+ "_080DADF6:\n"
+ "\tadd sp, 0x64\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.pool");
+}
+#endif
+
+// GetContestAvailability?
+u8 sub_80DAE0C(struct Pokemon *pkmn)
+{
+ u8 ribbon;
+ u8 retVal;
+
+ if (GetMonData(pkmn, MON_DATA_IS_EGG))
+ return 3;
+ if (GetMonData(pkmn, MON_DATA_HP) == 0)
+ return 4;
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON);
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON);
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON);
+ break;
+ case CONTEST_CATEGORY_SMART:
+ ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON);
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON);
+ break;
+ default:
+ return 0;
+ }
+
+ // Couldn't get this to match any other way.
+ // Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below
+ // the current contest rank.
+ if (ribbon > gSpecialVar_ContestRank)
+ retVal = 2;
+ else if (ribbon >= gSpecialVar_ContestRank)
+ retVal = 1;
+ else
+ retVal = 0;
+ return retVal;
+}
+
+void sub_80DAEA4(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ FillWindowPixelBuffer(gUnknown_02039F26[i], 0);
+ sub_80DAF04(i);
+ sub_80DAF88(i);
+ }
+}
+
+u8 * sub_80DAED4(const u8 * src, u8 color)
+{
+ u8 * ptr = StringCopy(gDisplayedStringBattle, gText_ColorTransparent);
+ ptr[-1] = color;
+ ptr = StringCopy(ptr, src);
+
+ return ptr;
+}
+
+void sub_80DAF04(u8 a0)
+{
+ sub_80DAF1C(a0, a0 + 10);
+}
+
+void sub_80DAF1C(u8 a0, u8 a1)
+{
+ u8 buffer[32];
+ s32 offset;
+
+ StringCopy(buffer, gText_Slash);
+ StringAppend(buffer, gContestMons[a0].trainerName);
+ sub_80DAED4(buffer, a1);
+ offset = GetStringRightAlignXOffset(7, gDisplayedStringBattle, 0x60);
+ if (offset > 55)
+ offset = 55;
+ Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, offset, 1, 7);
+}
+
+void sub_80DAF88(u8 a0)
+{
+ sub_80DAFA0(a0, a0 + 10);
+}
+
+void sub_80DAFA0(u8 a0, u8 a1)
+{
+ sub_80DAED4(gContestMons[a0].nickname, a1);
+ Contest_PrintTextToBg0WindowAt(gUnknown_02039F26[a0], gDisplayedStringBattle, 5, 1, 7);
+}
+
+u16 sub_80DAFE0(u8 who, u8 contestCategory)
+{
+ u8 statMain;
+ u8 statSub1;
+ u8 statSub2;
+
+ switch (contestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ statMain = gContestMons[who].cool;
+ statSub1 = gContestMons[who].tough;
+ statSub2 = gContestMons[who].beauty;
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ statMain = gContestMons[who].beauty;
+ statSub1 = gContestMons[who].cool;
+ statSub2 = gContestMons[who].cute;
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ statMain = gContestMons[who].cute;
+ statSub1 = gContestMons[who].beauty;
+ statSub2 = gContestMons[who].smart;
+ break;
+ case CONTEST_CATEGORY_SMART:
+ statMain = gContestMons[who].smart;
+ statSub1 = gContestMons[who].cute;
+ statSub2 = gContestMons[who].tough;
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ default:
+ statMain = gContestMons[who].tough;
+ statSub1 = gContestMons[who].smart;
+ statSub2 = gContestMons[who].cool;
+ break;
+ }
+ return statMain + (statSub1 + statSub2 + gContestMons[who].sheen) / 2;
+}
+
+void sub_80DB09C(u8 a0)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ gContestMonConditions[i] = sub_80DAFE0(i, a0);
+}
+
+u8 sub_80DB0C4(void)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPic(&gUnknown_08587C00);
+ LoadCompressedPalette(gContest2Pal, 0x110, 32);
+ spriteId = CreateSprite(&gSpriteTemplate_8587BE8, 112, 36, 30);
+ gSprites[spriteId].oam.paletteNum = 1;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ return spriteId;
+}
+
+u8 sub_80DB120(void)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPic(&gUnknown_08587C08);
+ LoadCompressedObjectPalette(&gUnknown_08587C10);
+ spriteId = CreateSprite(&gSpriteTemplate_8587C18, 96, 10, 29);
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].data[0] = gSprites[spriteId].oam.tileNum;
+ return spriteId;
+}
+
+u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index)
+{
+ u8 spriteId;
+ species = sub_80DE84C(species);
+
+ if (index == gContestPlayerMonIndex)
+ HandleLoadSpecialPokePic_2(gMonBackPicTable + species, gMonSpritesGfxPtr->sprites[0], species, personality);
+ else
+ HandleLoadSpecialPokePic_DontHandleDeoxys(gMonBackPicTable + species, gMonSpritesGfxPtr->sprites[0], species, personality);
+
+ LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
+ SetMultiuseSpriteTemplateToPokemon(species, 0);
+
+ spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, sub_80A600C(2, species, 0), 30);
+ gSprites[spriteId].oam.paletteNum = 2;
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].subpriority = sub_80A82E4(2);
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
+ gSprites[spriteId].data[2] = species;
+ if (IsSpeciesNotUnown(species))
+ gSprites[spriteId].affineAnims = gUnknown_082FF6C0;
+ else
+ gSprites[spriteId].affineAnims = gUnknown_082FF694;
+ StartSpriteAffineAnim(gSprites + spriteId, 0);
+
+ return spriteId;
+}
+
+bool8 IsSpeciesNotUnown(u16 species)
+{
+ if (species == SPECIES_UNOWN)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void sub_80DB2BC(void)
+{
+ CpuCopy16(gContestResources->field_24[0], gContestResources->field_24[0] + 0x500, 0x280);
+ CpuCopy16(gContestResources->field_24[2], gContestResources->field_24[2] + 0x500, 0x280);
+}
+
+u16 sub_80DB2EC(u16 a0, u8 a1)
+{
+ u16 var;
+
+ switch (gContestEffects[gContestMoves[a0].effect].effectType)
+ {
+ case 0:
+ case 1:
+ case 8:
+ var = 0x9082;
+ break;
+ case 2:
+ case 3:
+ var = 0x9088;
+ break;
+ default:
+ var = 0x9086;
+ break;
+ }
+ var += 0x9000 + (a1 << 12);
+ return var;
+}
+
+void prints_contest_move_description(u16 a)
+{
+ u8 category;
+ u16 categoryTile;
+ u8 numHearts;
+
+ category = gContestMoves[a].contestCategory;
+ if (category == CONTEST_CATEGORY_COOL)
+ categoryTile = 0x4040;
+ else if (category == CONTEST_CATEGORY_BEAUTY)
+ categoryTile = 0x4045;
+ else if (category == CONTEST_CATEGORY_CUTE)
+ categoryTile = 0x404A;
+ else if (category == CONTEST_CATEGORY_SMART)
+ categoryTile = 0x406A;
+ else
+ categoryTile = 0x408A;
+
+ ContestBG_FillBoxWithIncrementingTile(0, categoryTile, 0x0b, 0x1f, 0x05, 0x01, 0x11, 0x01);
+ ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01);
+
+ if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF)
+ numHearts = 0;
+ else
+ numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
+ if (numHearts > 8)
+ numHearts = 8;
+ ContestBG_FillBoxWithTile(0, 0x5035, 0x15, 0x1f, 0x08, 0x01, 0x11);
+ ContestBG_FillBoxWithTile(0, 0x5012, 0x15, 0x1f, numHearts, 0x01, 0x11);
+
+ if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
+ numHearts = 0;
+ else
+ numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
+ if (numHearts > 8)
+ numHearts = 8;
+ ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
+ ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
+
+ FillWindowPixelBuffer(10, 0);
+ Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
+ Contest_PrintTextToBg0WindowStd(9, gText_Slash);
+}
+
+void sub_80DB4E0(u16 move, u8 b)
+{
+ u8 r7 = gUnknown_02039F26[b] * 5 + 2;
+
+ if (!sub_80DBCA8(b) && move != MOVE_NONE)
+ {
+ u16 tile = sub_80DB2EC(move, b);
+
+ ContestBG_FillBoxWithIncrementingTile(0, tile, 20, r7, 2, 1, 17, 1);
+ ContestBG_FillBoxWithIncrementingTile(0, tile + 16, 20, r7 + 1, 2, 1, 17, 1);
+ }
+ else
+ {
+ ContestBG_FillBoxWithTile(0, 0, 20, r7, 2, 2, 17);
+ }
+}
+
+void sub_80DB584(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ sub_80DB4E0(gContestResources->field_4[i].currMove, i);
+}
+
+u16 sub_80DB5B0(void)
+{
+ return 0x2034;
+}
+
+bool8 sub_80DB5B8(u8 contestantIdx, bool8 resetMod)
+{
+ u8 r6;
+ s32 r4;
+
+ if (sContestantStatus[contestantIdx].conditionMod == 0)
+ return FALSE;
+ r6 = gUnknown_02039F26[contestantIdx] * 5 + 2;
+ r4 = sContestantStatus[contestantIdx].condition / 10;
+ if (sContestantStatus[contestantIdx].conditionMod == 1)
+ {
+ ContestBG_FillBoxWithTile(0, sub_80DB5B0(), 19, r6, 1, r4, 17);
+ if (resetMod)
+ {
+ PlaySE(SE_EXPMAX);
+ sContestantStatus[contestantIdx].conditionMod = 0;
+ }
+ }
+ else
+ {
+ ContestBG_FillBoxWithTile(0, 0, 19, r6 + r4, 1, 3 - r4, 17);
+ if (resetMod)
+ {
+ PlaySE(SE_FU_ZAKU2);
+ sContestantStatus[contestantIdx].conditionMod = 0;
+ }
+ }
+ return TRUE;
+}
+
+void sub_80DB69C(void)
+{
+ s32 i;
+ s32 r6;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r4 = gUnknown_02039F26[i] * 5 + 2;
+ u16 r5 = sub_80DB5B0();
+
+ r6 = sContestantStatus[i].condition / 10;
+ ContestBG_FillBoxWithTile(0, r5, 19, r4, 1, r6, 17);
+ ContestBG_FillBoxWithTile(0, 0, 19, r4 + r6, 1, 3 - r6, 17);
+ }
+}
+
+u16 sub_80DB748(u8 status)
+{
+ u16 var = 0;
+
+ switch (status)
+ {
+ case 0:
+ var = 0x80;
+ break;
+ case 1:
+ var = 0x84;
+ break;
+ case 2:
+ var = 0x86;
+ break;
+ case 3:
+ var = 0x88;
+ break;
+ case 4:
+ var = 0x82;
+ break;
+ }
+ var += 0x9000;
+ return var;
+}
+
+bool8 sub_80DB798(u8 a)
+{
+ bool8 r9 = TRUE;
+ u16 r8 = 0;
+ u8 r7 = gUnknown_02039F26[a] * 5 + 2;
+
+ if (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0)
+ r8 = sub_80DB748(0);
+ else if (sContestantStatus[a].nervous)
+ r8 = sub_80DB748(1);
+ else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ r8 = sub_80DB748(2);
+ else
+ r9 = FALSE;
+ if (r9)
+ {
+ ContestBG_FillBoxWithIncrementingTile(0, r8, 20, r7, 2, 1, 17, 1);
+ ContestBG_FillBoxWithIncrementingTile(0, r8 + 16, 20, r7 + 1, 2, 1, 17, 1);
+ }
+ else
+ {
+ ContestBG_FillBoxWithTile(0, 0, 20, r7, 2, 2, 17);
+ }
+ return r9;
+}
diff --git a/src/easy_chat.c b/src/easy_chat.c
new file mode 100644
index 000000000..fbf4c0e70
--- /dev/null
+++ b/src/easy_chat.c
@@ -0,0 +1,807 @@
+
+// Includes
+#include "global.h"
+#include "malloc.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "overworld.h"
+#include "task.h"
+#include "main.h"
+#include "link.h"
+#include "field_weather.h"
+#include "window.h"
+#include "palette.h"
+#include "event_data.h"
+#include "easy_chat.h"
+
+// Static type declarations
+
+#define EZCHAT_TASK_STATE 0
+#define EZCHAT_TASK_KIND 1
+#define EZCHAT_TASK_WORDS 2
+#define EZCHAT_TASK_MAINCALLBACK 4
+#define EZCHAT_TASK_UNK06 6
+#define EZCHAT_TASK_SIZE 7
+
+// Static RAM declarations
+
+EWRAM_DATA struct
+{
+ u8 kind;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04;
+ s8 unk_05;
+ s8 unk_06;
+ u8 unk_07;
+ u8 unk_08;
+ u8 unk_09;
+ u8 unk_0a;
+ u8 unk_0b;
+ u8 unk_0c;
+ u8 unk_0d;
+ u8 unk_0e[0x4];
+ u8 sizeParam;
+ u8 unk_13;
+ u8 unk_14[0x20];
+ const u8 *src;
+ const u16 *words;
+ u16 ecWordBuffer[9];
+} *gUnknown_0203A118 = NULL;
+
+// Static ROM declarations
+
+static void sub_811A2C0(u8);
+static void sub_811A278(void);
+static bool8 sub_811A428(u8);
+static void sub_811A2FC(u8);
+static void sub_811A4D0(MainCallback);
+static bool32 sub_811A88C(u16);
+static void sub_811A8A4(u16);
+void sub_811A8F0(void);
+static bool8 EasyChat_AllocateResources(u8, u16 *, u8);
+static void EasyChat_FreeResources(void);
+static u16 sub_811AAAC(void);
+static u16 sub_811AB68(void);
+u16 sub_811ACDC(void);
+u16 sub_811AE44(void);
+u16 sub_811AF00(void);
+u16 sub_811AF8C(void);
+u16 sub_811AFEC(void);
+u16 sub_811B040(void);
+u16 sub_811B08C(void);
+u16 sub_811B0BC(void);
+u16 sub_811B0E8(void);
+u16 sub_811B0F8(void);
+u16 sub_811B150(void);
+u16 sub_811B1B4(void);
+u8 sub_811BA68(void);
+u8 sub_811BCC8(u8);
+void sub_811BDF0(u8 *);
+void sub_811BF78(void);
+bool8 sub_811BF8C(void);
+bool8 sub_811BFA4(void);
+void sub_811C13C(void);
+/*static*/ void sub_811C158(u16);
+/*static*/ bool8 sub_811C170(void);
+bool8 sub_811F28C(void);
+void sub_811F2B8(void);
+u8 sub_811F3AC(void);
+
+// .rodata
+
+extern const struct {
+ u16 word;
+ MainCallback callback;
+} gUnknown_08597530[4];
+extern const struct {
+ u8 unk_00;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 *data;
+ u8 filler_08[16];
+} gUnknown_08597550[];
+
+// .text
+
+void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam)
+{
+ u8 taskId;
+
+ ResetTasks();
+ taskId = CreateTask(sub_811A2C0, 0);
+ gTasks[taskId].data[EZCHAT_TASK_KIND] = kind;
+ gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam;
+ SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words);
+ SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback);
+ SetMainCallback2(sub_811A278);
+}
+
+static void sub_811A278(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_811A290(void)
+{
+ TransferPlttBuffer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+static void sub_811A2A4(u8 taskId, TaskFunc taskFunc)
+{
+ gTasks[taskId].func = taskFunc;
+ gTasks[taskId].data[EZCHAT_TASK_STATE] = 0;
+}
+
+static void sub_811A2C0(u8 taskId)
+{
+ if (!is_c1_link_related_active())
+ {
+ while (sub_811A428(taskId));
+ }
+ else
+ {
+ if (sub_811A428(taskId) == TRUE)
+ {
+ return;
+ }
+ }
+ sub_811A2A4(taskId, sub_811A2FC);
+}
+
+static void sub_811A2FC(u8 taskId)
+{
+ u16 v0;
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[EZCHAT_TASK_STATE])
+ {
+ case 0:
+ SetVBlankCallback(sub_811A290);
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ data[EZCHAT_TASK_STATE] = 5;
+ break;
+ case 1:
+ v0 = sub_811AAAC();
+ if (sub_811A88C(v0))
+ {
+ BeginNormalPaletteFade(-1, -2, 0, 16, 0);
+ data[EZCHAT_TASK_STATE] = 3;
+ data[EZCHAT_TASK_UNK06] = v0;
+ }
+ else if (v0 == 0x18)
+ {
+ BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ data[EZCHAT_TASK_STATE] = 4;
+ }
+ else if (v0 != 0)
+ {
+ PlaySE(SE_SELECT);
+ sub_811C158(v0);
+ data[EZCHAT_TASK_STATE] ++;
+ }
+ break;
+ case 2:
+ if (!sub_811C170())
+ {
+ data[EZCHAT_TASK_STATE] = 1;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sub_811A8A4(data[EZCHAT_TASK_UNK06]);
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ data[EZCHAT_TASK_STATE] = 1;
+ }
+ break;
+ }
+}
+
+static bool8 sub_811A428(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[EZCHAT_TASK_STATE])
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ break;
+ case 1:
+ if (!sub_811F28C())
+ {
+ sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 2:
+ if (!EasyChat_AllocateResources(data[EZCHAT_TASK_KIND], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE]))
+ {
+ sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 3:
+ if (!sub_811BF8C())
+ {
+ sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK));
+ }
+ break;
+ case 4:
+ if (sub_811BFA4())
+ {
+ return TRUE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ data[EZCHAT_TASK_STATE] ++;
+ return TRUE;
+}
+
+static void sub_811A4D0(MainCallback callback)
+{
+ sub_811C13C();
+ EasyChat_FreeResources();
+ sub_811F2B8();
+ FreeAllWindowBuffers();
+ SetMainCallback2(callback);
+}
+
+void easy_chat_input_maybe(void)
+{
+ int i;
+ u16 *words;
+ struct MauvilleManBard *bard;
+ u8 sizeParam = 3;
+ switch (gSpecialVar_0x8004)
+ {
+ case 0:
+ words = gSaveBlock1Ptr->unk2BB0;
+ break;
+ case 1:
+ words = gSaveBlock1Ptr->unk2BBC;
+ break;
+ case 2:
+ words = gSaveBlock1Ptr->unk2BC8;
+ break;
+ case 3:
+ words = gSaveBlock1Ptr->unk2BD4;
+ break;
+ case 4:
+ words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words;
+ break;
+ case 6:
+ bard = &gSaveBlock1Ptr->oldMan.bard;
+ for (i = 0; i < 6; i ++)
+ {
+ bard->temporaryLyrics[i] = bard->songLyrics[i];
+ }
+ words = bard->temporaryLyrics;
+ break;
+ case 5:
+ words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words;
+ sizeParam = gSpecialVar_0x8006;
+ break;
+ case 7:
+ words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
+ sizeParam = 1;
+ break;
+ case 8:
+ words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
+ sizeParam = 0;
+ break;
+ case 9:
+ words = (u16 *)gStringVar3;
+ words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
+ words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
+ break;
+ case 10:
+ words = gSaveBlock1Ptr->gabbyAndTyData.quote;
+ *words = -1;
+ sizeParam = 1;
+ break;
+ case 11:
+ words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006];
+ sizeParam = 0;
+ break;
+ case 12:
+ words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18;
+ sizeParam = 1;
+ break;
+ case 13:
+ words = (u16 *)gStringVar3;
+ InitializeEasyChatWordArray(words, 2);
+ break;
+ case 14:
+ words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words;
+ words[0] = -1;
+ sizeParam = 2;
+ break;
+ case 15:
+ words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016;
+ break;
+ case 16:
+ return;
+ case 17:
+ words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002;
+ break;
+ case 18:
+ words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014;
+ break;
+ case 19:
+ words = (u16 *)&gSaveBlock2Ptr->field_DC[0].field_0[0x28];
+ break;
+ case 20:
+ words = sub_801B058();
+ break;
+ default:
+ return;
+ }
+ overworld_free_bg_tilemaps();
+ sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam);
+}
+
+static void sub_811A7E4(void)
+{
+ LilycoveLady *lilycoveLady;
+
+ UpdatePaletteFade();
+ switch (gMain.state)
+ {
+ case 0:
+ FadeScreen(1, 0);
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ lilycoveLady = &gSaveBlock1Ptr->lilycoveLady;
+ lilycoveLady->quiz.unk_016 = -1;
+ overworld_free_bg_tilemaps();
+ sub_811A8F0();
+ }
+ return;
+ }
+ gMain.state ++;
+}
+
+void sub_811A858(void)
+{
+ SetMainCallback2(sub_811A7E4);
+}
+
+static int sub_811A868(u16 word)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_08597530); i ++)
+ {
+ if (word == gUnknown_08597530[i].word)
+ return i;
+ }
+ return -1;
+}
+
+static bool32 sub_811A88C(u16 word)
+{
+ return sub_811A868(word) == -1 ? FALSE : TRUE;
+}
+
+static void sub_811A8A4(u16 word)
+{
+ int i;
+
+ i = sub_811A868(word);
+ ResetTasks();
+ sub_811A4D0(gUnknown_08597530[i].callback);
+}
+
+void sub_811A8CC(void)
+{
+ sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3);
+}
+
+void sub_811A8F0(void)
+{
+ sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+}
+
+void sub_811A914(void)
+{
+ sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3);
+}
+
+void sub_811A938(void)
+{
+ sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3);
+}
+
+static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam)
+{
+ u8 r6;
+ int i;
+
+ gUnknown_0203A118 = malloc(sizeof(*gUnknown_0203A118));
+ if (gUnknown_0203A118 == NULL)
+ {
+ return FALSE;
+ }
+ gUnknown_0203A118->kind = kind;
+ gUnknown_0203A118->words = words;
+ gUnknown_0203A118->unk_05 = 0;
+ gUnknown_0203A118->unk_06 = 0;
+ gUnknown_0203A118->unk_09 = 0;
+ gUnknown_0203A118->sizeParam = sizeParam;
+ gUnknown_0203A118->unk_13 = 0;
+ r6 = sub_811BCC8(kind);
+ if (kind == 0x10)
+ {
+ sub_811BDF0(gUnknown_0203A118->unk_14);
+ gUnknown_0203A118->src = gUnknown_0203A118->unk_14;
+ gUnknown_0203A118->unk_04 = 7;
+ }
+ else
+ {
+ gUnknown_0203A118->unk_04 = 0;
+ gUnknown_0203A118->src = gUnknown_08597550[r6].data;
+ }
+ gUnknown_0203A118->unk_02 = gUnknown_08597550[r6].unk_01;
+ gUnknown_0203A118->unk_03 = gUnknown_08597550[r6].unk_02;
+ gUnknown_0203A118->unk_07 = gUnknown_0203A118->unk_02 * gUnknown_0203A118->unk_03;
+ gUnknown_0203A118->unk_01 = r6;
+ if (gUnknown_0203A118->unk_07 > 9)
+ {
+ gUnknown_0203A118->unk_07 = 9;
+ }
+ if (words != NULL)
+ {
+ CpuCopy16(words, gUnknown_0203A118->ecWordBuffer, gUnknown_0203A118->unk_07 * sizeof(u16));
+ }
+ else
+ {
+ for (i = 0; i < gUnknown_0203A118->unk_07; i ++)
+ {
+ gUnknown_0203A118->ecWordBuffer[i] = -1;
+ }
+ gUnknown_0203A118->words = gUnknown_0203A118->ecWordBuffer;
+ }
+ gUnknown_0203A118->unk_0d = (sub_811F3AC() - 1) / 2 + 1;
+ return TRUE;
+}
+
+static void EasyChat_FreeResources(void)
+{
+ if (gUnknown_0203A118 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203A118);
+}
+
+static u16 sub_811AAAC(void)
+{
+ switch (gUnknown_0203A118->unk_04)
+ {
+ case 0:
+ return sub_811AB68();
+ case 1:
+ return sub_811ACDC();
+ case 2:
+ return sub_811AE44();
+ case 3:
+ return sub_811AF00();
+ case 4:
+ return sub_811AF8C();
+ case 5:
+ return sub_811B040();
+ case 6:
+ return sub_811AFEC();
+ case 7:
+ return sub_811B08C();
+ case 8:
+ return sub_811B0BC();
+ case 9:
+ return sub_811B0E8();
+ case 10:
+ return sub_811B0F8();
+ }
+ return 0;
+}
+
+bool32 sub_811AB44(void)
+{
+ switch (sub_811BA68())
+ {
+ case 2:
+ case 7:
+ case 8:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+static u16 sub_811AB68(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_811BF78();
+ gUnknown_0203A118->unk_04 = 2;
+ gUnknown_0203A118->unk_0a = 0;
+ gUnknown_0203A118->unk_0b = 0;
+ gUnknown_0203A118->unk_0c = 0;
+ return 9;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ { // FIXME: See note below
+ return sub_811B150();
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ { // FIXME: See note below
+ return sub_811B1B4();
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ gUnknown_0203A118->unk_06--;
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ { // FIXME: See note below
+ gUnknown_0203A118->unk_05--;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ { // FIXME: See note below
+ gUnknown_0203A118->unk_06++;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ { // FIXME: See note below
+ gUnknown_0203A118->unk_05++;
+ }
+ else
+ {
+ return 0;
+ }
+ if (gUnknown_0203A118->unk_06 < 0)
+ {
+ gUnknown_0203A118->unk_06 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02;
+ }
+ if (gUnknown_0203A118->unk_06 > gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+ {
+ gUnknown_0203A118->unk_06 = 0;
+ }
+ if (gUnknown_0203A118->unk_06 == gUnknown_08597550[gUnknown_0203A118->unk_01].unk_02)
+ {
+ if (gUnknown_0203A118->unk_05 > 2)
+ {
+ gUnknown_0203A118->unk_05 = 2;
+ }
+ gUnknown_0203A118->unk_04 = 1;
+ return 3;
+ }
+ /*
+ * FIXME: right, down, left, b, and start
+ * should be inserted here, but aren't
+ */
+ if (gUnknown_0203A118->unk_05 < 0)
+ {
+ gUnknown_0203A118->unk_05 = gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01 - 1;
+ }
+ if (gUnknown_0203A118->unk_05 >= gUnknown_08597550[gUnknown_0203A118->unk_01].unk_01)
+ {
+ gUnknown_0203A118->unk_05 = 0;
+ }
+ if (sub_811AB44() && gUnknown_0203A118->unk_05 == 1 && gUnknown_0203A118->unk_06 == 4)
+ {
+ gUnknown_0203A118->unk_05 = 0;
+ }
+ return 2;
+}
+#else
+__attribute__((naked)) static u16 sub_811AB68(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tldr r0, =gMain\n"
+ "\tldrh r1, [r0, 0x2E]\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0811ABB8\n"
+ "\tbl sub_811BF78\n"
+ "\tldr r1, =gUnknown_0203A118\n"
+ "\tldr r3, [r1]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r0, 0x2\n"
+ "\tstrb r0, [r3, 0x4]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r2, [r0, 0xA]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r2, [r0, 0xB]\n"
+ "\tldr r0, [r1]\n"
+ "\tstrb r2, [r0, 0xC]\n"
+ "\tmovs r0, 0x9\n"
+ "\tb _0811ACCC_return_r0\n"
+ "\t.pool\n"
+ "_0811AB9C:\n"
+ "\tmovs r0, 0x20\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC68_dpad_left\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC58_dpad_down\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC48_dpad_right\n"
+ "\tmovs r0, 0\n"
+ "\tb _0811ACCC_return_r0\n"
+ "_0811ABB8:\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC78_b_button\n"
+ "\tmovs r0, 0x8\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0811AC7E_start_button\n"
+ "\tmovs r0, 0x40\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0811AB9C\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x6]\n"
+ "\tsubs r0, 0x1\n"
+ "_0811ABD8:\n"
+ "\tstrb r0, [r1, 0x6]\n"
+ "_0811ABDA:\n"
+ "\tadds r7, r2, 0\n"
+ "\tadds r4, r7, 0\n"
+ "\tldr r2, [r4]\n"
+ "\tmovs r0, 0x6\n"
+ "\tldrsb r0, [r2, r0]\n"
+ "\tldr r6, =gUnknown_08597550\n"
+ "\tcmp r0, 0\n"
+ "\tbge _0811ABF8\n"
+ "\tldrb r0, [r2, 0x1]\n"
+ "\tlsls r1, r0, 1\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r6\n"
+ "\tldrb r0, [r1, 0x2]\n"
+ "\tstrb r0, [r2, 0x6]\n"
+ "_0811ABF8:\n"
+ "\tldr r3, [r4]\n"
+ "\tmovs r2, 0x6\n"
+ "\tldrsb r2, [r3, r2]\n"
+ "\tadds r5, r6, 0\n"
+ "\tldrb r1, [r3, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r5\n"
+ "\tldrb r0, [r0, 0x2]\n"
+ "\tcmp r2, r0\n"
+ "\tble _0811AC14\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r3, 0x6]\n"
+ "_0811AC14:\n"
+ "\tldr r3, [r4]\n"
+ "\tmovs r2, 0x6\n"
+ "\tldrsb r2, [r3, r2]\n"
+ "\tldrb r1, [r3, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0, r5\n"
+ "\tldrb r0, [r1, 0x2]\n"
+ "\tcmp r2, r0\n"
+ "\tbne _0811AC88\n"
+ "\tmovs r0, 0x5\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tcmp r0, 0x2\n"
+ "\tble _0811AC36\n"
+ "\tmovs r0, 0x2\n"
+ "\tstrb r0, [r3, 0x5]\n"
+ "_0811AC36:\n"
+ "\tldr r1, [r4]\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrb r0, [r1, 0x4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tb _0811ACCC_return_r0\n"
+ "\t.pool\n"
+ "_0811AC48_dpad_right:\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x5]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1, 0x5]\n"
+ "\tb _0811ABDA\n"
+ "\t.pool\n"
+ "_0811AC58_dpad_down:\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x6]\n"
+ "\tadds r0, 0x1\n"
+ "\tb _0811ABD8\n"
+ "\t.pool\n"
+ "_0811AC68_dpad_left:\n"
+ "\tldr r2, =gUnknown_0203A118\n"
+ "\tldr r1, [r2]\n"
+ "\tldrb r0, [r1, 0x5]\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrb r0, [r1, 0x5]\n"
+ "\tb _0811ABDA\n"
+ "\t.pool\n"
+ "_0811AC78_b_button:\n"
+ "\tbl sub_811B150\n"
+ "\tb _0811AC82\n"
+ "_0811AC7E_start_button:\n"
+ "\tbl sub_811B1B4\n"
+ "_0811AC82:\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tb _0811ACCC_return_r0\n"
+ "_0811AC88:\n"
+ "\tmovs r0, 0x5\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbge _0811AC96\n"
+ "\tldrb r0, [r1, 0x1]\n"
+ "\tsubs r0, 0x1\n"
+ "\tstrb r0, [r3, 0x5]\n"
+ "_0811AC96:\n"
+ "\tldr r3, [r4]\n"
+ "\tmovs r2, 0x5\n"
+ "\tldrsb r2, [r3, r2]\n"
+ "\tldrb r1, [r3, 0x1]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tcmp r2, r0\n"
+ "\tblt _0811ACB0\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r3, 0x5]\n"
+ "_0811ACB0:\n"
+ "\tbl sub_811AB44\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0811ACCA\n"
+ "\tldr r2, [r7]\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tldr r1, =0x00ffff00\n"
+ "\tands r0, r1\n"
+ "\tldr r1, =0x00040100\n"
+ "\tcmp r0, r1\n"
+ "\tbne _0811ACCA\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r2, 0x5]\n"
+ "_0811ACCA:\n"
+ "\tmovs r0, 0x2\n"
+ "_0811ACCC_return_r0:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.pool");
+}
+#endif
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
new file mode 100644
index 000000000..6ab721643
--- /dev/null
+++ b/src/field_player_avatar.c
@@ -0,0 +1,581 @@
+#include "global.h"
+#include "global.fieldmap.h"
+#include "sprite.h"
+#include "event_object_movement.h"
+#include "bike.h"
+#include "metatile_behavior.h"
+#include "metatile_behaviors.h"
+#include "constants/flags.h"
+#include "event_data.h"
+#include "fieldmap.h"
+#include "overworld.h"
+#include "rotating_gate.h"
+#include "constants/event_object_movement_constants.h"
+#include "field_player_avatar.h"
+
+extern void task_add_bump_boulder(u8, u8);
+static bool8 ShouldJumpLedge(s16, s16, u8);
+static bool8 sub_808B1BC(s16, s16, u8);
+static u8 sub_808B164(struct EventObject *, s16, s16, u8, u8);
+static u8 sub_808B238(s16, s16, u8);
+static void check_acro_bike_metatile(s16, s16, u8, u8 *);
+extern void PlayerNotOnBikeCollide(u8);
+extern void PlayerNotOnBikeCollideWithFarawayIslandMew(u8);
+extern void PlayerRun(u8);
+static void MovePlayerNotOnBike(u8, u16);
+static u8 CheckMovementInputNotOnBike(u8);
+extern void sub_808C5B0(void);
+extern void sub_808C4D8(void);
+static u8 CheckForPlayerAvatarCollision(u8);
+static u8 EventObjectCB2_NoMovement2();
+extern void sub_808C280(struct EventObject *);
+static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *, u8);
+void npc_clear_strange_bits(struct EventObject *);
+extern void DoPlayerAvatarTransition(void);
+static bool8 TryDoMetatileBehaviorForcedMovement();
+static void MovePlayerAvatarUsingKeypadInput(u8, u16, u16);
+static void PlayerAllowForcedMovementIfMovingSameDirection();
+static u8 sub_808B028(u8);
+static u8 GetForcedMovementByMetatileBehavior();
+static void PlayerNotOnBikeNotMoving(u8, u16);
+static void PlayerNotOnBikeTurningInPlace(u8, u16);
+static void PlayerNotOnBikeMoving(u8, u16);
+extern void sub_808C750(u8);
+
+static bool8 (*const gUnknown_084973FC[])(u8) =
+{
+ MetatileBehavior_IsTrickHouseSlipperyFloor,
+ MetatileBehavior_IsIce_2,
+ MetatileBehavior_IsWalkSouth,
+ MetatileBehavior_IsWalkNorth,
+ MetatileBehavior_IsWalkWest,
+ MetatileBehavior_IsWalkEast,
+ MetatileBehavior_IsSouthwardCurrent,
+ MetatileBehavior_IsNorthwardCurrent,
+ MetatileBehavior_IsWestwardCurrent,
+ MetatileBehavior_IsEastwardCurrent,
+ MetatileBehavior_IsSlideSouth,
+ MetatileBehavior_IsSlideNorth,
+ MetatileBehavior_IsSlideWest,
+ MetatileBehavior_IsSlideEast,
+ MetatileBehavior_IsWaterfall,
+ MetatileBehavior_IsSecretBaseJumpMat,
+ MetatileBehavior_IsSecretBaseSpinMat,
+ MetatileBehavior_IsMuddySlope,
+};
+
+static bool8 (*const gUnknown_08497444[])(void) =
+{
+ ForcedMovement_None,
+ ForcedMovement_Slip,
+ ForcedMovement_Slip,
+ ForcedMovement_WalkSouth,
+ ForcedMovement_WalkNorth,
+ ForcedMovement_WalkWest,
+ ForcedMovement_WalkEast,
+ ForcedMovement_PushedSouthByCurrent,
+ ForcedMovement_PushedNorthByCurrent,
+ ForcedMovement_PushedWestByCurrent,
+ ForcedMovement_PushedEastByCurrent,
+ ForcedMovement_SlideSouth,
+ ForcedMovement_SlideNorth,
+ ForcedMovement_SlideWest,
+ ForcedMovement_SlideEast,
+ ForcedMovement_PushedSouthByCurrent,
+ ForcedMovement_0xBB,
+ ForcedMovement_0xBC,
+ ForcedMovement_MuddySlope,
+};
+
+static void (*const gUnknown_08497490[])(u8, u16) =
+{
+ PlayerNotOnBikeNotMoving,
+ PlayerNotOnBikeTurningInPlace,
+ PlayerNotOnBikeMoving,
+};
+
+static bool8 (*const gUnknown_0849749C[])(u8) =
+{
+ MetatileBehavior_IsBumpySlope,
+ MetatileBehavior_IsIsolatedVerticalRail,
+ MetatileBehavior_IsIsolatedHorizontalRail,
+ MetatileBehavior_IsVerticalRail,
+ MetatileBehavior_IsHorizontalRail,
+};
+
+static const u8 gUnknown_084974B0[] = {9, 10, 11, 12, 13, 0, 0, 0};
+
+void MovementType_Player(struct Sprite *sprite)
+{
+ UpdateEventObjectCurrentMovement(&gEventObjects[sprite->data[0]], sprite, EventObjectCB2_NoMovement2);
+}
+
+static u8 EventObjectCB2_NoMovement2()
+{
+ return 0;
+}
+
+void player_step(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ sub_808C280(playerEventObj);
+ if (gPlayerAvatar.preventStep == FALSE)
+ {
+ Bike_TryAcroBikeHistoryUpdate(newKeys, heldKeys);
+ if (TryInterruptEventObjectSpecialAnim(playerEventObj, direction) == 0)
+ {
+ npc_clear_strange_bits(playerEventObj);
+ DoPlayerAvatarTransition();
+ if (TryDoMetatileBehaviorForcedMovement() == 0)
+ {
+ MovePlayerAvatarUsingKeypadInput(direction, newKeys, heldKeys);
+ PlayerAllowForcedMovementIfMovingSameDirection();
+ }
+ }
+ }
+}
+
+static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction)
+{
+ #ifdef NONMATCHING
+ u8 r5 = direction;
+ u8 r6 = direction;
+ #else
+ u8 r5 = direction;
+ register u8 r6 asm("r6") = direction;
+ #endif
+ //a very bad HACK
+
+ if (EventObjectIsMovementOverridden(playerEventObj)
+ && !EventObjectClearHeldMovementIfFinished(playerEventObj))
+ {
+ u8 heldMovementActionId = EventObjectGetHeldMovementActionId(playerEventObj);
+ if (heldMovementActionId > MOVEMENT_ACTION_WALK_FAST_RIGHT && heldMovementActionId < MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN)
+ {
+ if (direction == DIR_NONE)
+ {
+ return TRUE;
+ }
+
+ if (playerEventObj->movementDirection != r5)
+ {
+ EventObjectClearHeldMovement(playerEventObj);
+ return FALSE;
+ }
+
+ if (!sub_808B028(r6))
+ {
+ EventObjectClearHeldMovement(playerEventObj);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void npc_clear_strange_bits(struct EventObject *eventObj)
+{
+ eventObj->inanimate = 0;
+ eventObj->disableAnim = 0;
+ eventObj->facingDirectionLocked = 0;
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH;
+}
+
+static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 heldKeys)
+{
+ if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
+ || (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ MovePlayerOnBike(direction, newKeys, heldKeys);
+ else
+ MovePlayerNotOnBike(direction, heldKeys);
+}
+
+static void PlayerAllowForcedMovementIfMovingSameDirection(void)
+{
+ if (gPlayerAvatar.runningState == MOVING)
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
+}
+
+static bool8 TryDoMetatileBehaviorForcedMovement()
+{
+ return gUnknown_08497444[GetForcedMovementByMetatileBehavior()]();
+}
+
+static u8 GetForcedMovementByMetatileBehavior(void)
+{
+ u8 i;
+
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_5))
+ {
+ u8 metatileBehavior = gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior;
+
+ for (i = 0; i < 18; i++)
+ {
+ if (gUnknown_084973FC[i](metatileBehavior))
+ return i + 1;
+ }
+ }
+ return 0;
+}
+
+bool8 ForcedMovement_None(void)
+{
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6)
+ {
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ playerEventObj->facingDirectionLocked = 0;
+ playerEventObj->enableAnim = 1;
+ SetEventObjectDirection(playerEventObj, playerEventObj->facingDirection);
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_6;
+ }
+ return FALSE;
+}
+
+static u8 DoForcedMovement(u8 direction, void (*b)(u8))
+{
+ struct PlayerAvatar *playerAvatar = &gPlayerAvatar;
+ u8 collisionType = CheckForPlayerAvatarCollision(direction);
+
+ playerAvatar->flags |= PLAYER_AVATAR_FLAG_6;
+ if (collisionType != 0)
+ {
+ ForcedMovement_None();
+ if (collisionType <= 4)
+ {
+ return 0;
+ }
+ else
+ {
+ if (collisionType == COLLISION_LEDGE_JUMP)
+ PlayerJumpLedge(direction);
+ playerAvatar->flags |= PLAYER_AVATAR_FLAG_6;
+ playerAvatar->runningState = MOVING;
+ return 1;
+ }
+ }
+ else
+ {
+ playerAvatar->runningState = MOVING;
+ b(direction);
+ return 1;
+ }
+}
+
+u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ playerEventObj->disableAnim = 1;
+ return DoForcedMovement(playerEventObj->movementDirection, a);
+}
+
+bool8 ForcedMovement_Slip(void)
+{
+ return DoForcedMovementInCurrentDirection(PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_WalkSouth(void)
+{
+ return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_WalkNorth(void)
+{
+ return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_WalkWest(void)
+{
+ return DoForcedMovement(DIR_WEST, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_WalkEast(void)
+{
+ return DoForcedMovement(DIR_EAST, PlayerGoSpeed1);
+}
+
+bool8 ForcedMovement_PushedSouthByCurrent(void)
+{
+ return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed3);
+}
+
+bool8 ForcedMovement_PushedNorthByCurrent(void)
+{
+ return DoForcedMovement(DIR_NORTH, PlayerGoSpeed3);
+}
+
+bool8 ForcedMovement_PushedWestByCurrent(void)
+{
+ return DoForcedMovement(DIR_WEST, PlayerGoSpeed3);
+}
+
+bool8 ForcedMovement_PushedEastByCurrent(void)
+{
+ return DoForcedMovement(DIR_EAST, PlayerGoSpeed3);
+}
+
+u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ playerEventObj->disableAnim = 1;
+ playerEventObj->facingDirectionLocked = 1;
+ return DoForcedMovement(direction, b);
+}
+
+bool8 ForcedMovement_SlideSouth(void)
+{
+ return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_SlideNorth(void)
+{
+ return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_SlideWest(void)
+{
+ return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_SlideEast(void)
+{
+ return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2);
+}
+
+bool8 ForcedMovement_0xBB(void)
+{
+ sub_808C4D8();
+ return TRUE;
+}
+
+bool8 ForcedMovement_0xBC(void)
+{
+ sub_808C5B0();
+ return TRUE;
+}
+
+bool8 ForcedMovement_MuddySlope(void)
+{
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ if (playerEventObj->movementDirection != DIR_NORTH || GetPlayerSpeed() <= 3)
+ {
+ Bike_UpdateBikeCounterSpeed(0);
+ playerEventObj->facingDirectionLocked = 1;
+ return DoForcedMovement(1, PlayerGoSpeed2);
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
+{
+ gUnknown_08497490[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
+}
+
+static u8 CheckMovementInputNotOnBike(u8 direction)
+{
+ if (direction == DIR_NONE)
+ {
+ gPlayerAvatar.runningState = NOT_MOVING;
+ return 0;
+ }
+ else if (direction != GetPlayerMovementDirection() && gPlayerAvatar.runningState != MOVING)
+ {
+ gPlayerAvatar.runningState = TURN_DIRECTION;
+ return 1;
+ }
+ else
+ {
+ gPlayerAvatar.runningState = MOVING;
+ return 2;
+ }
+}
+
+static void PlayerNotOnBikeNotMoving(u8 direction, u16 heldKeys)
+{
+ PlayerFaceDirection(GetPlayerFacingDirection());
+}
+
+static void PlayerNotOnBikeTurningInPlace(u8 direction, u16 heldKeys)
+{
+ PlayerTurnInPlace(direction);
+}
+
+static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
+{
+ u8 r0 = CheckForPlayerAvatarCollision(direction);
+
+ if (r0 != 0)
+ {
+ if (r0 == 6)
+ {
+ PlayerJumpLedge(direction);
+ return;
+ }
+ else if (r0 == 4 && IsPlayerCollidingWithFarawayIslandMew(direction) != 0)
+ {
+ PlayerNotOnBikeCollideWithFarawayIslandMew(direction);
+ return;
+ }
+ else
+ {
+ u8 r4 = r0 - 5;
+
+ if (r4 > 3)
+ {
+ PlayerNotOnBikeCollide(direction);
+ return;
+ }
+ else
+ {
+ return;
+ }
+ }
+ }
+
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ {
+ // speed 2 is fast, same speed as running
+ PlayerGoSpeed2(direction);
+ return;
+ }
+
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH)
+ && IsRunningDisallowed(gEventObjects[gPlayerAvatar.eventObjectId].currentMetatileBehavior) == 0)
+ {
+ PlayerRun(direction);
+ gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH;
+ return;
+ }
+ else
+ {
+ PlayerGoSpeed1(direction);
+ }
+}
+
+static u8 CheckForPlayerAvatarCollision(u8 direction)
+{
+ s16 x, y;
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ x = playerEventObj->currentCoords.x;
+ y = playerEventObj->currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ return CheckForEventObjectCollision(playerEventObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
+}
+
+static u8 sub_808B028(u8 direction)
+{
+ s16 x, y;
+ struct EventObject *playerEventObj = &gEventObjects[gPlayerAvatar.eventObjectId];
+
+ x = playerEventObj->currentCoords.x;
+ y = playerEventObj->currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ return sub_808B164(playerEventObj, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
+}
+
+u8 CheckForEventObjectCollision(struct EventObject *a, s16 x, s16 y, u8 direction, u8 e)
+{
+ u8 collision;
+
+ collision = GetCollisionAtCoords(a, x, y, direction);
+ if (collision == 3 && sub_808B1BC(x, y, direction))
+ return 5;
+ if (ShouldJumpLedge(x, y, direction))
+ {
+ IncrementGameStat(GAME_STAT_JUMPED_DOWN_LEDGES);
+ return COLLISION_LEDGE_JUMP;
+ }
+ if (collision == 4 && sub_808B238(x, y, direction))
+ return 7;
+
+ if (collision == 0)
+ {
+ if (CheckForRotatingGatePuzzleCollision(direction, x, y))
+ return 8;
+ check_acro_bike_metatile(x, y, e, &collision);
+ }
+ return collision;
+}
+
+static u8 sub_808B164(struct EventObject *a, s16 x, s16 y, u8 direction, u8 e)
+{
+ u8 collision = GetCollisionAtCoords(a, x, y, direction);
+
+ if (collision == 0)
+ {
+ if (CheckForRotatingGatePuzzleCollisionWithoutAnimation(direction, x, y) != 0)
+ return 8;
+ check_acro_bike_metatile(x, y, e, &collision);
+ }
+ return collision;
+}
+
+static bool8 sub_808B1BC(s16 x, s16 y, u8 direction)
+{
+ if ((gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ && MapGridGetZCoordAt(x, y) == 3
+ && GetEventObjectIdByXYZ(x, y, 3) == 16)
+ {
+ sub_808C750(direction);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool8 ShouldJumpLedge(s16 x, s16 y, u8 z)
+{
+ if (GetLedgeJumpDirection(x, y, z) != 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static u8 sub_808B238(s16 x, s16 y, u8 direction)
+{
+ if (FlagGet(FLAG_SYS_USE_STRENGTH))
+ {
+ u8 eventObjectId = GetEventObjectIdByXY(x, y);
+
+ if (eventObjectId != 16 && gEventObjects[eventObjectId].graphicsId == 0x57)
+ {
+ x = gEventObjects[eventObjectId].currentCoords.x;
+ y = gEventObjects[eventObjectId].currentCoords.y;
+ MoveCoords(direction, &x, &y);
+ if (GetCollisionAtCoords(&gEventObjects[eventObjectId], x, y, direction) == 0
+ && MetatileBehavior_IsNonAnimDoor(MapGridGetMetatileBehaviorAt(x, y)) == 0)
+ {
+ task_add_bump_boulder(eventObjectId, direction);
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+static void check_acro_bike_metatile(s16 unused1, s16 unused2, u8 c, u8 *d)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_0849749C[i](c))
+ {
+ *d = gUnknown_084974B0[i];
+ return;
+ }
+ }
+}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 7f8c24ab7..7c622c223 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -7,17 +7,49 @@
#include "text.h"
#include "strings.h"
#include "window.h"
+#include "menu.h"
+#include "bg.h"
+#include "main.h"
+#include "palette.h"
+#include "overworld.h"
+#include "field_screen.h"
+#include "field_weather.h"
+#include "script.h"
+#include "international_string_util.h"
+#include "walda_phrase.h"
+#include "sound.h"
+#include "gpu_regs.h"
+#include "constants/songs.h"
IWRAM_DATA u8 gUnknown_03000F78[0x188];
-struct OptionAndDescription
-{
- const u8 *optionTxt;
- const u8 *descriptionTxt;
-};
+extern const u8 gText_PartyFull[];
+extern const u8 gText_Box[];
+extern const u8 gText_JustOnePkmn[];
+
+extern u8 gUnknown_02039D00;
+
+// This file's functions.
+void StorageSystemCreatePrimaryMenu(u8 whichMenu, s16 *windowIdPtr);
+void sub_80C7D74(u8);
+u8 sub_80CAEA0(void);
+void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
+void SetCurrentBox(u8 boxId);
+void ClearMonInBox(u8 boxId, u8 boxPos);
+void ResetWaldaWallpaper(void);
+void sub_80C7958(u8 curBox);
+void sub_80C7B14(void);
+void sub_80C7BB4(void);
+void sub_80CA028(void);
+void sub_80C7B80(void);
+void sub_80D2AA4(void);
+void sub_80C7BE4(void);
+void sub_80CAA14(void);
+void sub_80C7CF4(struct Sprite *sprite);
+struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
// const rom data
-const struct OptionAndDescription gUnknown_085716C0[] =
+const struct PSS_MenuStringPtrs gUnknown_085716C0[] =
{
{gText_WithdrawPokemon, gText_WithdrawMonDescription},
{gText_DepositPokemon, gText_DepositMonDescription},
@@ -74,6 +106,10 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_8571730[] =
const u8 gUnknown_08571734[] = {4, 0xF, 0xE};
const u8 gUnknown_08571737[] = _("/30");
+const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/unknown/unknown_57173C.gbapal");
+const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
+const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
+
// code
u8 CountMonsInBox(u8 boxId)
{
@@ -166,24 +202,473 @@ static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n)
return str;
}
-/* can't match
-static void sub_80C7128(u16 *dst, u16 dstToAdd, u16 dstToMul, const u16 *src, u16 srcToAdd, u16 srcToMul, u32 size, u16 count, u16 srcBy)
+static void sub_80C7128(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
+{
+ u16 i;
+
+ dest_width *= 2;
+ dest += dest_top * 0x20 + dest_left;
+ src += src_top * src_width + src_left;
+ for (i = 0; i < dest_height; i++)
+ {
+ CpuCopy16(src, dest, dest_width);
+ dest += 0x20;
+ src += src_width;
+ }
+}
+
+#define MAX_DMA_BLOCK_SIZE 0x1000
+#define Dma3FillLarge_(value, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ if (_size <= MAX_DMA_BLOCK_SIZE) \
+ { \
+ DmaFill##bit(3, value, _dest, _size); \
+ break; \
+ } \
+ DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \
+ _dest += MAX_DMA_BLOCK_SIZE; \
+ _size -= MAX_DMA_BLOCK_SIZE; \
+ } \
+}
+
+#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16)
+#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32)
+
+void sub_80C71A4(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
+{
+ u16 i;
+
+ dest += dest_top * 0x20 + dest_left;
+ width *= 2;
+ for (i = 0; i < height; dest += 0x20, i++)
+ Dma3FillLarge16_(0, dest, width);
+}
+
+void Task_PokemonStorageSystem(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ switch (task->data[0])
+ {
+ case 0:
+ StorageSystemCreatePrimaryMenu(task->data[1], &task->data[15]);
+ sub_81973A4();
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, TEXT_SPEED_FF, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ CopyWindowToVram(task->data[15], 3);
+ task->data[0]++;
+ break;
+ case 1:
+ if (IsWeatherNotFadingIn())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[2] = ProcessMenuInput();
+ switch(task->data[2])
+ {
+ case -2:
+ task->data[3] = task->data[1];
+ if (gMain.newKeys & DPAD_UP && --task->data[3] < 0)
+ task->data[3] = 4;
+
+ if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 4)
+ task->data[3] = 0;
+ if (task->data[1] != task->data[3])
+ {
+ task->data[1] = task->data[3];
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
+ }
+ break;
+ case -1:
+ case 4:
+ sub_819746C(task->data[15], TRUE);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ RemoveWindow(task->data[15]);
+ DestroyTask(taskId);
+ break;
+ default:
+ if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE)
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gText_PartyFull, 0, NULL, 2, 1, 3);
+ task->data[0] = 3;
+ }
+ else if (task->data[2] == 1 && CountPartyMons() == 1)
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gText_JustOnePkmn, 0, NULL, 2, 1, 3);
+ task->data[0] = 3;
+ }
+ else
+ {
+ FadeScreen(1, 0);
+ task->data[0] = 4;
+ }
+ break;
+ }
+ break;
+ case 3:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
+ task->data[0] = 2;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (--task->data[1] < 0)
+ task->data[1] = 4;
+ MoveMenuCursor(-1);
+ task->data[1] = GetMenuCursorPos();
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
+ task->data[0] = 2;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (++task->data[1] > 3)
+ task->data[1] = 0;
+ MoveMenuCursor(1);
+ task->data[1] = GetMenuCursorPos();
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParameterized(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
+ task->data[0] = 2;
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ overworld_free_bg_tilemaps();
+ sub_80C7D74(task->data[2]);
+ RemoveWindow(task->data[15]);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void ShowPokemonStorageSystem(void)
+{
+ u8 taskId = CreateTask(Task_PokemonStorageSystem, 80);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ ScriptContext2_Enable();
+}
+
+void mapldr_0808C6D8(void)
+{
+ u8 taskId;
+ MainCallback vblankCb = gMain.vblankCallback;
+
+ SetVBlankCallback(NULL);
+ taskId = CreateTask(Task_PokemonStorageSystem, 80);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gUnknown_02039D00;
+ Task_PokemonStorageSystem(taskId);
+ SetVBlankCallback(vblankCb);
+ pal_fill_black();
+}
+
+void StorageSystemCreatePrimaryMenu(u8 whichMenu, s16 *windowIdPtr)
+{
+ s16 windowId;
+ struct WindowTemplate winTemplate = gUnknown_085716E8;
+ winTemplate.width = GetMaxWidthInMenuTable((void *)gUnknown_085716C0, ARRAY_COUNT(gUnknown_085716C0));
+ windowId = AddWindow(&winTemplate);
+
+ NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE);
+ PrintMenuTable(windowId, ARRAY_COUNT(gUnknown_085716C0), (void *)gUnknown_085716C0);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(gUnknown_085716C0), whichMenu);
+ *windowIdPtr = windowId;
+}
+
+void sub_80C7678(void)
+{
+ gUnknown_02039D00 = sub_80CAEA0();
+ gFieldCallback = mapldr_0808C6D8;
+ SetMainCallback2(CB2_ReturnToField);
+}
+
+s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode)
+{
+ s16 i;
+ s16 direction;
+ if (mode == 0 || mode == 1)
+ {
+ direction = 1;
+ }
+ else
+ {
+ direction = -1;
+ }
+ if (mode == 1 || mode == 3)
+ {
+ for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction)
+ {
+ if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0)
+ return i;
+ }
+ }
+ else
+ {
+ for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction)
+ {
+ if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0 && !GetBoxMonData(box + i, MON_DATA_IS_EGG))
+ return i;
+ }
+ }
+ return -1;
+}
+
+void ResetPokemonStorageSystem(void)
+{
+ u16 boxId;
+ u16 boxMon;
+
+ SetCurrentBox(0);
+ for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
+ {
+ for (boxMon = 0; boxMon < IN_BOX_COUNT; boxMon++)
+ ClearMonInBox(boxId, boxMon);
+ }
+ for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
+ {
+ u8 *dest = StringCopy(GetBoxNamePtr(boxId), gText_Box);
+ ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2);
+ }
+ for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
+ {
+ SetBoxWallpaper(boxId, boxId % 4);
+ }
+ ResetWaldaWallpaper();
+}
+
+void sub_80C77E8(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal)
+{
+ struct SpritePalette palette =
+ {
+ gBoxSelectionPopupPalette, palTag
+ };
+ struct SpriteSheet sheets[] =
+ {
+ {gBoxSelectionPopupCenterTiles, 0x800, tileTag},
+ {gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1},
+ {}
+ };
+
+ if (loadPal)
+ LoadSpritePalette(&palette);
+
+ LoadSpriteSheets(sheets);
+ gUnknown_02039D04 = a0;
+ a0->unk_0240 = tileTag;
+ a0->unk_0242 = palTag;
+ a0->unk_0246 = a3;
+ a0->unk_023c = loadPal;
+}
+
+void sub_80C7890(void)
+{
+ if (gUnknown_02039D04->unk_023c)
+ FreeSpritePaletteByTag(gUnknown_02039D04->unk_0242);
+ FreeSpriteTilesByTag(gUnknown_02039D04->unk_0240);
+ FreeSpriteTilesByTag(gUnknown_02039D04->unk_0240 + 1);
+}
+
+void sub_80C78D4(u8 curBox)
+{
+ sub_80C7958(curBox);
+}
+
+void sub_80C78E4(void)
+{
+ sub_80C7B14();
+}
+
+u8 sub_80C78F0(void)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return 201;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_02039D04->curBox;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ PlaySE(SE_SELECT);
+ sub_80C7BB4();
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ PlaySE(SE_SELECT);
+ sub_80C7B80();
+ }
+ return 200;
+}
+
+void sub_80C7958(u8 curBox)
{
u16 i;
+ u8 spriteId;
+ struct SpriteTemplate template;
+ struct OamData oamData = {};
+ oamData.size = 3;
+ oamData.paletteNum = 1;
+ template = (struct SpriteTemplate){
+ 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ };
+
+ gUnknown_02039D04->curBox = curBox;
+ template.tileTag = gUnknown_02039D04->unk_0240;
+ template.paletteTag = gUnknown_02039D04->unk_0242;
+
+ spriteId = CreateSprite(&template, 0xA0, 0x60, 0);
+ gUnknown_02039D04->unk_0000 = gSprites + spriteId;
+
+ oamData.shape = ST_OAM_V_RECTANGLE;
+ oamData.size = 1;
+ template.tileTag = gUnknown_02039D04->unk_0240 + 1;
+ template.anims = sSpriteAnimTable_8571710;
+ for (i = 0; i < 4; i++)
+ {
+ u16 r5;
+ spriteId = CreateSprite(&template, 0x7c, 0x50, gUnknown_02039D04->unk_0246);
+ gUnknown_02039D04->unk_0004[i] = gSprites + spriteId;
+ r5 = 0;
+ if (i & 2)
+ {
+ gUnknown_02039D04->unk_0004[i]->pos1.x = 0xc4;
+ r5 = 2;
+ }
+ if (i & 1)
+ {
+ gUnknown_02039D04->unk_0004[i]->pos1.y = 0x70;
+ gUnknown_02039D04->unk_0004[i]->oam.size = 0;
+ r5++;
+ }
+ StartSpriteAnim(gUnknown_02039D04->unk_0004[i], r5);
+ }
+ for (i = 0; i < 2; i++)
+ {
+ gUnknown_02039D04->unk_0020[i] = sub_80CD2E8(72 * i + 0x7c, 0x58, i, 0, gUnknown_02039D04->unk_0246);
+ if (gUnknown_02039D04->unk_0020[i])
+ {
+ gUnknown_02039D04->unk_0020[i]->data[0] = (i == 0 ? -1 : 1);
+ gUnknown_02039D04->unk_0020[i]->callback = sub_80C7CF4;
+ }
+ }
+ sub_80C7BE4();
+}
+
+void sub_80C7B14(void)
+{
+ u16 i;
+ if (gUnknown_02039D04->unk_0000)
+ {
+ DestroySprite(gUnknown_02039D04->unk_0000);
+ gUnknown_02039D04->unk_0000 = NULL;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_02039D04->unk_0004[i])
+ {
+ DestroySprite(gUnknown_02039D04->unk_0004[i]);
+ gUnknown_02039D04->unk_0004[i] = NULL;
+ }
+ }
+ for (i = 0; i < 2; i++)
+ {
+ if (gUnknown_02039D04->unk_0020[i])
+ DestroySprite(gUnknown_02039D04->unk_0020[i]);
+ }
+}
- size <<= 0x11;
- dst += (dstToMul * 32) + dstToAdd;
- src += (srcToMul * srcBy) + srcToAdd;
+void sub_80C7B80(void)
+{
+ if (++gUnknown_02039D04->curBox >= TOTAL_BOXES_COUNT)
+ gUnknown_02039D04->curBox = 0;
+ sub_80C7BE4();
+}
+
+void sub_80C7BB4(void)
+{
+ gUnknown_02039D04->curBox = (gUnknown_02039D04->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : gUnknown_02039D04->curBox - 1);
+ sub_80C7BE4();
+}
- i = 0;
- if (i < count)
+void sub_80C7BE4(void)
+{
+ u8 text[16];
+ struct WindowTemplate winTemplate;
+ u8 windowId;
+ u8 *boxName = GetBoxNamePtr(gUnknown_02039D04->curBox);
+ u8 nPokemonInBox = CountMonsInBox(gUnknown_02039D04->curBox);
+ u32 winTileData;
+ s32 center;
+
+ memset(&winTemplate, 0, sizeof(winTemplate));
+ winTemplate.width = 8;
+ winTemplate.height = 4;
+
+ windowId = AddWindow(&winTemplate);
+ FillWindowPixelBuffer(windowId, 0x44);
+
+ center = GetStringCenterAlignXOffset(1, boxName, 0x40);
+ box_print(windowId, 1, center, 1, gUnknown_08571734, TEXT_SPEED_FF, boxName);
+
+ ConvertIntToDecimalStringN(text, nPokemonInBox, 1, 2);
+ StringAppend(text, gUnknown_08571737);
+ center = GetStringCenterAlignXOffset(1, text, 0x40);
+ box_print(windowId, 1, center, 0x11, gUnknown_08571734, TEXT_SPEED_FF, text);
+
+ winTileData = GetWindowAttribute(windowId, WINDOW_TILE_DATA);
+ CpuCopy32((void *)winTileData, (void *)OBJ_VRAM0 + 0x100 + (GetSpriteTileStartByTag(gUnknown_02039D04->unk_0240) * 32), 0x400);
+
+ RemoveWindow(windowId);
+}
+
+void sub_80C7CF4(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 3)
{
- size >>= 1;
- for (i = 0; i < count; i++)
+ sprite->data[1] = 0;
+ sprite->pos2.x += sprite->data[0];
+ if (++sprite->data[2] > 5)
{
- CpuSet(src, dst, size >> 0x10);
- dst += 0x20;
- src += srcBy;
+ sprite->data[2] = 0;
+ sprite->pos2.x = 0;
}
}
-}*/
+}
+
+void sub_80C7D28(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ sub_80D2AA4();
+ TransferPlttBuffer();
+ SetGpuReg(REG_OFFSET_BG2HOFS, gUnknown_02039D08->bg2_X);
+}
+
+void c2_Box(void)
+{
+ RunTasks();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ sub_80CA028();
+ sub_80CAA14();
+ AnimateSprites();
+ BuildOamBuffer();
+}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 728b887f8..38b1fea4f 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -29,6 +29,7 @@
#include "daycare.h"
#include "data2.h"
#include "contest.h"
+#include "contest_effect.h"
extern struct UnkSummaryStruct* gUnknown_0203CF1C;
extern struct BgTemplate gUnknown_0861CBB4;
@@ -41,7 +42,6 @@ extern struct UnkStruct_61CC04 gUnknown_0861CC10;
extern struct UnkStruct_61CC04 gUnknown_0861CBEC;
extern struct UnkStruct_61CC04 gUnknown_0861CBF8;
extern u16 gSummaryScreenWindow_Tilemap[];
-extern struct ContestMove gContestMoves[];
extern struct ContestEffect gContestEffects[];
extern struct WindowTemplate gUnknown_0861CC24;
extern u8 gUnknown_0861CD2C[][3];
diff --git a/src/slot_machine.c b/src/slot_machine.c
new file mode 100644
index 000000000..5422103c3
--- /dev/null
+++ b/src/slot_machine.c
@@ -0,0 +1,1366 @@
+#include "global.h"
+#include "constants/songs.h"
+#include "overworld.h"
+#include "field_effect.h"
+#include "random.h"
+#include "sound.h"
+#include "main.h"
+#include "slot_machine.h"
+#include "string_util.h"
+#include "decompress.h"
+#include "trig.h"
+#include "graphics.h"
+#include "palette.h"
+#include "util.h"
+#include "text.h"
+#include "menu.h"
+#include "malloc.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "coins.h"
+#include "tv.h"
+#include "text_window.h"
+#include "constants/rgb.h"
+#include "main_menu.h"
+
+enum
+{
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY
+};
+
+enum
+{
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_2CHERRY,
+ SLOT_MACHINE_MATCHED_REPLAY,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_777_MIXED,
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_NONE
+};
+
+struct SlotMachineEwramStruct
+{
+ /*0x00*/ u8 state;
+ /*0x01*/ u8 unk01;
+ /*0x02*/ u8 pikaPower;
+ /*0x03*/ u8 unk03;
+ /*0x04*/ u8 unk04;
+ /*0x05*/ u8 unk05;
+ /*0x06*/ u8 unk06;
+ /*0x07*/ u8 unk07;
+ /*0x08*/ u16 matchedSymbols;
+ /*0x0A*/ u8 unk0A;
+ /*0x0B*/ u8 unk0B;
+ /*0x0C*/ s16 coins;
+ /*0x0E*/ s16 payout;
+ /*0x10*/ s16 unk10;
+ /*0x12*/ s16 bet;
+ /*0x14*/ s16 unk14;
+ /*0x16*/ s16 unk16;
+ /*0x18*/ s16 unk18;
+ /*0x1A*/ s16 unk1A;
+ /*0x1C*/ s16 unk1C[3];
+ /*0x22*/ u16 unk22[3];
+ /*0x28*/ s16 reelPositions[3];
+ /*0x2E*/ s16 unk2E[3];
+ /*0x34*/ s16 unk34[3];
+ /*0x3A*/ u8 reelTasks[3];
+ /*0x3D*/ u8 unk3D;
+ /*0x3E*/ u8 unk3E;
+ /*0x3F*/ u8 unk3F;
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+ /*0x42*/ u8 unk42;
+ /*0x43*/ u8 unk43;
+ /*0x44*/ u8 unk44[5];
+ /*0x49*/ u8 unk49[2];
+ /*0x49*/ u8 unk4B[3];
+ /*0x4E*/ u8 unk4E[2];
+ /*0x50*/ u8 unk50[2];
+ /*0x52*/ u8 unk52[2];
+ /*0x54*/ u8 unk54[4];
+ /*0x58*/ u16 win0h;
+ /*0x5a*/ u16 win0v;
+ /*0x5c*/ u16 winIn;
+ /*0x5e*/ u16 winOut;
+ /*0x60*/ u16 backupMapMusic;
+ /*0x64*/ MainCallback prevMainCb;
+};
+
+extern struct SlotMachineEwramStruct *sSlotMachine;
+
+struct UnkStruct1
+{
+ /*0x00*/ u8 unk00;
+ /*0x01*/ u8 unk01;
+ /*0x02*/ s16 unk02;
+};
+
+#define SLOTMACHINE_GFX_TILES 233
+
+/*static*/void CB2_SlotMachineSetup(void);
+/*static*/void CB2_SlotMachineLoop(void);
+/*static*/void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
+/*static*/void SlotMachineDummyTask(u8 taskId);
+/*static*/void SlotMachineSetup_0_0(void);
+/*static*/void SlotMachineSetup_6_2(void);
+/*static*/void SlotMachineSetup_1_0(void);
+/*static*/void SlotMachineSetup_2_0(void);
+/*static*/void SlotMachineSetup_2_1(void);
+/*static*/void SlotMachineSetup_0_1(void);
+/*static*/void SlotMachineSetup_3_0(void);
+/*static*/void SlotMachineSetup_4_0(void);
+/*static*/void SlotMachineSetup_5_0(void);
+/*static*/void SlotMachineSetup_6_0(void);
+/*static*/void SlotMachineSetup_6_1(void);
+/*static*/void SlotMachineSetup_8_0(void);
+/*static*/void SlotMachineSetup_9_0(void);
+/*static*/void SlotMachineSetup_10_0(void);
+/*static*/void SlotMachineSetup_10_1(void);
+/*static*/void sub_8101D04(void);
+/*static*/void sub_8104DA4(void);
+/*static*/void sub_8101D24(u8 taskId);
+/*static*/bool8 sub_8101D5C(struct Task *task);
+/*static*/bool8 sub_8101D8C(struct Task *task);
+/*static*/bool8 sub_8101DB0(struct Task *task);
+/*static*/bool8 sub_8101DF4(struct Task *task);
+/*static*/bool8 sub_8101E10(struct Task *task);
+/*static*/bool8 sub_8101E3C(struct Task *task);
+/*static*/bool8 sub_8101F44(struct Task *task);
+/*static*/bool8 sub_8101F60(struct Task *task);
+/*static*/bool8 sub_8101F88(struct Task *task);
+/*static*/bool8 sub_8101FA4(struct Task *task);
+/*static*/bool8 sub_8102008(struct Task *task);
+/*static*/bool8 sub_8102034(struct Task *task);
+/*static*/bool8 sub_8102058(struct Task *task);
+/*static*/bool8 sub_8102090(struct Task *task);
+bool8 sub_81020C8(struct Task *task);
+/*static*/bool8 sub_81021E0(struct Task *task);
+/*static*/bool8 sub_81021FC(struct Task *task);
+/*static*/bool8 sub_8102264(struct Task *task);
+/*static*/bool8 sub_81022A0(struct Task *task);
+/*static*/bool8 sub_81022CC(struct Task *task);
+/*static*/bool8 sub_81022F0(struct Task *task);
+/*static*/bool8 sub_8102318(struct Task *task);
+/*static*/bool8 sub_8102344(struct Task *task);
+/*static*/bool8 sub_810239C(struct Task *task);
+/*static*/bool8 sub_81023B8(struct Task *task);
+/*static*/bool8 sub_81023E0_(struct Task *task);
+/*static*/bool8 sub_81023FC(struct Task *task);
+/*static*/bool8 sub_8102424(struct Task *task);
+/*static*/bool8 sub_8102460(struct Task *task);
+/*static*/void sub_8102484(void);
+/*static*/void sub_81024F0(void);
+/*static*/bool8 sub_8102540_(void);
+/*static*/u8 sub_8102578(void);
+/*static*/u16 dp15_jump_random_unknown(void);
+/*static*/u8 sub_81025BC(void);
+/*static*/void CheckMatch(void);
+/*static*/void CheckMatch_CenterRow(void);
+/*static*/void CheckMatch_TopAndBottom(void);
+/*static*/void CheckMatch_Diagonals(void);
+/*static*/u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+/*static*/void sub_8102A24(void);
+/*static*/void sub_8102A64(u8 taskId);
+/*static*/bool8 sub_8102A44(void);
+/*static*/bool8 sub_8102A9C(struct Task *task);
+/*static*/bool8 sub_8102AD0(struct Task *task);
+/*static*/bool8 sub_8102B80(struct Task *task);
+/*static*/u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y);
+/*static*/void sub_8102DA8(void);
+/*static*/void sub_8102DEC(u8 a0);
+/*static*/void sub_8102E1C(u8 a0);
+/*static*/bool8 sub_8102E40(u8 a0);
+/*static*/void sub_8102E68(u8 taskId);
+/*static*/bool8 sub_8102EA0(struct Task *task);
+/*static*/bool8 sub_8102EA4(struct Task *task);
+/*static*/bool8 sub_8102EC0(struct Task *task);
+/*static*/bool8 sub_8102F4C(struct Task *task);
+/*static*/bool8 sub_8103008(struct Task *task);
+/*static*/bool8 sub_810305C(void);
+/*static*/bool8 sub_8103154(u8 a0, u8 a1);
+/*static*/bool8 sub_81031B4(u8 a0, u8 a1);
+/*static*/bool8 sub_81032C0(void);
+/*static*/bool8 sub_81032E8(void);
+/*static*/bool8 sub_810333C(void);
+/*static*/bool8 sub_81033DC(void);
+/*static*/bool8 sub_810341C(u8 a0);
+/*static*/bool8 sub_810347C(u8 a0);
+/*static*/void sub_81034F4(void);
+/*static*/void sub_8103540(void);
+/*static*/void sub_8103564(void);
+/*static*/void j5_08111E84(void);
+/*static*/void sub_8103668(void);
+/*static*/void sub_810380C(void);
+/*static*/void sub_8103830(void);
+/*static*/void sub_8103910(void);
+/*static*/void sub_8103A78(void);
+/*static*/void sub_8103C14(u8 a0);
+/*static*/void sub_8103C48(u8 taskId);
+/*static*/void sub_8103D50(u8 a0);
+/*static*/void sub_8103C78(struct Task *task, u8 taskId);
+/*static*/void sub_8103CAC(struct Task *task, u8 taskId);
+/*static*/void sub_8103CC8(struct Task *task, u8 taskId);
+/*static*/void sub_8103D8C(u8 a0);
+/*static*/void sub_8103DC8(void);
+/*static*/void sub_8103E04(u8 a0);
+/*static*/bool8 sub_8103E38(void);
+/*static*/bool8 sub_8103E7C(void);
+/*static*/bool8 sub_8103EAC(u8 spriteId);
+/*static*/void sub_8103EE4(struct Sprite *sprite);
+/*static*/void sub_8103F70(void);
+/*static*/bool8 sub_8103FA0(void);
+/*static*/void sub_8103FE8(u8 taskId);
+/*static*/void sub_8104048(void);
+/*static*/void sub_8104064(u8 pikaPower);
+/*static*/bool8 sub_81040C8(void);
+/*static*/void sub_81040E8(u8 taskId);
+/*static*/void nullsub_68(struct Task *task);
+/*static*/void sub_810411C(struct Task *task);
+/*static*/void sub_8104144(struct Task *task);
+/*static*/void sub_81041AC(struct Task *task);
+/*static*/void sub_810421C(struct Task *task);
+/*static*/void sub_810423C(u8 pikaPower);
+/*static*/void sub_810430C(void);
+/*static*/bool8 sub_810432C(void);
+/*static*/void sub_810434C(u8 taskId);
+/*static*/void sub_810437C(struct Task *task);
+/*static*/void sub_81043EC(struct Task *task);
+/*static*/void sub_8104468(struct Task *task);
+/*static*/void sub_8104498(struct Task *task);
+/*static*/void sub_8104548(struct Task *task);
+/*static*/void sub_8104598(struct Task *task);
+/*static*/void sub_81045CC(struct Task *task);
+/*static*/void sub_810463C(struct Task *task);
+/*static*/void sub_81046C0(struct Task *task);
+/*static*/void sub_8104764(struct Task *task);
+/*static*/void sub_8104794(struct Task *task);
+/*static*/void sub_81047EC(struct Task *task);
+/*static*/void sub_8104860(struct Task *task);
+/*static*/void sub_81048A8(struct Task *task);
+/*static*/void sub_81048CC(struct Task *task);
+/*static*/void sub_8104940(struct Task *task);
+/*static*/void sub_81049C8(struct Task *task);
+/*static*/void sub_81049F8(struct Task *task);
+/*static*/void sub_8104A40(s16 a0, s16 a1);
+/*static*/void sub_8104A88(s16 a0);
+/*static*/void sub_8104AB8(u8 a0);
+/*static*/bool8 sub_8104AEC(void);
+/*static*/void sub_8104B0C(u8 taskId);
+/*static*/void sub_8104B3C(struct Task *task);
+/*static*/void sub_8104B60(struct Task *task);
+/*static*/void sub_8104B80(struct Task *task);
+/*static*/void sub_8104BC8(struct Task *task);
+/*static*/void sub_8104BFC(struct Task *task);
+/*static*/void sub_8104C44(struct Task *task);
+/*static*/void sub_8104C5C(void);
+/*static*/void sub_8104CAC(u8 arg0);
+/*static*/bool8 sub_8104E18(void);
+/*static*/void nullsub_69(struct Task *task);
+/*static*/void sub_8104E74(u8 taskId);
+/*static*/void sub_8104EA8(void);
+/*static*/void sub_8104F8C(void);
+/*static*/void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
+/*static*/void sub_81050C4(void);
+/*static*/void sub_8105100(void);
+/*static*/void sub_810514C(void);
+/*static*/void sub_81051C0(void);
+/*static*/void sub_8105284(void);
+/*static*/void sub_81052EC(void);
+/*static*/void sub_81053A0(void);
+/*static*/void sub_810545C(void);
+/*static*/void sub_81054B8(void);
+/*static*/void sub_8105524(void);
+/*static*/void sub_8105554(void);
+/*static*/void sub_8105578(void);
+/*static*/void sub_8105688(s16 a0);
+/*static*/void sub_81056C0(void);
+/*static*/void sub_81056F0(void);
+/*static*/void sub_81057E8(s16 a0);
+/*static*/void sub_8105804(void);
+/*static*/void sub_8105854(void);
+/*static*/void sub_81058A0(void);
+/*static*/void sub_81058C4(void);
+/*static*/void sub_81059B8(void);
+/*static*/void sub_81059E8(void);
+/*static*/bool8 sub_8105ACC(void);
+/*static*/void sub_8105AEC(void);
+/*static*/u8 sub_8105B1C(s16 x, s16 y);
+/*static*/void sub_8105B88(u8 spriteId);
+/*static*/u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
+/*static*/void sub_81063C0(void);
+/*static*/void sub_8106404(void);
+/*static*/void sub_8106448(void);
+/*static*/void sub_81064B8(void);
+/*static*/void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
+/*static*/void sub_81065DC(void);
+/*static*/extern const struct UnkStruct1 *const gUnknown_083ED048[];
+/*static*/extern const u16 gPalette_83EDE24[];
+/*static*/extern const u8 gUnknown_083ECD04[][3];
+/*static*/extern const u8 gUnknown_083ECE3A[];
+/*static*/extern const u16 gUnknown_083ECE42[];
+/*static*/extern const u16 gUnknown_083ECE48[];
+
+// code
+#define tState data[0]
+
+void Task_FadeToSlotMachine(u8 taskId)
+{
+ switch (gTasks[taskId].tState)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gTasks[taskId].tState++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_SlotMachineSetup);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void PlaySlotMachine(u8 arg0, MainCallback cb)
+{
+ u8 taskId;
+
+ sSlotMachine = AllocZeroed(sizeof(*sSlotMachine));
+ PlaySlotMachine_Internal(arg0, cb);
+ taskId = CreateTask(Task_FadeToSlotMachine, 0);
+ gTasks[taskId].tState = 0;
+}
+
+#undef tState
+
+void CB2_SlotMachineSetup(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SlotMachineSetup_0_0();
+ SlotMachineSetup_0_1();
+ gMain.state++;
+ break;
+ case 1:
+ SlotMachineSetup_1_0();
+ gMain.state++;
+ break;
+ case 2:
+ SlotMachineSetup_2_0();
+ SlotMachineSetup_2_1();
+ gMain.state++;
+ break;
+ case 3:
+ SlotMachineSetup_3_0();
+ gMain.state++;
+ break;
+ case 4:
+ SlotMachineSetup_4_0();
+ gMain.state++;
+ break;
+ case 5:
+ SlotMachineSetup_5_0();
+ gMain.state++;
+ break;
+ case 6:
+ SlotMachineSetup_6_0();
+ gMain.state++;
+ break;
+ case 7:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ gMain.state++;
+ break;
+ case 8:
+ SlotMachineSetup_8_0();
+ gMain.state++;
+ break;
+ case 9:
+ SlotMachineSetup_9_0();
+ gMain.state++;
+ break;
+ case 10:
+ SlotMachineSetup_10_0();
+ SlotMachineSetup_10_1();
+ gMain.state++;
+ break;
+ case 11:
+ SetMainCallback2(CB2_SlotMachineLoop);
+ break;
+ }
+}
+
+void CB2_SlotMachineLoop(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void SlotMachine_VBlankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ SetGpuReg(REG_OFFSET_WIN0H, sSlotMachine->win0h);
+ SetGpuReg(REG_OFFSET_WIN0V, sSlotMachine->win0v);
+ SetGpuReg(REG_OFFSET_WININ, sSlotMachine->winIn);
+ SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut);
+}
+
+void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
+{
+ struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF);
+ task->data[0] = arg0;
+ StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
+}
+
+void sub_81019EC(void)
+{
+ struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
+ sSlotMachine->unk01 = task->data[0];
+ LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
+}
+
+void SlotMachineDummyTask(u8 taskId)
+{
+}
+
+extern const struct BgTemplate gUnknown_085A7424[4];
+extern const struct WindowTemplate gUnknown_085A7434[];
+
+void SlotMachineSetup_0_0(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ CpuFill32(0, (void *)VRAM, VRAM_SIZE);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085A7424, ARRAY_COUNT(gUnknown_085A7424));
+ InitWindows(gUnknown_085A7434);
+ DeactivateAllTextPrinters();
+}
+
+void SlotMachineSetup_6_0(void)
+{
+ SetVBlankCallback(SlotMachine_VBlankCallback);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
+}
+
+void SlotMachineSetup_1_0(void)
+{
+ DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
+}
+
+void SlotMachineSetup_2_0(void)
+{
+ DmaClear16(3, (u16 *)OAM, OAM_SIZE);
+}
+
+void SlotMachineSetup_2_1(void)
+{
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8));
+}
+
+extern const s16 gUnknown_083ECCF8[][2];
+
+void SlotMachineSetup_0_1(void)
+{
+ u8 i;
+
+ sub_81019EC();
+ sSlotMachine->state = 0;
+ sSlotMachine->pikaPower = 0;
+ sSlotMachine->unk03 = Random() & 1;
+ sSlotMachine->unk04 = 0;
+ sSlotMachine->matchedSymbols = 0;
+ sSlotMachine->unk0A = 0;
+ sSlotMachine->unk0B = 0;
+ sSlotMachine->coins = GetCoins();
+ sSlotMachine->payout = 0;
+ sSlotMachine->unk10 = 0;
+ sSlotMachine->bet = 0;
+ sSlotMachine->unk18 = 0;
+ sSlotMachine->unk1A = 8;
+ sSlotMachine->win0h = 0xf0;
+ sSlotMachine->win0v = 0xa0;
+ sSlotMachine->winIn = 0x3f;
+ sSlotMachine->winOut = 0x3f;
+ sSlotMachine->backupMapMusic = GetCurrentMapMusic();
+ for (i = 0; i < 3; i++)
+ {
+ sSlotMachine->unk22[i] = 0;
+ sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21;
+ sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24;
+ sSlotMachine->unk1C[i] %= 0x1f8;
+ }
+ sub_80EDE70(GetCoins());
+}
+
+extern u8 gOamLimit;
+
+void SlotMachineSetup_3_0(void)
+{
+ ResetPaletteFade();
+ ResetSpriteData();
+ gOamLimit = 0x80;
+ FreeAllSpritePalettes();
+ ResetTasks();
+}
+
+extern u16 *gUnknown_0203AAC8;
+extern u16 *gUnknown_0203AACC;
+extern u16 *gUnknown_0203AAD0;
+extern u16 *gUnknown_0203AADC;
+extern void *gUnknown_0203AAF4;
+extern void *gUnknown_0203AAF8;
+extern void *gUnknown_0203AAFC;
+extern void *gUnknown_0203AB00;
+extern void *gUnknown_0203AB04;
+extern void *gUnknown_0203AB08;
+extern void *gUnknown_0203AB0C;
+extern void *gUnknown_0203AB10;
+extern void *gUnknown_0203AB14;
+extern void *gUnknown_0203AB18;
+extern void *gUnknown_0203AB1C;
+extern void *gUnknown_0203AB20;
+extern void *gUnknown_0203AB24;
+extern void *gUnknown_0203AB28;
+extern void *gUnknown_0203AAE4;
+extern void *gUnknown_0203AAE8;
+extern void *gUnknown_0203AAEC;
+extern void *gUnknown_0203AAF0;
+extern void *gUnknown_0203AAD4;
+extern void *gUnknown_0203AAD8;
+extern void *gUnknown_0203AAE0;
+extern void *gUnknown_0203AB2C;
+extern void *gUnknown_0203AB30;
+
+void SlotMachineSetup_4_0(void)
+{
+ gUnknown_0203AACC = Alloc(8);
+ gUnknown_0203AAD0 = AllocZeroed(0xE);
+ gUnknown_0203AADC = AllocZeroed(8);
+
+ gUnknown_0203AAD0[0] = 0x2051;
+ gUnknown_0203AAD0[1] = 0x2851;
+ gUnknown_0203AAD0[2] = 0x2061;
+ gUnknown_0203AAD0[3] = 0x2861;
+ gUnknown_0203AAD0[4] = 0x20BE;
+ gUnknown_0203AAD0[5] = 0x28BE;
+ gUnknown_0203AAD0[6] = 0x20BF;
+}
+
+/*static*/void sub_812F908(void);
+/*static*/void sub_812F958(void);
+/*static*/void sub_812F7E4(void);
+
+void SlotMachineSetup_5_0(void)
+{
+ sub_812F908();
+ sub_812F958();
+ sub_812F7E4();
+ LoadMessageBoxGfx(0, 0x200, 0xF0);
+ LoadUserWindowBorderGfx(0, 0x214, 0xE0);
+ PutWindowTilemap(0);
+}
+
+void SlotMachineSetup_10_0(void)
+{
+ sub_8104EA8();
+ sub_8104F8C();
+ sub_8103DC8();
+ sub_81050C4();
+}
+
+void SlotMachineSetup_10_1(void)
+{
+ sub_8104048();
+ sub_8102DA8();
+ sub_8104C5C();
+ sub_8101D04();
+}
+
+void sub_8101D04(void)
+{
+ sub_8101D24(CreateTask(sub_8101D24, 0));
+}
+
+extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task);
+
+void sub_8101D24(u8 taskId)
+{
+ while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId))
+ ;
+}
+
+bool8 sub_8101D5C(struct Task *task)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
+ sub_810423C(sSlotMachine->pikaPower);
+ sSlotMachine->state++;
+ return FALSE;
+}
+
+bool8 sub_8101D8C(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ sSlotMachine->state++;
+ return FALSE;
+}
+
+bool8 sub_8101DB0(struct Task *task)
+{
+ sSlotMachine->payout = 0;
+ sSlotMachine->bet = 0;
+ sSlotMachine->unk18 = 0;
+ sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->state = 4;
+ if (sSlotMachine->coins <= 0)
+ {
+ sSlotMachine->state = 25;
+ }
+ else if (sSlotMachine->unk0A)
+ {
+ sSlotMachine->state = 3;
+ sub_8104CAC(4);
+ }
+ return TRUE;
+}
+
+bool8 sub_8101DF4(struct Task *task)
+{
+ if (sub_8104E18())
+ sSlotMachine->state = 4;
+ return FALSE;
+}
+
+bool8 sub_8101E10(struct Task *task)
+{
+ sub_8104CAC(0);
+ sSlotMachine->state = 5;
+ if (sSlotMachine->coins >= 9999)
+ sSlotMachine->state = 23;
+ return TRUE;
+}
+
+bool8 sub_8101E3C(struct Task *task)
+{
+ s16 i;
+
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_8104AB8(0);
+ sSlotMachine->state = 8;
+ }
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0)
+ {
+ for (i = sSlotMachine->bet; i < 3; i++)
+ sub_8103D50(i);
+ sSlotMachine->coins -= (3 - sSlotMachine->bet);
+ sSlotMachine->bet = 3;
+ sSlotMachine->state = 9;
+ PlaySE(SE_REGI);
+ }
+ else
+ {
+ sSlotMachine->state = 6;
+ }
+ }
+ else
+ {
+ if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0)
+ {
+ PlaySE(SE_REGI);
+ sub_8103D50(sSlotMachine->bet);
+ sSlotMachine->coins--;
+ sSlotMachine->bet++;
+ }
+ if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
+ sSlotMachine->state = 9;
+ if (gMain.newKeys & B_BUTTON)
+ sSlotMachine->state = 21;
+ }
+ return FALSE;
+}
+
+extern const u8 gText_YouDontHaveThreeCoins[];
+extern const u8 gText_QuitTheGame[];
+extern const u8 gText_YouveGot9999Coins[];
+extern const u8 gText_YouveRunOutOfCoins[];
+
+bool8 sub_8101F44(struct Task *task)
+{
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
+ PrintTextOnWindow(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0);
+ CopyWindowToVram(0, 3);
+ sSlotMachine->state = 7;
+ return FALSE;
+}
+
+bool8 sub_8101F60(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8197434(0, TRUE);
+ sSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+bool8 sub_8101F88(struct Task *task)
+{
+ if (sub_8104AEC())
+ sSlotMachine->state = 5;
+ return FALSE;
+}
+
+bool8 sub_8101FA4(struct Task *task)
+{
+ sub_8102484();
+ sub_8104DA4();
+ sub_8102DEC(0);
+ sub_8102DEC(1);
+ sub_8102DEC(2);
+ sub_80EEC80();
+ task->data[0] = 0;
+ if (sSlotMachine->unk04 & 0x20)
+ {
+ sub_810430C();
+ sSlotMachine->state = 10;
+ }
+ else
+ {
+ sub_8104CAC(1);
+ sSlotMachine->state = 11;
+ }
+ sSlotMachine->unk1A = 8;
+ if (sSlotMachine->unk0A)
+ sSlotMachine->unk1A = dp15_jump_random_unknown();
+ return FALSE;
+}
+
+bool8 sub_8102008(struct Task *task)
+{
+ if (sub_810432C())
+ {
+ sub_8104CAC(1);
+ sSlotMachine->unk04 &= 0xDF;
+ sSlotMachine->state = 11;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102034(struct Task *task)
+{
+ if (++task->data[0] >= 30)
+ {
+ sub_81024F0();
+ sSlotMachine->state = 12;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102058(struct Task *task)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_JYUNI);
+ sub_8102E1C(sSlotMachine->unk18);
+ sub_8103C14(sSlotMachine->unk18);
+ sSlotMachine->state = 13;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102090(struct Task *task)
+{
+ if (!sub_8102E40(sSlotMachine->unk18))
+ {
+ sSlotMachine->unk18++;
+ sSlotMachine->state = 12;
+ if (sSlotMachine->unk18 > 2)
+ {
+ sSlotMachine->state = 14;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_81020C8(struct Task *task)
+{
+ sSlotMachine->unk04 &= 0xc0;
+ CheckMatch();
+ if (sSlotMachine->unk0A)
+ {
+ sSlotMachine->unk0A--;
+ sSlotMachine->unk0B++;
+ }
+
+ if (sSlotMachine->matchedSymbols)
+ {
+ sSlotMachine->state = 15;
+ sub_8102A24();
+ sub_8103F70();
+ if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0)
+ {
+ sSlotMachine->unk10 = 0;
+ }
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ PlayFanfare(MUS_ME_B_BIG);
+ sub_8104CAC(6);
+ }
+ else if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
+ {
+ PlayFanfare(MUS_ME_B_BIG);
+ sub_8104CAC(5);
+ }
+ else
+ {
+ PlayFanfare(MUS_ME_B_SMALL);
+ sub_8104CAC(2);
+ }
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ sSlotMachine->unk04 &= 0x3f;
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ {
+ sSlotMachine->unk0A = 0;
+ sSlotMachine->unk0B = 0;
+ sSlotMachine->unk03 = 0;
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
+ sSlotMachine->unk03 = 1;
+ }
+ }
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16)
+ {
+ sSlotMachine->pikaPower++;
+ sub_8104064(sSlotMachine->pikaPower);
+ }
+ }
+ else
+ {
+ sub_8104CAC(3);
+ sSlotMachine->state = 20;
+ if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999)
+ sSlotMachine->unk10 = 9999;
+ }
+ return FALSE;
+}
+
+bool8 sub_81021E0(struct Task *task)
+{
+ if (sub_8102A44())
+ sSlotMachine->state = 16;
+ return FALSE;
+}
+
+bool8 sub_81021FC(struct Task *task)
+{
+ if (sub_8103FA0())
+ {
+ sSlotMachine->state = 19;
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
+ IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ sSlotMachine->unk18 = 0;
+ sSlotMachine->state = 9;
+ }
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
+ sSlotMachine->state = 17;
+ if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ sub_8104CAC(4);
+ sSlotMachine->state = 18;
+ }
+ }
+ return FALSE;
+}
+
+bool8 sub_8102264(struct Task *task)
+{
+ if (!sub_81040C8())
+ {
+ sSlotMachine->state = 19;
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ sSlotMachine->state = 9;
+ if (sSlotMachine->unk0A)
+ {
+ sub_8104CAC(4);
+ sSlotMachine->state = 18;
+ }
+ }
+ }
+ return FALSE;
+}
+
+bool8 sub_81022A0(struct Task *task)
+{
+ if (sub_8104E18())
+ {
+ sSlotMachine->state = 19;
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ {
+ sSlotMachine->state = 9;
+ }
+ }
+ return FALSE;
+}
+
+bool8 sub_81022CC(struct Task *task)
+{
+ sub_8103D8C(0);
+ sub_8103D8C(1);
+ sub_8103D8C(2);
+ sSlotMachine->state = 2;
+ return FALSE;
+}
+
+bool8 sub_81022F0(struct Task *task)
+{
+ if (++task->data[1] > 64)
+ {
+ task->data[1] = 0;
+ sSlotMachine->state = 19;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102318(struct Task *task)
+{
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
+ PrintTextOnWindow(0, 1, gText_QuitTheGame, 0, 1, 0, 0);
+ CopyWindowToVram(0, 3);
+ sub_80323CC(0x15, 7, 0x214, 0x180, 0xE, 0xF);
+ sSlotMachine->state = 22;
+ return FALSE;
+}
+
+bool8 sub_8102344(struct Task *task)
+{
+ s8 input = ProcessMenuInputNoWrap_();
+ if (input == 0)
+ {
+ sub_8197434(0, TRUE);
+ sub_8103D8C(0);
+ sub_8103D8C(1);
+ sub_8103D8C(2);
+ sSlotMachine->coins += sSlotMachine->bet;
+ sSlotMachine->state = 27;
+ }
+ else if (input == 1 || input == -1)
+ {
+ sub_8197434(0, TRUE);
+ sSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+bool8 sub_810239C(struct Task *task)
+{
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
+ PrintTextOnWindow(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0);
+ CopyWindowToVram(0, 3);
+ sSlotMachine->state = 24;
+ return FALSE;
+}
+
+bool8 sub_81023B8(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8197434(0, TRUE);
+ sSlotMachine->state = 5;
+ }
+ return FALSE;
+}
+
+bool8 sub_81023E0_(struct Task *task)
+{
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
+ PrintTextOnWindow(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0);
+ CopyWindowToVram(0, 3);
+ sSlotMachine->state = 26;
+ return FALSE;
+}
+
+bool8 sub_81023FC(struct Task *task)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8197434(0, TRUE);
+ sSlotMachine->state = 27;
+ }
+ return FALSE;
+}
+
+bool8 sub_8102424(struct Task *task)
+{
+ SetCoins(sSlotMachine->coins);
+ sub_80EDD78(GetCoins());
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ sSlotMachine->state++;
+ return FALSE;
+}
+
+bool8 sub_8102460(struct Task *task)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sSlotMachine->prevMainCb);
+ FREE_AND_SET_NULL(gUnknown_0203AAF4);
+ FREE_AND_SET_NULL(gUnknown_0203AAF8);
+ FREE_AND_SET_NULL(gUnknown_0203AAFC);
+ FREE_AND_SET_NULL(gUnknown_0203AB00);
+ FREE_AND_SET_NULL(gUnknown_0203AB04);
+ FREE_AND_SET_NULL(gUnknown_0203AB08);
+ FREE_AND_SET_NULL(gUnknown_0203AB0C);
+ FREE_AND_SET_NULL(gUnknown_0203AB10);
+ FREE_AND_SET_NULL(gUnknown_0203AB14);
+ FREE_AND_SET_NULL(gUnknown_0203AB18);
+ FREE_AND_SET_NULL(gUnknown_0203AB1C);
+ FREE_AND_SET_NULL(gUnknown_0203AB20);
+ FREE_AND_SET_NULL(gUnknown_0203AB24);
+ FREE_AND_SET_NULL(gUnknown_0203AB28);
+ if (gUnknown_0203AAE4 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAE4);
+ if (gUnknown_0203AAE8 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAE8);
+ if (gUnknown_0203AAEC != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAEC);
+ if (gUnknown_0203AAF0 != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203AAF0);
+ FREE_AND_SET_NULL(gUnknown_0203AAC8);
+ FREE_AND_SET_NULL(gUnknown_0203AACC);
+ FREE_AND_SET_NULL(gUnknown_0203AAD0);
+ FREE_AND_SET_NULL(gUnknown_0203AAD4);
+ FREE_AND_SET_NULL(gUnknown_0203AAD8);
+ FREE_AND_SET_NULL(gUnknown_0203AADC);
+ FREE_AND_SET_NULL(gUnknown_0203AAE0);
+ FREE_AND_SET_NULL(gUnknown_0203AB2C);
+ FREE_AND_SET_NULL(gUnknown_0203AB30);
+
+ FREE_AND_SET_NULL(sSlotMachine);
+ }
+ return FALSE;
+}
+
+void sub_8102484(void)
+{
+ u8 r3;
+
+ if (sSlotMachine->unk0A == 0)
+ {
+ if (!(sSlotMachine->unk04 & 0xc0))
+ {
+ if (sub_8102540_())
+ {
+ r3 = sub_8102578();
+ if (r3 != 3)
+ {
+ sSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+ if (r3 != 1)
+ {
+ return;
+ }
+ }
+ }
+ r3 = sub_81025BC();
+ if (r3 != 5)
+ {
+ sSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ }
+ }
+ }
+}
+
+void sub_81024F0(void)
+{
+ sSlotMachine->unk06 = 0;
+ if (sSlotMachine->unk04)
+ sSlotMachine->unk06 = 1;
+}
+
+u8 sub_810250C(u8 a0)
+{
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (a0 & 1)
+ return gUnknown_083ECE3A[i];
+ a0 >>= 1;
+ }
+ return 0;
+}
+
+bool8 sub_8102540_(void)
+{
+ u8 rval = Random();
+ if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval)
+ return TRUE;
+ return FALSE;
+}
+
+extern const u8 gUnknown_083ECD16[][6];
+extern const u8 gUnknown_083ECD28[][6];
+extern const u8 gUnknown_083ECD46[][17];
+extern const u8 gUnknown_083ECDAC[][17];
+
+u8 sub_8102578(void)
+{
+ s16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01];
+ if (value > rval)
+ break;
+ }
+ return i;
+}
+
+u8 sub_81025BC(void)
+{
+ s16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ s16 rval = Random() & 0xff;
+ s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01];
+ if (i == 0 && sSlotMachine->unk03 == 1)
+ {
+ r3 += 10;
+ if (r3 > 0x100)
+ r3 = 0x100;
+ }
+ else if (i == 4 && sSlotMachine->unk03 == 1)
+ {
+ r3 -= 10;
+ if (r3 < 0)
+ r3 = 0;
+ }
+ if (r3 > rval)
+ break;
+ }
+ return i;
+}
+
+u8 sub_810264C(u8 a0)
+{
+ if (sSlotMachine->unk03 == 0)
+ return gUnknown_083ECD46[a0][sSlotMachine->pikaPower];
+ else
+ return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower];
+}
+
+void sub_8102680(void)
+{
+ u8 rval;
+ s16 i;
+
+ sSlotMachine->unk05 = 0;
+ rval = Random();
+ if (rval < sub_810264C(0))
+ return;
+ for (i = 5; i > 0; i--)
+ {
+ rval = Random();
+ if (rval < sub_810264C(i))
+ break;
+ }
+ sSlotMachine->unk05 = i;
+}
+
+extern const u16 gUnknown_083ECE12[];
+extern const u16 gUnknown_083ECE1C[][2];
+extern const u16 gUnknown_083ECE30[];
+extern const u16 sSlotMatchFlags[];
+extern const u16 sSlotPayouts[];
+
+bool8 sub_81026DC(u16 a0)
+{
+ u16 rval = Random() & 0xff;
+ if (rval < gUnknown_083ECE12[a0])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u16 dp15_jump_random_unknown(void)
+{
+ u8 r4 = 0;
+ u8 rval;
+ u8 value;
+ if (sSlotMachine->unk10 >= 300)
+ r4 = 4;
+ else if (sSlotMachine->unk10 >= 250)
+ r4 = 3;
+ else if (sSlotMachine->unk10 >= 200)
+ r4 = 2;
+ else if (sSlotMachine->unk10 >= 150)
+ r4 = 1;
+ rval = Random() % 100;
+ value = gUnknown_083ECE1C[r4][0];
+ if (rval < value)
+ return 4;
+ rval = Random() % 100;
+ value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B];
+ if (rval < value)
+ return 2;
+ return 8;
+}
+
+void CheckMatch(void)
+{
+ sSlotMachine->matchedSymbols = 0;
+ CheckMatch_CenterRow();
+ if (sSlotMachine->bet > 1)
+ CheckMatch_TopAndBottom();
+ if (sSlotMachine->bet > 2)
+ CheckMatch_Diagonals();
+}
+
+void CheckMatch_CenterRow(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(0);
+ }
+}
+
+void CheckMatch_TopAndBottom(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match == SLOT_MACHINE_MATCHED_1CHERRY)
+ match = SLOT_MACHINE_MATCHED_2CHERRY;
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(1);
+ }
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match == SLOT_MACHINE_MATCHED_1CHERRY)
+ match = SLOT_MACHINE_MATCHED_2CHERRY;
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sub_8103E04(2);
+ }
+}
+
+void CheckMatch_Diagonals(void)
+{
+ u8 c1, c2, c3, match;
+
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ }
+ sub_8103E04(3);
+ }
+ c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+ c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ match = GetMatchFromSymbolsInRow(c1, c2, c3);
+ if (match != SLOT_MACHINE_MATCHED_NONE)
+ {
+ if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ {
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ }
+ sub_8103E04(4);
+ }
+}
+
+extern const u8 sSym2Match[];
+
+u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+{
+ if (c1 == c2 && c1 == c3)
+ return sSym2Match[c1];
+ if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
+ return SLOT_MACHINE_MATCHED_777_MIXED;
+ if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
+ return SLOT_MACHINE_MATCHED_777_MIXED;
+ if (c1 == SLOT_MACHINE_TAG_CHERRY)
+ return SLOT_MACHINE_MATCHED_1CHERRY;
+ return SLOT_MACHINE_MATCHED_NONE;
+}
+
+void sub_8102A24(void)
+{
+ sub_8102A64(CreateTask(sub_8102A64, 4));
+}
+
+bool8 sub_8102A44(void)
+{
+ if (FindTaskIdByFunc(sub_8102A64) == 0xff)
+ return TRUE;
+ else
+ return FALSE;
+}
diff --git a/src/tv.c b/src/tv.c
index 2e915697e..d09e72abc 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1448,8 +1448,8 @@ void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1)
sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
- show->contestLiveUpdates.winningSpecies = gUnknown_02039E00[a1].unk_00;
- StringCopy(show->contestLiveUpdates.winningTrainerName, gUnknown_02039E00[a1].unk_0d);
+ show->contestLiveUpdates.winningSpecies = gContestMons[a1].species;
+ StringCopy(show->contestLiveUpdates.winningTrainerName, gContestMons[a1].trainerName);
StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName);
show->contestLiveUpdates.appealFlags2 = a0;
if (a1 + 1 > gUnknown_02039F30)
diff --git a/sym_common.txt b/sym_common.txt
index 0158b7615..96796d941 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -43,9 +43,7 @@ gUnknown_030060B0: @ 30060B0
gUnknown_030060B4: @ 30060B4
.space 0x4
-gUnknown_030060B8: @ 30060B8
- .space 0x4
-
+ .include "contest.o"
.include "tv.o"
.include "mauville_old_man.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 37a34b19a..c58f85ddc 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -382,61 +382,9 @@ gUnknown_02039D8C: @ 2039D8C
.include "src/fldeff_cut.o"
.include "src/map_name_popup.o"
.include "src/item.o"
+ .include "src/contest.o"
-gUnknown_02039E00: @ 2039E00
- .space 0x100
-
-gUnknown_02039F00: @ 2039F00
- .space 0x8
-
-gUnknown_02039F08: @ 2039F08
- .space 0x8
-
-gUnknown_02039F10: @ 2039F10
- .space 0x8
-
-gUnknown_02039F18: @ 2039F18
- .space 0x8
-
-gUnknown_02039F20: @ 2039F20
- .space 0x4
-
-gUnknown_02039F24: @ 2039F24
- .space 0x1
-
-gUnknown_02039F25: @ 2039F25
- .space 0x1
-
-gUnknown_02039F26: @ 2039F26
- .space 0x4
-
-gUnknown_02039F2A: @ 2039F2A
- .space 0x1
-
-gUnknown_02039F2B: @ 2039F2B
- .space 0x1
-
-gSpecialVar_ContestCategory: @ 2039F2C
- .space 0x2
-
-gSpecialVar_ContestRank: @ 2039F2E
- .space 0x2
-
-gUnknown_02039F30: @ 2039F30
- .space 0x1
-
-gUnknown_02039F31: @ 2039F31
- .space 0x3
-
-gContestResources: @ 2039F34
- .space 0x4
-
-gUnknown_02039F38: @ 2039F38
- .space 0x4
-
-gUnknown_02039F3C: @ 2039F3C
- .space 0x20
-
+ .align 2
gUnknown_02039F5C: @ 2039F5C
.space 0x1
@@ -593,7 +541,7 @@ gUnknown_0203AB2C: @ 203AB2C
gUnknown_0203AB30: @ 203AB30
.space 0x4
-gUnknown_0203AB34: @ 203AB34
+sSlotMachine: @ 203AB34
.space 0x4
.include "src/battle_ai_script_commands.o"