summaryrefslogtreecommitdiff
path: root/asm/mail.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/mail.s')
-rw-r--r--asm/mail.s892
1 files changed, 892 insertions, 0 deletions
diff --git a/asm/mail.s b/asm/mail.s
new file mode 100644
index 000000000..5a3efbf69
--- /dev/null
+++ b/asm/mail.s
@@ -0,0 +1,892 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80F890C
+sub_80F890C: @ 80F890C
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ adds r6, r1, 0
+ lsls r2, 24
+ lsrs r5, r2, 24
+ ldr r2, _080F8958 @ =0x02000000
+ adds r1, r2, 0
+ adds r1, 0xFF
+ movs r0, 0x2
+ strb r0, [r1]
+ adds r0, 0xFE
+ adds r1, r2, r0
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r0, 0x82
+ lsls r0, 1
+ adds r1, r2, r0
+ ldr r0, _080F895C @ =sub_80EB3FC
+ str r0, [r1]
+ movs r0, 0x84
+ lsls r0, 1
+ adds r1, r2, r0
+ ldr r0, _080F8960 @ =ConvertEasyChatWordsToString
+ str r0, [r1]
+ ldrh r1, [r4, 0x20]
+ adds r0, r1, 0
+ subs r0, 0x79
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0xB
+ bhi _080F8964
+ subs r1, 0x79
+ adds r0, r2, 0
+ adds r0, 0xFA
+ strb r1, [r0]
+ b _080F896E
+ .align 2, 0
+_080F8958: .4byte 0x02000000
+_080F895C: .4byte sub_80EB3FC
+_080F8960: .4byte ConvertEasyChatWordsToString
+_080F8964:
+ adds r1, r2, 0
+ adds r1, 0xFA
+ movs r0, 0
+ strb r0, [r1]
+ movs r5, 0
+_080F896E:
+ ldr r1, _080F8994 @ =0x02000000
+ movs r2, 0x80
+ lsls r2, 1
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080F8980
+ cmp r0, 0x1
+ beq _080F899C
+_080F8980:
+ movs r0, 0x86
+ lsls r0, 1
+ adds r2, r1, r0
+ adds r0, r1, 0
+ adds r0, 0xFA
+ ldrb r0, [r0]
+ lsls r0, 3
+ ldr r1, _080F8998 @ =gUnknown_083E5730
+ b _080F89AC
+ .align 2, 0
+_080F8994: .4byte 0x02000000
+_080F8998: .4byte gUnknown_083E5730
+_080F899C:
+ movs r0, 0x86
+ lsls r0, 1
+ adds r2, r1, r0
+ adds r0, r1, 0
+ adds r0, 0xFA
+ ldrb r0, [r0]
+ lsls r0, 3
+ ldr r1, _080F89DC @ =gUnknown_083E57A4
+_080F89AC:
+ adds r0, r1
+ str r0, [r2]
+ ldrh r0, [r4, 0x1E]
+ mov r1, sp
+ bl sub_80A2D64
+ lsls r0, 16
+ ldr r1, _080F89E0 @ =0xffff0000
+ adds r0, r1
+ movs r1, 0xCD
+ lsls r1, 17
+ cmp r0, r1
+ bhi _080F89F8
+ ldr r0, _080F89E4 @ =0x02000000
+ adds r1, r0, 0
+ adds r1, 0xFA
+ ldrb r2, [r1]
+ adds r1, r0, 0
+ cmp r2, 0x6
+ beq _080F89E8
+ cmp r2, 0x9
+ beq _080F89F0
+ b _080F89FA
+ .align 2, 0
+_080F89DC: .4byte gUnknown_083E57A4
+_080F89E0: .4byte 0xffff0000
+_080F89E4: .4byte 0x02000000
+_080F89E8:
+ adds r2, r1, 0
+ adds r2, 0xFB
+ movs r0, 0x1
+ b _080F8A00
+_080F89F0:
+ adds r2, r1, 0
+ adds r2, 0xFB
+ movs r0, 0x2
+ b _080F8A00
+_080F89F8:
+ ldr r1, _080F8A20 @ =0x02000000
+_080F89FA:
+ adds r2, r1, 0
+ adds r2, 0xFB
+ movs r0, 0
+_080F8A00:
+ strb r0, [r2]
+ adds r0, r1, 0
+ adds r0, 0xF4
+ str r4, [r0]
+ subs r0, 0x8
+ str r6, [r0]
+ adds r0, 0xC
+ strb r5, [r0]
+ ldr r0, _080F8A24 @ =sub_80F8D50
+ bl SetMainCallback2
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F8A20: .4byte 0x02000000
+_080F8A24: .4byte sub_80F8D50
+ thumb_func_end sub_80F890C
+
+ thumb_func_start sub_80F8A28
+sub_80F8A28: @ 80F8A28
+ push {r4,r5,lr}
+ sub sp, 0x8
+ ldr r0, _080F8A44 @ =gMain
+ ldr r1, _080F8A48 @ =0x0000043c
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x12
+ bls _080F8A3A
+ b _080F8D3C
+_080F8A3A:
+ lsls r0, 2
+ ldr r1, _080F8A4C @ =_080F8A50
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080F8A44: .4byte gMain
+_080F8A48: .4byte 0x0000043c
+_080F8A4C: .4byte _080F8A50
+ .align 2, 0
+_080F8A50:
+ .4byte _080F8A9C
+ .4byte _080F8AB0
+ .4byte _080F8AC8
+ .4byte _080F8ACE
+ .4byte _080F8AD4
+ .4byte _080F8ADA
+ .4byte _080F8B10
+ .4byte _080F8B1C
+ .4byte _080F8B28
+ .4byte _080F8B34
+ .4byte _080F8B3A
+ .4byte _080F8B54
+ .4byte _080F8B78
+ .4byte _080F8BA0
+ .4byte _080F8C14
+ .4byte _080F8C2C
+ .4byte _080F8C58
+ .4byte _080F8CBC
+ .4byte _080F8CC6
+_080F8A9C:
+ movs r0, 0
+ bl SetVBlankCallback
+ bl remove_some_task
+ movs r1, 0x80
+ lsls r1, 19
+ movs r0, 0
+ strh r0, [r1]
+ b _080F8D30
+_080F8AB0:
+ add r1, sp, 0x4
+ movs r0, 0
+ strh r0, [r1]
+ movs r1, 0xE0
+ lsls r1, 19
+ ldr r2, _080F8AC4 @ =0x01000200
+ add r0, sp, 0x4
+ bl CpuSet
+ b _080F8D30
+ .align 2, 0
+_080F8AC4: .4byte 0x01000200
+_080F8AC8:
+ bl ResetPaletteFade
+ b _080F8D30
+_080F8ACE:
+ bl ResetTasks
+ b _080F8D30
+_080F8AD4:
+ bl ResetSpriteData
+ b _080F8D30
+_080F8ADA:
+ bl FreeAllSpritePalettes
+ ldr r0, _080F8B0C @ =REG_BG0HOFS
+ movs r1, 0
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x4
+ strh r1, [r0]
+ subs r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x4
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ adds r0, 0x32
+ strh r1, [r0]
+ adds r0, 0x2
+ strh r1, [r0]
+ b _080F8D30
+ .align 2, 0
+_080F8B0C: .4byte REG_BG0HOFS
+_080F8B10:
+ ldr r0, _080F8B18 @ =gWindowConfig_81E6DFC
+ bl SetUpWindowConfig
+ b _080F8D30
+ .align 2, 0
+_080F8B18: .4byte gWindowConfig_81E6DFC
+_080F8B1C:
+ ldr r0, _080F8B24 @ =gWindowConfig_81E6DFC
+ bl MultistepInitMenuWindowBegin
+ b _080F8D30
+ .align 2, 0
+_080F8B24: .4byte gWindowConfig_81E6DFC
+_080F8B28:
+ bl MultistepInitMenuWindowContinue
+ cmp r0, 0
+ beq _080F8B32
+ b _080F8D30
+_080F8B32:
+ b _080F8D3C
+_080F8B34:
+ bl MenuZeroFillScreen
+ b _080F8D30
+_080F8B3A:
+ mov r0, sp
+ adds r0, 0x6
+ movs r1, 0x1
+ strh r1, [r0]
+ ldr r1, _080F8B4C @ =0x06004800
+ ldr r2, _080F8B50 @ =0x01000400
+ bl CpuSet
+ b _080F8D30
+ .align 2, 0
+_080F8B4C: .4byte 0x06004800
+_080F8B50: .4byte 0x01000400
+_080F8B54:
+ ldr r2, _080F8B70 @ =gMailGraphicsTable
+ ldr r0, _080F8B74 @ =0x02000000
+ adds r0, 0xFA
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldr r0, [r0]
+ movs r1, 0
+ movs r2, 0x20
+ bl LoadPalette
+ b _080F8D30
+ .align 2, 0
+_080F8B70: .4byte gMailGraphicsTable
+_080F8B74: .4byte 0x02000000
+_080F8B78:
+ ldr r2, _080F8B94 @ =gMailGraphicsTable
+ ldr r0, _080F8B98 @ =0x02000000
+ adds r0, 0xFA
+ ldrb r1, [r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r2, 0x8
+ adds r0, r2
+ ldr r0, [r0]
+ ldr r1, _080F8B9C @ =0x06004000
+ bl LZ77UnCompVram
+ b _080F8D30
+ .align 2, 0
+_080F8B94: .4byte gMailGraphicsTable
+_080F8B98: .4byte 0x02000000
+_080F8B9C: .4byte 0x06004000
+_080F8BA0:
+ ldr r5, _080F8C00 @ =gMailGraphicsTable
+ ldr r4, _080F8C04 @ =0x02000000
+ adds r4, 0xFA
+ ldrb r1, [r4]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r1, r5, 0x4
+ adds r0, r1
+ ldr r0, [r0]
+ movs r1, 0xC0
+ lsls r1, 19
+ bl LZ77UnCompVram
+ ldr r3, _080F8C08 @ =gPlttBufferUnfaded
+ ldrb r1, [r4]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrh r0, [r0, 0x10]
+ movs r2, 0xF1
+ lsls r2, 1
+ adds r1, r3, r2
+ strh r0, [r1]
+ ldrb r1, [r4]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r5
+ ldrh r1, [r0, 0x12]
+ adds r2, 0xE
+ adds r0, r3, r2
+ strh r1, [r0]
+ ldr r1, _080F8C0C @ =gUnknown_083E562C
+ ldr r2, _080F8C10 @ =gSaveBlock2
+ ldrb r0, [r2, 0x8]
+ lsls r0, 2
+ adds r0, r1
+ ldrh r0, [r0]
+ strh r0, [r3, 0x14]
+ ldrb r0, [r2, 0x8]
+ lsls r0, 2
+ adds r1, 0x2
+ adds r0, r1
+ ldrh r0, [r0]
+ strh r0, [r3, 0x16]
+ b _080F8D30
+ .align 2, 0
+_080F8C00: .4byte gMailGraphicsTable
+_080F8C04: .4byte 0x02000000
+_080F8C08: .4byte gPlttBufferUnfaded
+_080F8C0C: .4byte gUnknown_083E562C
+_080F8C10: .4byte gSaveBlock2
+_080F8C14:
+ ldr r0, _080F8C28 @ =0x02000000
+ adds r0, 0xF8
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080F8C20
+ b _080F8D30
+_080F8C20:
+ bl sub_80F8DA0
+ b _080F8D30
+ .align 2, 0
+_080F8C28: .4byte 0x02000000
+_080F8C2C:
+ ldr r0, _080F8C4C @ =0x02000000
+ adds r0, 0xF8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080F8C3A
+ bl sub_80F8E80
+_080F8C3A:
+ ldr r0, _080F8C50 @ =sub_80F8F18
+ bl SetVBlankCallback
+ ldr r2, _080F8C54 @ =gPaletteFade
+ ldrb r0, [r2, 0x8]
+ movs r1, 0x80
+ orrs r0, r1
+ strb r0, [r2, 0x8]
+ b _080F8D30
+ .align 2, 0
+_080F8C4C: .4byte 0x02000000
+_080F8C50: .4byte sub_80F8F18
+_080F8C54: .4byte gPaletteFade
+_080F8C58:
+ ldr r5, _080F8C7C @ =0x02000000
+ adds r0, r5, 0
+ adds r0, 0xF4
+ ldr r0, [r0]
+ ldrh r0, [r0, 0x1E]
+ bl sub_809D4A8
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r5, 0
+ adds r0, 0xFB
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _080F8C80
+ cmp r0, 0x2
+ beq _080F8C98
+ b _080F8D30
+ .align 2, 0
+_080F8C7C: .4byte 0x02000000
+_080F8C80:
+ adds r0, r4, 0
+ bl sub_809D580
+ ldr r1, _080F8C94 @ =SpriteCallbackDummy
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x60
+ b _080F8CA8
+ .align 2, 0
+_080F8C94: .4byte SpriteCallbackDummy
+_080F8C98:
+ adds r0, r4, 0
+ bl sub_809D580
+ ldr r1, _080F8CB8 @ =SpriteCallbackDummy
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r2, 0x28
+_080F8CA8:
+ movs r3, 0x80
+ bl sub_809D3A4
+ adds r1, r5, 0
+ adds r1, 0xFC
+ strb r0, [r1]
+ b _080F8D30
+ .align 2, 0
+_080F8CB8: .4byte SpriteCallbackDummy
+_080F8CBC:
+ bl sub_8055870
+ cmp r0, 0x1
+ bne _080F8D30
+ b _080F8D3C
+_080F8CC6:
+ ldr r1, _080F8D14 @ =REG_BG0CNT
+ ldr r2, _080F8D18 @ =0x00009f08
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r2, _080F8D1C @ =0x00000801
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x2
+ ldr r2, _080F8D20 @ =0x00000902
+ adds r0, r2, 0
+ strh r0, [r1]
+ adds r1, 0x44
+ movs r0, 0
+ strh r0, [r1]
+ subs r1, 0x50
+ movs r2, 0xBA
+ lsls r2, 5
+ adds r0, r2, 0
+ strh r0, [r1]
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ ldr r2, _080F8D24 @ =gPaletteFade
+ ldrb r1, [r2, 0x8]
+ movs r0, 0x7F
+ ands r0, r1
+ strb r0, [r2, 0x8]
+ ldr r0, _080F8D28 @ =0x02000000
+ adds r0, 0xF0
+ ldr r1, _080F8D2C @ =sub_80F8F58
+ str r1, [r0]
+ movs r0, 0x1
+ b _080F8D3E
+ .align 2, 0
+_080F8D14: .4byte REG_BG0CNT
+_080F8D18: .4byte 0x00009f08
+_080F8D1C: .4byte 0x00000801
+_080F8D20: .4byte 0x00000902
+_080F8D24: .4byte gPaletteFade
+_080F8D28: .4byte 0x02000000
+_080F8D2C: .4byte sub_80F8F58
+_080F8D30:
+ ldr r1, _080F8D48 @ =gMain
+ ldr r0, _080F8D4C @ =0x0000043c
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_080F8D3C:
+ movs r0, 0
+_080F8D3E:
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080F8D48: .4byte gMain
+_080F8D4C: .4byte 0x0000043c
+ thumb_func_end sub_80F8A28
+
+ thumb_func_start sub_80F8D50
+sub_80F8D50: @ 80F8D50
+ push {lr}
+_080F8D52:
+ bl sub_80F8A28
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F8D6C
+ ldr r0, _080F8D68 @ =sub_80F8F2C
+ bl SetMainCallback2
+ b _080F8D78
+ .align 2, 0
+_080F8D68: .4byte sub_80F8F2C
+_080F8D6C:
+ bl sub_80F9344
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080F8D52
+_080F8D78:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F8D50
+
+ thumb_func_start sub_80F8D7C
+sub_80F8D7C: @ 80F8D7C
+ push {r4,lr}
+ adds r4, r0, 0
+ bl StringCopy
+ adds r0, r4, 0
+ bl sub_814A568
+ adds r0, r4, 0
+ bl StringLength
+ lsls r0, 16
+ lsrs r0, 16
+ adds r4, r0
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80F8D7C
+
+ thumb_func_start sub_80F8DA0
+sub_80F8DA0: @ 80F8DA0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r6, 0
+ movs r5, 0
+ ldr r2, _080F8E3C @ =0x02000000
+ movs r0, 0x86
+ lsls r0, 1
+ adds r1, r2, r0
+ ldr r0, [r1]
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _080F8E04
+ mov r8, r2
+ adds r7, r1, 0
+_080F8DBE:
+ lsls r0, r5, 3
+ subs r0, r5
+ lsls r0, 2
+ subs r0, r5
+ add r0, r8
+ mov r1, r8
+ adds r1, 0xF4
+ lsls r2, r6, 1
+ ldr r1, [r1]
+ adds r1, r2
+ ldr r2, [r7]
+ ldr r2, [r2, 0x4]
+ lsls r4, r5, 2
+ adds r2, r4, r2
+ ldr r2, [r2]
+ lsls r2, 28
+ lsrs r2, 30
+ movs r3, 0x1
+ bl ConvertEasyChatWordsToString
+ ldr r1, [r7]
+ ldr r0, [r1, 0x4]
+ adds r4, r0
+ ldr r0, [r4]
+ lsls r0, 28
+ lsrs r0, 30
+ adds r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r5, 0x1
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldrb r1, [r1]
+ cmp r5, r1
+ bcc _080F8DBE
+_080F8E04:
+ ldr r2, _080F8E40 @ =0x020000d8
+ adds r4, r2, 0
+ subs r4, 0xD8
+ adds r0, r2, 0
+ adds r0, 0x28
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080F8E48
+ ldr r1, [r2, 0x1C]
+ adds r1, 0x12
+ adds r0, r2, 0
+ bl sub_80F8D7C
+ adds r2, r0, 0
+ ldr r1, _080F8E44 @ =gOtherText_From
+ bl StringCopy
+ ldr r0, _080F8E40 @ =0x020000d8
+ bl StringLength
+ movs r2, 0x86
+ lsls r2, 1
+ adds r1, r4, r2
+ ldr r1, [r1]
+ ldrb r1, [r1, 0x2]
+ subs r1, r0
+ b _080F8E6A
+ .align 2, 0
+_080F8E3C: .4byte 0x02000000
+_080F8E40: .4byte 0x020000d8
+_080F8E44: .4byte gOtherText_From
+_080F8E48:
+ ldr r1, _080F8E7C @ =gOtherText_From
+ adds r0, r2, 0
+ bl StringCopy
+ adds r2, r0, 0
+ adds r0, r4, 0
+ adds r0, 0xF4
+ ldr r1, [r0]
+ adds r1, 0x12
+ adds r0, r2, 0
+ bl sub_80F8D7C
+ movs r1, 0x86
+ lsls r1, 1
+ adds r0, r4, r1
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x2]
+_080F8E6A:
+ adds r0, r4, 0
+ adds r0, 0xF9
+ strb r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F8E7C: .4byte gOtherText_From
+ thumb_func_end sub_80F8DA0
+
+ thumb_func_start sub_80F8E80
+sub_80F8E80: @ 80F8E80
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r6, 0
+ movs r4, 0
+ ldr r1, _080F8F10 @ =0x02000000
+ movs r0, 0x86
+ lsls r0, 1
+ adds r2, r1, r0
+ ldr r0, [r2]
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _080F8EF6
+ mov r8, r1
+ adds r7, r2, 0
+_080F8E9E:
+ lsls r0, r4, 3
+ subs r0, r4
+ lsls r0, 2
+ subs r0, r4
+ mov r1, r8
+ adds r5, r0, r1
+ ldrb r0, [r5]
+ cmp r0, 0xFF
+ beq _080F8EE8
+ cmp r0, 0
+ beq _080F8EE8
+ ldr r2, [r7]
+ ldr r1, [r2, 0x4]
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r0, [r0]
+ lsls r3, r0, 24
+ lsrs r3, 28
+ lsls r0, 30
+ lsrs r0, 30
+ adds r0, r6, r0
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldrb r2, [r2, 0x3]
+ lsrs r1, r2, 4
+ adds r1, r3
+ lsls r2, 28
+ lsrs r2, 28
+ adds r2, r6, r2
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r5, 0
+ bl MenuPrint
+ adds r0, r6, 0x2
+ lsls r0, 24
+ lsrs r6, r0, 24
+_080F8EE8:
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, [r7]
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcc _080F8E9E
+_080F8EF6:
+ ldr r0, _080F8F14 @ =0x020000d8
+ adds r1, r0, 0
+ adds r1, 0x21
+ ldrb r1, [r1]
+ ldr r2, [r0, 0x34]
+ ldrb r2, [r2, 0x1]
+ bl MenuPrint
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F8F10: .4byte 0x02000000
+_080F8F14: .4byte 0x020000d8
+ thumb_func_end sub_80F8E80
+
+ thumb_func_start sub_80F8F18
+sub_80F8F18: @ 80F8F18
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80F8F18
+
+ thumb_func_start sub_80F8F2C
+sub_80F8F2C: @ 80F8F2C
+ push {r4,lr}
+ ldr r4, _080F8F54 @ =0x02000000
+ adds r0, r4, 0
+ adds r0, 0xFB
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080F8F42
+ bl AnimateSprites
+ bl BuildOamBuffer
+_080F8F42:
+ adds r0, r4, 0
+ adds r0, 0xF0
+ ldr r0, [r0]
+ bl _call_via_r0
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F8F54: .4byte 0x02000000
+ thumb_func_end sub_80F8F2C
+
+ thumb_func_start sub_80F8F58
+sub_80F8F58: @ 80F8F58
+ push {lr}
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _080F8F6C
+ ldr r0, _080F8F70 @ =0x02000000
+ adds r0, 0xF0
+ ldr r1, _080F8F74 @ =sub_80F8F78
+ str r1, [r0]
+_080F8F6C:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F8F70: .4byte 0x02000000
+_080F8F74: .4byte sub_80F8F78
+ thumb_func_end sub_80F8F58
+
+ thumb_func_start sub_80F8F78
+sub_80F8F78: @ 80F8F78
+ push {lr}
+ sub sp, 0x4
+ ldr r0, _080F8FA8 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ beq _080F8FA0
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r0, _080F8FAC @ =0x02000000
+ adds r0, 0xF0
+ ldr r1, _080F8FB0 @ =sub_80F8FB4
+ str r1, [r0]
+_080F8FA0:
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F8FA8: .4byte gMain
+_080F8FAC: .4byte 0x02000000
+_080F8FB0: .4byte sub_80F8FB4
+ thumb_func_end sub_80F8F78
+
+ thumb_func_start sub_80F8FB4
+sub_80F8FB4: @ 80F8FB4
+ push {r4,lr}
+ bl UpdatePaletteFade
+ lsls r0, 24
+ cmp r0, 0
+ bne _080F9012
+ ldr r4, _080F9018 @ =0x02000000
+ adds r0, r4, 0
+ adds r0, 0xEC
+ ldr r0, [r0]
+ bl SetMainCallback2
+ adds r0, r4, 0
+ adds r0, 0xFB
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bgt _080F9002
+ cmp r0, 0x1
+ blt _080F9002
+ adds r0, r4, 0
+ adds r0, 0xF4
+ ldr r0, [r0]
+ ldrh r0, [r0, 0x1E]
+ bl sub_809D4A8
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_809D608
+ adds r0, r4, 0
+ adds r0, 0xFC
+ ldrb r1, [r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _080F901C @ =gSprites
+ adds r0, r1
+ bl sub_809D510
+_080F9002:
+ ldr r0, _080F9018 @ =0x02000000
+ movs r2, 0x88
+ lsls r2, 1
+ movs r1, 0
+ bl memset
+ bl ResetPaletteFade
+_080F9012:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080F9018: .4byte 0x02000000
+_080F901C: .4byte gSprites
+ thumb_func_end sub_80F8FB4
+
+ .align 2, 0 @ Don't pad with nop.