Files
pokeemerald-jp/asm/scanline_effect.s
2019-09-27 01:42:56 -04:00

2388 lines
41 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start ScanlineEffect_Stop
ScanlineEffect_Stop: @ 0x080B9710
push {r4, lr}
ldr r4, _080B9740
movs r0, #0
strb r0, [r4, #0x15]
ldr r1, _080B9744
ldrh r2, [r1, #0xa]
ldr r0, _080B9748
ands r0, r2
strh r0, [r1, #0xa]
ldrh r2, [r1, #0xa]
ldr r0, _080B974C
ands r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r1, #0xa]
ldrb r0, [r4, #0x18]
cmp r0, #0xff
beq _080B973A
bl DestroyTask
movs r0, #0xff
strb r0, [r4, #0x18]
_080B973A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B9740: .4byte 0x020397C8
_080B9744: .4byte 0x040000B0
_080B9748: .4byte 0x0000C5FF
_080B974C: .4byte 0x00007FFF
thumb_func_end ScanlineEffect_Stop
thumb_func_start ScanlineEffect_Clear
ScanlineEffect_Clear: @ 0x080B9750
push {r4, lr}
sub sp, #4
mov r0, sp
movs r4, #0
strh r4, [r0]
ldr r1, _080B9784
ldr r2, _080B9788
bl CpuSet
ldr r0, _080B978C
movs r1, #0
str r1, [r0]
str r1, [r0, #4]
str r1, [r0, #8]
str r1, [r0, #0xc]
strb r4, [r0, #0x14]
strb r4, [r0, #0x15]
strb r4, [r0, #0x16]
strb r4, [r0, #0x17]
movs r1, #0xff
strb r1, [r0, #0x18]
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B9784: .4byte 0x020388C8
_080B9788: .4byte 0x01000780
_080B978C: .4byte 0x020397C8
thumb_func_end ScanlineEffect_Clear
thumb_func_start ScanlineEffect_SetParams
ScanlineEffect_SetParams: @ 0x080B9790
push {lr}
sub sp, #0xc
str r0, [sp]
str r1, [sp, #4]
str r2, [sp, #8]
ldr r0, _080B97B4
cmp r1, r0
bne _080B97C4
ldr r0, _080B97B8
ldr r1, _080B97BC
str r1, [r0]
movs r2, #0xf0
lsls r2, r2, #3
adds r1, r1, r2
str r1, [r0, #4]
ldr r1, _080B97C0
b _080B97D4
.align 2, 0
_080B97B4: .4byte 0xA2600001
_080B97B8: .4byte 0x020397C8
_080B97BC: .4byte 0x020388CA
_080B97C0: .4byte 0x080B988D
_080B97C4:
ldr r0, _080B97F4
ldr r1, _080B97F8
str r1, [r0]
movs r2, #0xf0
lsls r2, r2, #3
adds r1, r1, r2
str r1, [r0, #4]
ldr r1, _080B97FC
_080B97D4:
str r1, [r0, #0x10]
adds r1, r0, #0
ldr r0, [sp, #4]
str r0, [r1, #0xc]
ldr r0, [sp]
str r0, [r1, #8]
mov r0, sp
ldrb r0, [r0, #8]
strb r0, [r1, #0x15]
mov r0, sp
ldrb r0, [r0, #9]
strb r0, [r1, #0x16]
strb r0, [r1, #0x17]
add sp, #0xc
pop {r0}
bx r0
.align 2, 0
_080B97F4: .4byte 0x020397C8
_080B97F8: .4byte 0x020388CC
_080B97FC: .4byte 0x080B98AD
thumb_func_end ScanlineEffect_SetParams
thumb_func_start ScanlineEffect_InitHBlankDmaTransfer
ScanlineEffect_InitHBlankDmaTransfer: @ 0x080B9800
push {r4, lr}
ldr r4, _080B9830
ldrb r0, [r4, #0x15]
cmp r0, #0
beq _080B987A
cmp r0, #3
bne _080B9844
movs r0, #0
strb r0, [r4, #0x15]
ldr r1, _080B9834
ldrh r2, [r1, #0xa]
ldr r0, _080B9838
ands r0, r2
strh r0, [r1, #0xa]
ldrh r2, [r1, #0xa]
ldr r0, _080B983C
ands r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r1, #0xa]
ldr r1, _080B9840
movs r0, #1
strb r0, [r1]
b _080B987A
.align 2, 0
_080B9830: .4byte 0x020397C8
_080B9834: .4byte 0x040000B0
_080B9838: .4byte 0x0000C5FF
_080B983C: .4byte 0x00007FFF
_080B9840: .4byte 0x020397E4
_080B9844:
ldr r1, _080B9880
ldrh r2, [r1, #0xa]
ldr r0, _080B9884
ands r0, r2
strh r0, [r1, #0xa]
ldrh r2, [r1, #0xa]
ldr r0, _080B9888
ands r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r1, #0xa]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
adds r0, r0, r4
ldr r0, [r0]
str r0, [r1]
ldr r0, [r4, #8]
str r0, [r1, #4]
ldr r0, [r4, #0xc]
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, [r4, #0x10]
bl _call_via_r0
ldrb r0, [r4, #0x14]
movs r1, #1
eors r0, r1
strb r0, [r4, #0x14]
_080B987A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080B9880: .4byte 0x040000B0
_080B9884: .4byte 0x0000C5FF
_080B9888: .4byte 0x00007FFF
thumb_func_end ScanlineEffect_InitHBlankDmaTransfer
thumb_func_start CopyValue16Bit
CopyValue16Bit: @ 0x080B988C
ldr r0, _080B98A4
ldr r2, [r0, #8]
ldrb r1, [r0, #0x14]
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #7
ldr r1, _080B98A8
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2]
bx lr
.align 2, 0
_080B98A4: .4byte 0x020397C8
_080B98A8: .4byte 0x020388C8
thumb_func_end CopyValue16Bit
thumb_func_start CopyValue32Bit
CopyValue32Bit: @ 0x080B98AC
ldr r0, _080B98C4
ldr r2, [r0, #8]
ldrb r1, [r0, #0x14]
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #7
ldr r1, _080B98C8
adds r0, r0, r1
ldr r0, [r0]
str r0, [r2]
bx lr
.align 2, 0
_080B98C4: .4byte 0x020397C8
_080B98C8: .4byte 0x020388C8
thumb_func_end CopyValue32Bit
thumb_func_start TaskFunc_UpdateWavePerFrame
TaskFunc_UpdateWavePerFrame: @ 0x080B98CC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov ip, r0
movs r6, #0
ldr r0, _080B98F4
ldrb r0, [r0]
cmp r0, #0
beq _080B98FC
mov r0, ip
bl DestroyTask
ldr r1, _080B98F8
movs r0, #0xff
strb r0, [r1, #0x18]
b _080B9A7C
.align 2, 0
_080B98F4: .4byte 0x020397E4
_080B98F8: .4byte 0x020397C8
_080B98FC:
ldr r1, _080B9928
mov r0, ip
lsls r2, r0, #2
adds r0, r2, r0
lsls r0, r0, #3
adds r3, r0, r1
movs r4, #0x16
ldrsh r0, [r3, r4]
mov sl, r1
mov sb, r2
cmp r0, #0
beq _080B99A8
movs r1, #0x14
ldrsh r0, [r3, r1]
cmp r0, #0xe
bhi _080B99A8
lsls r0, r0, #2
ldr r1, _080B992C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B9928: .4byte 0x03005B60
_080B992C: .4byte 0x080B9930
_080B9930: @ jump table
.4byte _080B996C @ case 0
.4byte _080B99A8 @ case 1
.4byte _080B9974 @ case 2
.4byte _080B99A8 @ case 3
.4byte _080B997C @ case 4
.4byte _080B99A8 @ case 5
.4byte _080B9984 @ case 6
.4byte _080B99A8 @ case 7
.4byte _080B998C @ case 8
.4byte _080B99A8 @ case 9
.4byte _080B9994 @ case 10
.4byte _080B99A8 @ case 11
.4byte _080B999C @ case 12
.4byte _080B99A8 @ case 13
.4byte _080B99A4 @ case 14
_080B996C:
ldr r0, _080B9970
b _080B99A6
.align 2, 0
_080B9970: .4byte 0x02022AC8
_080B9974:
ldr r0, _080B9978
b _080B99A6
.align 2, 0
_080B9978: .4byte 0x02022ACA
_080B997C:
ldr r0, _080B9980
b _080B99A6
.align 2, 0
_080B9980: .4byte 0x02022ACC
_080B9984:
ldr r0, _080B9988
b _080B99A6
.align 2, 0
_080B9988: .4byte 0x02022ACE
_080B998C:
ldr r0, _080B9990
b _080B99A6
.align 2, 0
_080B9990: .4byte 0x02022AD0
_080B9994:
ldr r0, _080B9998
b _080B99A6
.align 2, 0
_080B9998: .4byte 0x02022AD2
_080B999C:
ldr r0, _080B99A0
b _080B99A6
.align 2, 0
_080B99A0: .4byte 0x02022AD4
_080B99A4:
ldr r0, _080B9A08
_080B99A6:
ldrh r6, [r0]
_080B99A8:
mov r0, sb
add r0, ip
lsls r0, r0, #3
mov r2, sl
adds r1, r0, r2
ldrh r2, [r1, #0x10]
movs r3, #0x10
ldrsh r0, [r1, r3]
cmp r0, #0
beq _080B9A14
subs r0, r2, #1
strh r0, [r1, #0x10]
movs r4, #0xe
ldrsh r0, [r1, r4]
movs r3, #0xa0
lsls r3, r3, #1
adds r2, r0, r3
movs r4, #8
ldrsh r3, [r1, r4]
movs r4, #0xa
ldrsh r0, [r1, r4]
cmp r3, r0
bge _080B9A7C
ldr r5, _080B9A0C
ldr r0, _080B9A10
mov r8, r0
adds r7, r1, #0
lsls r0, r2, #1
adds r4, r0, r5
_080B99E2:
lsls r2, r3, #1
mov r0, r8
ldrb r1, [r0, #0x14]
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #7
adds r2, r2, r0
adds r2, r2, r5
ldrh r0, [r4]
adds r0, r0, r6
strh r0, [r2]
adds r4, #2
adds r3, #1
movs r1, #0xa
ldrsh r0, [r7, r1]
cmp r3, r0
blt _080B99E2
b _080B9A7C
.align 2, 0
_080B9A08: .4byte 0x02022AD6
_080B9A0C: .4byte 0x020388C8
_080B9A10: .4byte 0x020397C8
_080B9A14:
ldrh r0, [r1, #0x12]
strh r0, [r1, #0x10]
movs r2, #0xe
ldrsh r0, [r1, r2]
movs r3, #0xa0
lsls r3, r3, #1
adds r2, r0, r3
movs r4, #8
ldrsh r3, [r1, r4]
movs r4, #0xa
ldrsh r0, [r1, r4]
cmp r3, r0
bge _080B9A5C
ldr r5, _080B9A8C
adds r7, r1, #0
lsls r0, r2, #1
adds r4, r0, r5
ldr r0, _080B9A90
mov r8, r0
_080B9A3A:
lsls r2, r3, #1
mov r0, r8
ldrb r1, [r0, #0x14]
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #7
adds r2, r2, r0
adds r2, r2, r5
ldrh r0, [r4]
adds r0, r0, r6
strh r0, [r2]
adds r4, #2
adds r3, #1
movs r1, #0xa
ldrsh r0, [r7, r1]
cmp r3, r0
blt _080B9A3A
_080B9A5C:
mov r0, sb
add r0, ip
lsls r0, r0, #3
mov r3, sl
adds r2, r0, r3
ldrh r0, [r2, #0xe]
adds r0, #1
strh r0, [r2, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r4, #0xc
ldrsh r1, [r2, r4]
cmp r0, r1
bne _080B9A7C
movs r0, #0
strh r0, [r2, #0xe]
_080B9A7C:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080B9A8C: .4byte 0x020388C8
_080B9A90: .4byte 0x020397C8
thumb_func_end TaskFunc_UpdateWavePerFrame
thumb_func_start GenerateWave
GenerateWave: @ 0x080B9A94
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
lsls r1, r1, #0x18
lsrs r5, r1, #0x18
lsls r2, r2, #0x18
lsrs r4, r2, #0x18
movs r1, #0
movs r2, #0
ldr r0, _080B9AD8
mov ip, r0
_080B9AA8:
lsls r0, r1, #1
adds r3, r0, r6
lsls r0, r2, #1
add r0, ip
movs r7, #0
ldrsh r0, [r0, r7]
muls r0, r4, r0
cmp r0, #0
bge _080B9ABC
adds r0, #0xff
_080B9ABC:
asrs r0, r0, #8
strh r0, [r3]
adds r0, r2, r5
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
adds r0, r1, #1
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0xff
bls _080B9AA8
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080B9AD8: .4byte 0x082FA8CC
thumb_func_end GenerateWave
thumb_func_start ScanlineEffect_InitWave
ScanlineEffect_InitWave: @ 0x080B9ADC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x20
adds r5, r0, #0
str r1, [sp, #0x10]
ldr r0, [sp, #0x40]
mov r8, r0
ldr r1, [sp, #0x44]
mov sb, r1
ldr r0, [sp, #0x48]
mov sl, r0
lsls r5, r5, #0x18
lsrs r5, r5, #0x18
ldr r1, [sp, #0x10]
lsls r1, r1, #0x18
str r1, [sp, #0x14]
lsrs r0, r1, #0x18
str r0, [sp, #0xc]
lsls r1, r2, #0x18
lsrs r1, r1, #0x18
str r1, [sp, #0x18]
lsls r2, r3, #0x18
lsrs r2, r2, #0x18
str r2, [sp, #0x1c]
mov r1, r8
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
mov r8, r1
mov r3, sb
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
mov sb, r3
mov r0, sl
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sl, r0
bl ScanlineEffect_Clear
ldr r0, _080B9BE8
add r0, sb
str r0, [sp]
ldr r0, _080B9BEC
str r0, [sp, #4]
mov r1, sp
movs r0, #1
strb r0, [r1, #8]
mov r0, sp
movs r1, #0
strb r1, [r0, #9]
ldr r0, [sp]
ldr r1, [sp, #4]
ldr r2, [sp, #8]
bl ScanlineEffect_SetParams
ldr r0, _080B9BF0
movs r1, #0
bl CreateTask
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
ldr r0, _080B9BF4
lsls r4, r7, #2
adds r4, r4, r7
lsls r4, r4, #3
adds r4, r4, r0
strh r5, [r4, #8]
mov r3, sp
ldrh r3, [r3, #0xc]
strh r3, [r4, #0xa]
movs r0, #0x80
lsls r0, r0, #1
ldr r1, [sp, #0x18]
bl __divsi3
strh r0, [r4, #0xc]
movs r0, #0
strh r0, [r4, #0xe]
mov r1, r8
strh r1, [r4, #0x10]
strh r1, [r4, #0x12]
mov r3, sb
strh r3, [r4, #0x14]
mov r0, sl
strh r0, [r4, #0x16]
ldr r0, _080B9BF8
strb r7, [r0, #0x18]
ldr r0, _080B9BFC
movs r1, #0
strb r1, [r0]
ldr r4, _080B9C00
ldr r3, [sp, #0xc]
subs r6, r3, r5
lsls r3, r6, #0x18
lsrs r3, r3, #0x18
adds r0, r4, #0
ldr r1, [sp, #0x18]
ldr r2, [sp, #0x1c]
bl GenerateWave
ldr r0, [sp, #0xc]
cmp r5, r0
bge _080B9BD6
ldr r1, _080B9C04
adds r2, r4, r1
lsls r1, r5, #1
movs r3, #0xf0
lsls r3, r3, #3
adds r0, r1, r3
adds r3, r0, r2
adds r1, r1, r2
adds r2, r4, #0
adds r5, r6, #0
_080B9BC2:
ldrh r0, [r2]
strh r0, [r1]
ldrh r0, [r2]
strh r0, [r3]
adds r2, #2
adds r3, #2
adds r1, #2
subs r5, #1
cmp r5, #0
bne _080B9BC2
_080B9BD6:
adds r0, r7, #0
add sp, #0x20
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080B9BE8: .4byte 0x04000010
_080B9BEC: .4byte 0xA2600001
_080B9BF0: .4byte 0x080B98CD
_080B9BF4: .4byte 0x03005B60
_080B9BF8: .4byte 0x020397C8
_080B9BFC: .4byte 0x020397E4
_080B9C00: .4byte 0x02038B48
_080B9C04: .4byte 0xFFFFFD80
thumb_func_end ScanlineEffect_InitWave
thumb_func_start BattleScene_ProcessInput
BattleScene_ProcessInput: @ 0x080B9C08
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
pop {r0}
bx r0
.align 2, 0
thumb_func_end BattleScene_ProcessInput
thumb_func_start BattleStyle_ProcessInput
BattleStyle_ProcessInput: @ 0x080B9C20
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
.align 2, 0
thumb_func_end BattleStyle_ProcessInput
thumb_func_start CB2_InitOptionMenu
CB2_InitOptionMenu: @ 0x080B9C34
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #0xc
ldr r1, _080B9C58
movs r2, #0x87
lsls r2, r2, #3
adds r0, r1, r2
ldrb r0, [r0]
adds r2, r1, #0
cmp r0, #0xb
bhi _080B9C90
lsls r0, r0, #2
ldr r1, _080B9C5C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080B9C58: .4byte 0x03002360
_080B9C5C: .4byte 0x080B9C60
_080B9C60: @ jump table
.4byte _080B9C90 @ case 0
.4byte _080B9CA4 @ case 1
.4byte _080B9DF4 @ case 2
.4byte _080B9E14 @ case 3
.4byte _080B9E38 @ case 4
.4byte _080B9E70 @ case 5
.4byte _080B9E80 @ case 6
.4byte _080B9E98 @ case 7
.4byte _080B9EA0 @ case 8
.4byte _080B9EB8 @ case 9
.4byte _080B9ECC @ case 10
.4byte _080B9F64 @ case 11
_080B9C90:
movs r0, #0
bl SetVBlankCallback
ldr r1, _080B9CA0
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
b _080B9F4C
.align 2, 0
_080B9CA0: .4byte 0x03002360
_080B9CA4:
movs r3, #0xc0
lsls r3, r3, #0x13
movs r4, #0xc0
lsls r4, r4, #9
add r1, sp, #8
mov r8, r1
add r2, sp, #4
movs r6, #0
ldr r1, _080B9DE4
movs r5, #0x80
lsls r5, r5, #5
ldr r7, _080B9DE8
movs r0, #0x81
lsls r0, r0, #0x18
mov ip, r0
_080B9CC2:
strh r6, [r2]
add r0, sp, #4
str r0, [r1]
str r3, [r1, #4]
str r7, [r1, #8]
ldr r0, [r1, #8]
adds r3, r3, r5
subs r4, r4, r5
cmp r4, r5
bhi _080B9CC2
strh r6, [r2]
add r2, sp, #4
str r2, [r1]
str r3, [r1, #4]
lsrs r0, r4, #1
mov r2, ip
orrs r0, r2
str r0, [r1, #8]
ldr r0, [r1, #8]
movs r0, #0xe0
lsls r0, r0, #0x13
movs r3, #0x80
lsls r3, r3, #3
movs r4, #0
str r4, [sp, #8]
ldr r2, _080B9DE4
mov r1, r8
str r1, [r2]
str r0, [r2, #4]
lsrs r0, r3, #2
movs r1, #0x85
lsls r1, r1, #0x18
orrs r0, r1
str r0, [r2, #8]
ldr r0, [r2, #8]
movs r1, #0xa0
lsls r1, r1, #0x13
add r0, sp, #4
strh r4, [r0]
str r0, [r2]
str r1, [r2, #4]
lsrs r3, r3, #1
movs r0, #0x81
lsls r0, r0, #0x18
orrs r3, r0
str r3, [r2, #8]
ldr r0, [r2, #8]
movs r0, #0
movs r1, #0
bl SetGpuReg
movs r0, #0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _080B9DEC
movs r0, #0
movs r2, #2
bl InitBgsFromTemplates
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #0
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #1
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #1
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #2
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #2
movs r1, #0
movs r2, #0
bl ChangeBgY
movs r0, #3
movs r1, #0
movs r2, #0
bl ChangeBgX
movs r0, #3
movs r1, #0
movs r2, #0
bl ChangeBgY
ldr r0, _080B9DF0
bl InitWindows
bl DeactivateAllTextPrinters
movs r0, #0x40
movs r1, #0
bl SetGpuReg
movs r0, #0x44
movs r1, #0
bl SetGpuReg
movs r0, #0x48
movs r1, #1
bl SetGpuReg
movs r0, #0x4a
movs r1, #0x23
bl SetGpuReg
movs r0, #0x50
movs r1, #0xc1
bl SetGpuReg
movs r0, #0x52
movs r1, #0
bl SetGpuReg
movs r0, #0x54
movs r1, #4
bl SetGpuReg
movs r1, #0xc1
lsls r1, r1, #6
movs r0, #0
bl SetGpuReg
movs r0, #0
bl ShowBg
movs r0, #1
bl ShowBg
b _080B9F44
.align 2, 0
_080B9DE4: .4byte 0x040000D4
_080B9DE8: .4byte 0x81000800
_080B9DEC: .4byte 0x08537414
_080B9DF0: .4byte 0x085373FC
_080B9DF4:
bl ResetPaletteFade
bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
ldr r1, _080B9E10
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
b _080B9F4C
.align 2, 0
_080B9E10: .4byte 0x03002360
_080B9E14:
ldr r0, _080B9E34
ldr r0, [r0]
ldrb r0, [r0, #0x14]
lsrs r0, r0, #3
bl GetWindowFrameTilesPal
ldr r1, [r0]
movs r2, #0x90
lsls r2, r2, #1
movs r3, #0xd1
lsls r3, r3, #1
movs r0, #1
bl LoadBgTiles
b _080B9F44
.align 2, 0
_080B9E34: .4byte 0x03005AF0
_080B9E38:
ldr r0, _080B9E64
movs r1, #0
movs r2, #2
bl LoadPalette
ldr r0, _080B9E68
ldr r0, [r0]
ldrb r0, [r0, #0x14]
lsrs r0, r0, #3
bl GetWindowFrameTilesPal
ldr r0, [r0, #4]
movs r1, #0x70
movs r2, #0x20
bl LoadPalette
ldr r1, _080B9E6C
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
b _080B9F4C
.align 2, 0
_080B9E64: .4byte 0x0853741C
_080B9E68: .4byte 0x03005AF0
_080B9E6C: .4byte 0x03002360
_080B9E70:
ldr r0, _080B9E7C
movs r1, #0x10
movs r2, #0x20
bl LoadPalette
b _080B9F44
.align 2, 0
_080B9E7C: .4byte 0x085372B0
_080B9E80:
movs r0, #0
bl PutWindowTilemap
bl DrawTextOption
ldr r1, _080B9E94
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
b _080B9F4C
.align 2, 0
_080B9E94: .4byte 0x03002360
_080B9E98:
movs r0, #0x87
lsls r0, r0, #3
adds r1, r2, r0
b _080B9F4C
_080B9EA0:
movs r0, #1
bl PutWindowTilemap
bl sub_080BA834
ldr r1, _080B9EC8
movs r2, #0x87
lsls r2, r2, #3
adds r1, r1, r2
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_080B9EB8:
bl sub_080BA890
ldr r1, _080B9EC8
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
b _080B9F4C
.align 2, 0
_080B9EC8: .4byte 0x03002360
_080B9ECC:
ldr r0, _080B9F54
movs r1, #0
bl CreateTask
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r1, _080B9F58
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
adds r4, r4, r1
movs r0, #0
strh r0, [r4, #8]
ldr r0, _080B9F5C
ldr r2, [r0]
ldrb r0, [r2, #0x14]
lsls r0, r0, #0x1d
lsrs r0, r0, #0x1d
strh r0, [r4, #0xa]
ldrb r1, [r2, #0x15]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1f
strh r1, [r4, #0xc]
ldrb r1, [r2, #0x15]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1f
strh r1, [r4, #0xe]
ldrb r1, [r2, #0x15]
lsls r1, r1, #0x1f
lsrs r1, r1, #0x1f
strh r1, [r4, #0x10]
ldrb r1, [r2, #0x13]
strh r1, [r4, #0x12]
ldrb r1, [r2, #0x14]
lsrs r1, r1, #3
strh r1, [r4, #0x14]
bl BattleScene_DrawChoices
ldrb r0, [r4, #0xc]
bl Sound_DrawChoices
ldrb r0, [r4, #0xe]
bl TextSpeed_ProcessInput
ldrb r0, [r4, #0x10]
bl TextSpeed_DrawChoices
ldrb r0, [r4, #0x12]
bl sub_080BA780
ldrb r0, [r4, #0x14]
bl FrameType_DrawChoices
ldrb r0, [r4, #8]
bl HighlightOptionMenuItem
movs r0, #1
movs r1, #3
bl CopyWindowToVram
_080B9F44:
ldr r1, _080B9F60
movs r2, #0x87
lsls r2, r2, #3
adds r1, r1, r2
_080B9F4C:
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
b _080B9F80
.align 2, 0
_080B9F54: .4byte 0x080B9F95
_080B9F58: .4byte 0x03005B60
_080B9F5C: .4byte 0x03005AF0
_080B9F60: .4byte 0x03002360
_080B9F64:
movs r0, #1
rsbs r0, r0, #0
movs r1, #0
str r1, [sp]
movs r2, #0x10
movs r3, #0
bl BeginNormalPaletteFade
ldr r0, _080B9F8C
bl SetVBlankCallback
ldr r0, _080B9F90
bl SetMainCallback2
_080B9F80:
add sp, #0xc
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080B9F8C: .4byte 0x080B9C21
_080B9F90: .4byte 0x080B9C09
thumb_func_end CB2_InitOptionMenu
thumb_func_start Task_OptionMenuFadeIn
Task_OptionMenuFadeIn: @ 0x080B9F94
push {lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
ldr r0, _080B9FB8
ldrb r1, [r0, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _080B9FB4
ldr r0, _080B9FBC
lsls r1, r2, #2
adds r1, r1, r2
lsls r1, r1, #3
adds r1, r1, r0
ldr r0, _080B9FC0
str r0, [r1]
_080B9FB4:
pop {r0}
bx r0
.align 2, 0
_080B9FB8: .4byte 0x02037C74
_080B9FBC: .4byte 0x03005B60
_080B9FC0: .4byte 0x080B9FC5
thumb_func_end Task_OptionMenuFadeIn
thumb_func_start Task_OptionMenuProcessInput
Task_OptionMenuProcessInput: @ 0x080B9FC4
push {r4, r5, r6, r7, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _080B9FEC
ldrh r1, [r0, #0x2e]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080B9FF4
ldr r0, _080B9FF0
lsls r1, r4, #2
adds r1, r1, r4
lsls r1, r1, #3
adds r1, r1, r0
movs r2, #8
ldrsh r0, [r1, r2]
cmp r0, #6
beq _080B9FEA
b _080BA1B2
_080B9FEA:
b _080BA006
.align 2, 0
_080B9FEC: .4byte 0x03002360
_080B9FF0: .4byte 0x03005B60
_080B9FF4:
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080BA014
ldr r0, _080BA00C
lsls r1, r4, #2
adds r1, r1, r4
lsls r1, r1, #3
adds r1, r1, r0
_080BA006:
ldr r0, _080BA010
str r0, [r1]
b _080BA1B2
.align 2, 0
_080BA00C: .4byte 0x03005B60
_080BA010: .4byte 0x080BA1BD
_080BA014:
movs r0, #0x40
ands r0, r1
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
cmp r6, #0
beq _080BA044
ldr r1, _080BA03C
lsls r2, r4, #2
adds r0, r2, r4
lsls r0, r0, #3
adds r3, r0, r1
ldrh r5, [r3, #8]
movs r6, #8
ldrsh r0, [r3, r6]
adds r7, r1, #0
cmp r0, #0
ble _080BA040
subs r0, r5, #1
b _080BA064
.align 2, 0
_080BA03C: .4byte 0x03005B60
_080BA040:
movs r0, #6
b _080BA064
_080BA044:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080BA07C
ldr r1, _080BA068
lsls r2, r4, #2
adds r0, r2, r4
lsls r0, r0, #3
adds r3, r0, r1
ldrh r5, [r3, #8]
movs r7, #8
ldrsh r0, [r3, r7]
adds r7, r1, #0
cmp r0, #5
bgt _080BA06C
adds r0, r5, #1
_080BA064:
strh r0, [r3, #8]
b _080BA06E
.align 2, 0
_080BA068: .4byte 0x03005B60
_080BA06C:
strh r6, [r3, #8]
_080BA06E:
adds r0, r2, r4
lsls r0, r0, #3
adds r0, r0, r7
ldrb r0, [r0, #8]
bl HighlightOptionMenuItem
b _080BA1B2
_080BA07C:
ldr r0, _080BA09C
lsls r2, r4, #2
adds r1, r2, r4
lsls r1, r1, #3
adds r1, r1, r0
movs r3, #8
ldrsh r1, [r1, r3]
adds r7, r0, #0
cmp r1, #5
bls _080BA092
b _080BA1B2
_080BA092:
lsls r0, r1, #2
ldr r1, _080BA0A0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080BA09C: .4byte 0x03005B60
_080BA0A0: .4byte 0x080BA0A4
_080BA0A4: @ jump table
.4byte _080BA0BC @ case 0
.4byte _080BA0E2 @ case 1
.4byte _080BA108 @ case 2
.4byte _080BA12E @ case 3
.4byte _080BA154 @ case 4
.4byte _080BA17A @ case 5
_080BA0BC:
adds r4, r2, r4
lsls r4, r4, #3
adds r4, r4, r7
ldrb r5, [r4, #0xa]
adds r0, r5, #0
bl ButtonMode_ProcessInput
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
strh r0, [r4, #0xa]
movs r6, #0xa
ldrsh r0, [r4, r6]
cmp r5, r0
beq _080BA19E
adds r0, r1, #0
bl BattleScene_DrawChoices
b _080BA19E
_080BA0E2:
adds r4, r2, r4
lsls r4, r4, #3
adds r4, r4, r7
ldrb r5, [r4, #0xc]
adds r0, r5, #0
bl BattleStyle_DrawChoices
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
strh r0, [r4, #0xc]
movs r7, #0xc
ldrsh r0, [r4, r7]
cmp r5, r0
beq _080BA19E
adds r0, r1, #0
bl Sound_DrawChoices
b _080BA19E
_080BA108:
adds r4, r2, r4
lsls r4, r4, #3
adds r4, r4, r7
ldrb r5, [r4, #0xe]
adds r0, r5, #0
bl DrawOptionMenuTexts
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
strh r0, [r4, #0xe]
movs r2, #0xe
ldrsh r0, [r4, r2]
cmp r5, r0
beq _080BA19E
adds r0, r1, #0
bl TextSpeed_ProcessInput
b _080BA19E
_080BA12E:
adds r4, r2, r4
lsls r4, r4, #3
adds r4, r4, r7
ldrb r5, [r4, #0x10]
adds r0, r5, #0
bl Sound_ProcessInput
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
strh r0, [r4, #0x10]
movs r3, #0x10
ldrsh r0, [r4, r3]
cmp r5, r0
beq _080BA19E
adds r0, r1, #0
bl TextSpeed_DrawChoices
b _080BA19E
_080BA154:
adds r4, r2, r4
lsls r4, r4, #3
adds r4, r4, r7
ldrb r5, [r4, #0x12]
adds r0, r5, #0
bl ButtonMode_DrawChoices
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
strh r0, [r4, #0x12]
movs r6, #0x12
ldrsh r0, [r4, r6]
cmp r5, r0
beq _080BA19E
adds r0, r1, #0
bl sub_080BA780
b _080BA19E
_080BA17A:
adds r4, r2, r4
lsls r4, r4, #3
adds r4, r4, r7
ldrb r5, [r4, #0x14]
adds r0, r5, #0
bl FrameType_ProcessInput
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
strh r0, [r4, #0x14]
movs r7, #0x14
ldrsh r0, [r4, r7]
cmp r5, r0
beq _080BA19E
adds r0, r1, #0
bl FrameType_DrawChoices
_080BA19E:
ldr r1, _080BA1B8
ldrb r0, [r1]
cmp r0, #0
beq _080BA1B2
movs r0, #0
strb r0, [r1]
movs r0, #1
movs r1, #2
bl CopyWindowToVram
_080BA1B2:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080BA1B8: .4byte 0x020397E8
thumb_func_end Task_OptionMenuProcessInput
thumb_func_start Task_OptionMenuSave
Task_OptionMenuSave: @ 0x080BA1BC
push {r4, r5, r6, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldr r6, _080BA254
ldr r3, [r6]
ldr r1, _080BA258
lsls r4, r0, #2
adds r4, r4, r0
lsls r4, r4, #3
adds r4, r4, r1
movs r0, #7
ldrb r1, [r4, #0xa]
ands r1, r0
ldrb r2, [r3, #0x14]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x14]
ldr r3, [r6]
movs r5, #1
ldrb r1, [r4, #0xc]
ands r1, r5
lsls r1, r1, #2
ldrb r2, [r3, #0x15]
movs r0, #5
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x15]
ldr r3, [r6]
ldrb r1, [r4, #0xe]
ands r1, r5
lsls r1, r1, #1
ldrb r2, [r3, #0x15]
movs r0, #3
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x15]
ldr r3, [r6]
ldrb r1, [r4, #0x10]
ands r1, r5
ldrb r2, [r3, #0x15]
movs r0, #2
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x15]
ldr r1, [r6]
ldrh r0, [r4, #0x12]
movs r5, #0
strb r0, [r1, #0x13]
ldr r3, [r6]
ldrb r1, [r4, #0x14]
lsls r1, r1, #3
ldrb r2, [r3, #0x14]
movs r0, #7
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x14]
movs r0, #1
rsbs r0, r0, #0
str r5, [sp]
movs r1, #0
movs r2, #0
movs r3, #0x10
bl BeginNormalPaletteFade
ldr r0, _080BA25C
str r0, [r4]
add sp, #4
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080BA254: .4byte 0x03005AF0
_080BA258: .4byte 0x03005B60
_080BA25C: .4byte 0x080BA261
thumb_func_end Task_OptionMenuSave
thumb_func_start Task_OptionMenuFadeOut
Task_OptionMenuFadeOut: @ 0x080BA260
push {lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
ldr r0, _080BA288
ldrb r1, [r0, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _080BA284
adds r0, r2, #0
bl DestroyTask
bl FreeAllWindowBuffers
ldr r0, _080BA28C
ldr r0, [r0, #8]
bl SetMainCallback2
_080BA284:
pop {r0}
bx r0
.align 2, 0
_080BA288: .4byte 0x02037C74
_080BA28C: .4byte 0x03002360
thumb_func_end Task_OptionMenuFadeOut
thumb_func_start HighlightOptionMenuItem
HighlightOptionMenuItem: @ 0x080BA290
push {r4, lr}
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
movs r1, #0x87
lsls r1, r1, #5
movs r0, #0x40
bl SetGpuReg
lsls r4, r4, #4
adds r1, r4, #0
adds r1, #0x28
lsls r1, r1, #8
adds r4, #0x38
orrs r1, r4
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
movs r0, #0x44
bl SetGpuReg
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end HighlightOptionMenuItem
thumb_func_start DrawOptionMenuChoice
DrawOptionMenuChoice: @ 0x080BA2C0
push {r4, r5, r6, lr}
sub sp, #0x1c
adds r4, r0, #0
lsls r1, r1, #0x18
lsrs r6, r1, #0x18
lsls r2, r2, #0x18
lsrs r5, r2, #0x18
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
movs r2, #0
ldrb r1, [r4]
adds r0, r1, #0
cmp r0, #0xff
beq _080BA2F8
_080BA2DC:
mov r0, sp
adds r0, r0, r2
adds r0, #0xc
strb r1, [r0]
adds r4, #1
adds r0, r2, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
ldrb r1, [r4]
adds r0, r1, #0
cmp r0, #0xff
beq _080BA2F8
cmp r2, #0xe
bls _080BA2DC
_080BA2F8:
cmp r3, #0
beq _080BA306
add r1, sp, #0xc
movs r0, #4
strb r0, [r1, #2]
movs r0, #5
strb r0, [r1, #5]
_080BA306:
mov r1, sp
adds r1, r1, r2
adds r1, #0xc
movs r0, #0xff
strb r0, [r1]
adds r0, r5, #2
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp]
movs r0, #0xff
str r0, [sp, #4]
movs r0, #0
str r0, [sp, #8]
movs r0, #1
movs r1, #1
add r2, sp, #0xc
adds r3, r6, #0
bl AddTextPrinterParameterized
add sp, #0x1c
pop {r4, r5, r6}
pop {r0}
bx r0
thumb_func_end DrawOptionMenuChoice
thumb_func_start ButtonMode_ProcessInput
ButtonMode_ProcessInput: @ 0x080BA334
push {lr}
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
ldr r2, _080BA354
ldrh r1, [r2, #0x2e]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080BA360
cmp r3, #1
bhi _080BA358
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
b _080BA35A
.align 2, 0
_080BA354: .4byte 0x03002360
_080BA358:
movs r3, #0
_080BA35A:
ldr r1, _080BA378
movs r0, #1
strb r0, [r1]
_080BA360:
ldrh r1, [r2, #0x2e]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080BA384
cmp r3, #0
beq _080BA37C
subs r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
b _080BA37E
.align 2, 0
_080BA378: .4byte 0x020397E8
_080BA37C:
movs r3, #2
_080BA37E:
ldr r1, _080BA38C
movs r0, #1
strb r0, [r1]
_080BA384:
adds r0, r3, #0
pop {r1}
bx r1
.align 2, 0
_080BA38C: .4byte 0x020397E8
thumb_func_end ButtonMode_ProcessInput
thumb_func_start BattleScene_DrawChoices
BattleScene_DrawChoices: @ 0x080BA390
push {lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, sp
movs r2, #0
strb r2, [r1]
strb r2, [r1, #1]
strb r2, [r1, #2]
adds r1, r1, r0
movs r0, #1
strb r0, [r1]
ldr r0, _080BA3D8
mov r1, sp
ldrb r3, [r1]
movs r1, #0x68
bl DrawOptionMenuChoice
ldr r0, _080BA3DC
mov r1, sp
ldrb r3, [r1, #1]
movs r1, #0x88
movs r2, #0
bl DrawOptionMenuChoice
ldr r0, _080BA3E0
mov r1, sp
ldrb r3, [r1, #2]
movs r1, #0xa8
movs r2, #0
bl DrawOptionMenuChoice
add sp, #4
pop {r0}
bx r0
.align 2, 0
_080BA3D8: .4byte 0x0853736C
_080BA3DC: .4byte 0x08537376
_080BA3E0: .4byte 0x08537380
thumb_func_end BattleScene_DrawChoices
thumb_func_start BattleStyle_DrawChoices
BattleStyle_DrawChoices: @ 0x080BA3E4
push {lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
ldr r0, _080BA404
ldrh r1, [r0, #0x2e]
movs r0, #0x30
ands r0, r1
cmp r0, #0
beq _080BA3FE
movs r1, #1
eors r2, r1
ldr r0, _080BA408
strb r1, [r0]
_080BA3FE:
adds r0, r2, #0
pop {r1}
bx r1
.align 2, 0
_080BA404: .4byte 0x03002360
_080BA408: .4byte 0x020397E8
thumb_func_end BattleStyle_DrawChoices
thumb_func_start Sound_DrawChoices
Sound_DrawChoices: @ 0x080BA40C
push {r4, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, sp
movs r2, #0
strb r2, [r1]
strb r2, [r1, #1]
adds r1, r1, r0
movs r0, #1
strb r0, [r1]
ldr r4, _080BA460
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0]
adds r0, r4, #0
movs r1, #0x68
bl DrawOptionMenuChoice
ldr r4, _080BA464
movs r0, #1
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0, #1]
adds r0, r4, #0
movs r1, #0xa8
bl DrawOptionMenuChoice
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA460: .4byte 0x0853738A
_080BA464: .4byte 0x08537393
thumb_func_end Sound_DrawChoices
thumb_func_start DrawOptionMenuTexts
DrawOptionMenuTexts: @ 0x080BA468
push {lr}
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
ldr r0, _080BA488
ldrh r1, [r0, #0x2e]
movs r0, #0x30
ands r0, r1
cmp r0, #0
beq _080BA482
movs r1, #1
eors r2, r1
ldr r0, _080BA48C
strb r1, [r0]
_080BA482:
adds r0, r2, #0
pop {r1}
bx r1
.align 2, 0
_080BA488: .4byte 0x03002360
_080BA48C: .4byte 0x020397E8
thumb_func_end DrawOptionMenuTexts
thumb_func_start TextSpeed_ProcessInput
TextSpeed_ProcessInput: @ 0x080BA490
push {r4, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, sp
movs r2, #0
strb r2, [r1]
strb r2, [r1, #1]
adds r1, r1, r0
movs r0, #1
strb r0, [r1]
ldr r4, _080BA4E4
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x19
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0]
adds r0, r4, #0
movs r1, #0x68
bl DrawOptionMenuChoice
ldr r4, _080BA4E8
movs r0, #1
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x19
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0, #1]
adds r0, r4, #0
movs r1, #0xa0
bl DrawOptionMenuChoice
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA4E4: .4byte 0x0853739D
_080BA4E8: .4byte 0x085373A8
thumb_func_end TextSpeed_ProcessInput
thumb_func_start Sound_ProcessInput
Sound_ProcessInput: @ 0x080BA4EC
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
ldr r0, _080BA514
ldrh r1, [r0, #0x2e]
movs r0, #0x30
ands r0, r1
cmp r0, #0
beq _080BA50C
movs r4, #1
eors r5, r4
adds r0, r5, #0
bl SetPokemonCryStereo
ldr r0, _080BA518
strb r4, [r0]
_080BA50C:
adds r0, r5, #0
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
_080BA514: .4byte 0x03002360
_080BA518: .4byte 0x020397E8
thumb_func_end Sound_ProcessInput
thumb_func_start TextSpeed_DrawChoices
TextSpeed_DrawChoices: @ 0x080BA51C
push {r4, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, sp
movs r2, #0
strb r2, [r1]
strb r2, [r1, #1]
adds r1, r1, r0
movs r0, #1
strb r0, [r1]
ldr r4, _080BA57C
movs r1, #1
bl GetFontAttribute
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r2, r0, #1
adds r2, r2, r0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0]
adds r0, r4, #0
movs r1, #0x68
bl DrawOptionMenuChoice
ldr r4, _080BA580
movs r0, #1
movs r1, #1
bl GetFontAttribute
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r2, r0, #1
adds r2, r2, r0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0, #1]
adds r0, r4, #0
movs r1, #0xa0
bl DrawOptionMenuChoice
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA57C: .4byte 0x085373B3
_080BA580: .4byte 0x085373BE
thumb_func_end TextSpeed_DrawChoices
thumb_func_start FrameType_ProcessInput
FrameType_ProcessInput: @ 0x080BA584
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _080BA5A4
ldrh r1, [r0, #0x2e]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080BA5D6
cmp r4, #0x12
bhi _080BA5A8
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
b _080BA5AA
.align 2, 0
_080BA5A4: .4byte 0x03002360
_080BA5A8:
movs r4, #0
_080BA5AA:
adds r0, r4, #0
bl GetWindowFrameTilesPal
ldr r1, [r0]
movs r2, #0x90
lsls r2, r2, #1
movs r3, #0xd1
lsls r3, r3, #1
movs r0, #1
bl LoadBgTiles
adds r0, r4, #0
bl GetWindowFrameTilesPal
ldr r0, [r0, #4]
movs r1, #0x70
movs r2, #0x20
bl LoadPalette
ldr r1, _080BA5F0
movs r0, #1
strb r0, [r1]
_080BA5D6:
ldr r0, _080BA5F4
ldrh r1, [r0, #0x2e]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080BA626
cmp r4, #0
beq _080BA5F8
subs r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
b _080BA5FA
.align 2, 0
_080BA5F0: .4byte 0x020397E8
_080BA5F4: .4byte 0x03002360
_080BA5F8:
movs r4, #0x13
_080BA5FA:
adds r0, r4, #0
bl GetWindowFrameTilesPal
ldr r1, [r0]
movs r2, #0x90
lsls r2, r2, #1
movs r3, #0xd1
lsls r3, r3, #1
movs r0, #1
bl LoadBgTiles
adds r0, r4, #0
bl GetWindowFrameTilesPal
ldr r0, [r0, #4]
movs r1, #0x70
movs r2, #0x20
bl LoadPalette
ldr r1, _080BA630
movs r0, #1
strb r0, [r1]
_080BA626:
adds r0, r4, #0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080BA630: .4byte 0x020397E8
thumb_func_end FrameType_ProcessInput
thumb_func_start FrameType_DrawChoices
FrameType_DrawChoices: @ 0x080BA634
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #8
lsls r0, r0, #0x18
movs r1, #0x80
lsls r1, r1, #0x11
adds r0, r0, r1
lsrs r7, r0, #0x18
movs r5, #0
ldr r1, _080BA6A8
ldrb r0, [r1]
ldr r2, _080BA6AC
mov r8, r2
cmp r0, #0xff
beq _080BA672
adds r2, r1, #0
_080BA656:
mov r0, sp
adds r1, r0, r5
adds r0, r5, r2
ldrb r0, [r0]
strb r0, [r1]
adds r0, r5, #1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
adds r0, r5, r2
ldrb r0, [r0]
cmp r0, #0xff
beq _080BA672
cmp r5, #5
bls _080BA656
_080BA672:
adds r0, r7, #0
movs r1, #0xa
bl __udivsi3
adds r2, r0, #0
lsls r0, r2, #0x18
lsrs r6, r0, #0x18
cmp r6, #0
beq _080BA6B0
mov r0, sp
adds r1, r0, r5
adds r0, r2, #0
adds r0, #0xa1
strb r0, [r1]
adds r0, r5, #1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
mov r1, sp
adds r4, r1, r5
adds r0, r7, #0
movs r1, #0xa
bl __umodsi3
adds r0, #0xa1
strb r0, [r4]
b _080BA6CC
.align 2, 0
_080BA6A8: .4byte 0x085373D3
_080BA6AC: .4byte 0x085373C9
_080BA6B0:
mov r2, sp
adds r4, r2, r5
adds r0, r7, #0
movs r1, #0xa
bl __umodsi3
adds r0, #0xa1
strb r0, [r4]
adds r0, r5, #1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
mov r1, sp
adds r0, r1, r5
strb r6, [r0]
_080BA6CC:
adds r0, r5, #1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
mov r2, sp
adds r1, r2, r5
movs r0, #0xff
strb r0, [r1]
movs r0, #1
movs r1, #1
bl GetFontAttribute
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r2, r0, #2
adds r2, r2, r0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, r8
movs r1, #0x68
movs r3, #0
bl DrawOptionMenuChoice
movs r0, #1
movs r1, #1
bl GetFontAttribute
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r2, r0, #2
adds r2, r2, r0
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
mov r0, sp
movs r1, #0x80
movs r3, #1
bl DrawOptionMenuChoice
add sp, #8
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_end FrameType_DrawChoices
thumb_func_start ButtonMode_DrawChoices
ButtonMode_DrawChoices: @ 0x080BA724
push {lr}
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
ldr r2, _080BA744
ldrh r1, [r2, #0x2e]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080BA750
cmp r3, #1
bhi _080BA748
adds r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
b _080BA74A
.align 2, 0
_080BA744: .4byte 0x03002360
_080BA748:
movs r3, #0
_080BA74A:
ldr r1, _080BA768
movs r0, #1
strb r0, [r1]
_080BA750:
ldrh r1, [r2, #0x2e]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080BA774
cmp r3, #0
beq _080BA76C
subs r0, r3, #1
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
b _080BA76E
.align 2, 0
_080BA768: .4byte 0x020397E8
_080BA76C:
movs r3, #2
_080BA76E:
ldr r1, _080BA77C
movs r0, #1
strb r0, [r1]
_080BA774:
adds r0, r3, #0
pop {r1}
bx r1
.align 2, 0
_080BA77C: .4byte 0x020397E8
thumb_func_end ButtonMode_DrawChoices
thumb_func_start sub_080BA780
sub_080BA780: @ 0x080BA780
push {r4, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r1, sp
movs r2, #0
strb r2, [r1]
strb r2, [r1, #1]
strb r2, [r1, #2]
adds r1, r1, r0
movs r0, #1
strb r0, [r1]
ldr r4, _080BA7F4
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x1a
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0]
adds r0, r4, #0
movs r1, #0x68
bl DrawOptionMenuChoice
ldr r4, _080BA7F8
movs r0, #1
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x1a
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0, #1]
adds r0, r4, #0
movs r1, #0x90
bl DrawOptionMenuChoice
ldr r4, _080BA7FC
movs r0, #1
movs r1, #1
bl GetFontAttribute
adds r2, r0, #0
lsls r2, r2, #0x1a
lsrs r2, r2, #0x18
mov r0, sp
ldrb r3, [r0, #2]
adds r0, r4, #0
movs r1, #0xa8
bl DrawOptionMenuChoice
add sp, #4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA7F4: .4byte 0x085373DA
_080BA7F8: .4byte 0x085373E5
_080BA7FC: .4byte 0x085373EE
thumb_func_end sub_080BA780
thumb_func_start DrawTextOption
DrawTextOption: @ 0x080BA800
push {lr}
sub sp, #0xc
movs r0, #0
movs r1, #0x11
bl FillWindowPixelBuffer
ldr r2, _080BA830
movs r0, #2
str r0, [sp]
movs r0, #0xff
str r0, [sp, #4]
movs r0, #0
str r0, [sp, #8]
movs r1, #1
movs r3, #8
bl AddTextPrinterParameterized
movs r0, #0
movs r1, #3
bl CopyWindowToVram
add sp, #0xc
pop {r0}
bx r0
.align 2, 0
_080BA830: .4byte 0x08537310
thumb_func_end DrawTextOption
thumb_func_start sub_080BA834
sub_080BA834: @ 0x080BA834
push {r4, lr}
sub sp, #0xc
movs r0, #1
movs r1, #0x11
bl FillWindowPixelBuffer
movs r4, #0
_080BA842:
movs r0, #1
movs r1, #1
bl GetFontAttribute
adds r1, r4, #0
muls r1, r0, r1
adds r1, #2
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
ldr r2, _080BA88C
lsls r0, r4, #2
adds r0, r0, r2
ldr r2, [r0]
str r1, [sp]
movs r0, #0xff
str r0, [sp, #4]
movs r0, #0
str r0, [sp, #8]
movs r0, #1
movs r1, #1
movs r3, #8
bl AddTextPrinterParameterized
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #6
bls _080BA842
movs r0, #1
movs r1, #3
bl CopyWindowToVram
add sp, #0xc
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080BA88C: .4byte 0x08537350
thumb_func_end sub_080BA834
thumb_func_start sub_080BA890
sub_080BA890: @ 0x080BA890
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
movs r4, #1
str r4, [sp]
str r4, [sp, #4]
movs r5, #7
str r5, [sp, #8]
movs r0, #1
movs r1, #0xd1
lsls r1, r1, #1
movs r2, #1
movs r3, #0
bl FillBgTilemapBufferRect
movs r0, #0x1b
mov r8, r0
str r0, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
ldr r1, _080BA9FC
movs r2, #2
movs r3, #0
bl FillBgTilemapBufferRect
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
movs r1, #0xd2
lsls r1, r1, #1
movs r2, #0x1c
movs r3, #0
bl FillBgTilemapBufferRect
str r4, [sp]
movs r6, #2
str r6, [sp, #4]
str r5, [sp, #8]
movs r0, #1
ldr r1, _080BAA00
movs r2, #1
movs r3, #1
bl FillBgTilemapBufferRect
str r4, [sp]
str r6, [sp, #4]
str r5, [sp, #8]
movs r0, #1
ldr r1, _080BAA04
movs r2, #0x1c
movs r3, #1
bl FillBgTilemapBufferRect
movs r7, #0xd4
lsls r7, r7, #1
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
adds r1, r7, #0
movs r2, #1
movs r3, #3
bl FillBgTilemapBufferRect
ldr r0, _080BAA08
mov sl, r0
mov r0, r8
str r0, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
mov r1, sl
movs r2, #2
movs r3, #3
bl FillBgTilemapBufferRect
movs r0, #0xd5
lsls r0, r0, #1
mov sb, r0
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
mov r1, sb
movs r2, #0x1c
movs r3, #3
bl FillBgTilemapBufferRect
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
movs r1, #0xd1
lsls r1, r1, #1
movs r2, #1
movs r3, #4
bl FillBgTilemapBufferRect
movs r0, #0x1a
mov r8, r0
str r0, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
ldr r1, _080BA9FC
movs r2, #2
movs r3, #4
bl FillBgTilemapBufferRect
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
movs r1, #0xd2
lsls r1, r1, #1
movs r2, #0x1c
movs r3, #4
bl FillBgTilemapBufferRect
str r4, [sp]
movs r6, #0x12
str r6, [sp, #4]
str r5, [sp, #8]
movs r0, #1
ldr r1, _080BAA00
movs r2, #1
movs r3, #5
bl FillBgTilemapBufferRect
str r4, [sp]
str r6, [sp, #4]
str r5, [sp, #8]
movs r0, #1
ldr r1, _080BAA04
movs r2, #0x1c
movs r3, #5
bl FillBgTilemapBufferRect
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
adds r1, r7, #0
movs r2, #1
movs r3, #0x13
bl FillBgTilemapBufferRect
mov r0, r8
str r0, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
mov r1, sl
movs r2, #2
movs r3, #0x13
bl FillBgTilemapBufferRect
str r4, [sp]
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #1
mov r1, sb
movs r2, #0x1c
movs r3, #0x13
bl FillBgTilemapBufferRect
movs r0, #1
bl CopyBgTilemapBufferToVram
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_080BA9FC: .4byte 0x000001A3
_080BAA00: .4byte 0x000001A5
_080BAA04: .4byte 0x000001A7
_080BAA08: .4byte 0x000001A9
thumb_func_end sub_080BA890