pokeruby/asm/menu_helpers.s
Cameron Hall c84d788ebf decompile field_camera.c (#103)
* start decompiling field_camera.c

* can't get CameraUpdate to match

* finish decompiling
2016-11-18 22:36:57 -08:00

1340 lines
22 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80F9020
sub_80F9020: @ 80F9020
push {r4,r5,lr}
ldr r4, _080F9054 @ =gBGTilemapBuffers + 0x800
movs r5, 0x80
lsls r5, 4
adds r0, r4, 0
movs r1, 0
adds r2, r5, 0
bl memset
adds r0, r4, r5
movs r1, 0
adds r2, r5, 0
bl memset
movs r0, 0x80
lsls r0, 5
adds r4, r0
adds r0, r4, 0
movs r1, 0
adds r2, r5, 0
bl memset
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080F9054: .4byte gBGTilemapBuffers + 0x800
thumb_func_end sub_80F9020
thumb_func_start sav2_get_text_speed
sav2_get_text_speed: @ 80F9058
push {r4,r5,lr}
sub sp, 0x8
adds r5, r0, 0
lsls r1, 16
lsrs r4, r1, 16
bl MenuDisplayMessageBox
cmp r4, 0
beq _080F907C
ldr r0, _080F908C @ =gBGTilemapBuffers + 0x800
movs r1, 0x4
str r1, [sp]
str r4, [sp, 0x4]
movs r1, 0x2
movs r2, 0xF
movs r3, 0x1A
bl sub_80A3FA0
_080F907C:
adds r0, r5, 0
bl sub_8072044
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080F908C: .4byte gBGTilemapBuffers + 0x800
thumb_func_end sav2_get_text_speed
thumb_func_start sub_80F9090
sub_80F9090: @ 80F9090
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl MenuUpdateWindowText
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080F90AC
ldr r0, _080F90B4 @ =gUnknown_0300074C
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
_080F90AC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080F90B4: .4byte gUnknown_0300074C
thumb_func_end sub_80F9090
thumb_func_start DisplayItemMessageOnField
DisplayItemMessageOnField: @ 80F90B8
push {r4,r5,lr}
adds r4, r0, 0
adds r0, r1, 0
adds r5, r2, 0
adds r1, r3, 0
lsls r4, 24
lsrs r4, 24
lsls r1, 16
lsrs r1, 16
bl sav2_get_text_speed
ldr r0, _080F90E8 @ =gUnknown_0300074C
str r5, [r0]
ldr r1, _080F90EC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r1, _080F90F0 @ =sub_80F9090
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080F90E8: .4byte gUnknown_0300074C
_080F90EC: .4byte gTasks
_080F90F0: .4byte sub_80F9090
thumb_func_end DisplayItemMessageOnField
thumb_func_start Task_CallYesOrNoCallback
Task_CallYesOrNoCallback: @ 80F90F4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
beq _080F911A
cmp r1, 0
bgt _080F9114
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080F9130
b _080F9140
_080F9114:
cmp r1, 0x1
beq _080F9130
b _080F9140
_080F911A:
movs r0, 0x5
bl PlaySE
ldr r0, _080F912C @ =gUnknown_020388C4
ldr r1, [r0]
adds r0, r4, 0
bl _call_via_r1
b _080F9140
.align 2, 0
_080F912C: .4byte gUnknown_020388C4
_080F9130:
movs r0, 0x5
bl PlaySE
ldr r0, _080F9148 @ =gUnknown_020388C4
ldr r1, [r0, 0x4]
adds r0, r4, 0
bl _call_via_r1
_080F9140:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080F9148: .4byte gUnknown_020388C4
thumb_func_end Task_CallYesOrNoCallback
thumb_func_start sub_80F914C
sub_80F914C: @ 80F914C
lsls r0, 24
lsrs r0, 24
ldr r3, _080F916C @ =gUnknown_020388C4
ldr r2, [r1, 0x4]
ldr r1, [r1]
str r1, [r3]
str r2, [r3, 0x4]
ldr r2, _080F9170 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldr r0, _080F9174 @ =Task_CallYesOrNoCallback
str r0, [r1]
bx lr
.align 2, 0
_080F916C: .4byte gUnknown_020388C4
_080F9170: .4byte gTasks
_080F9174: .4byte Task_CallYesOrNoCallback
thumb_func_end sub_80F914C
thumb_func_start brm_trade_1
brm_trade_1: @ 80F9178
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
lsls r1, 24
lsrs r4, r1, 24
lsls r2, 24
lsrs r7, r2, 24
lsls r3, 24
lsrs r6, r3, 24
ldr r1, _080F91C0 @ =gUnknown_083E5A18
mov r0, sp
movs r2, 0x4
bl memcpy
cmp r4, 0xFF
beq _080F91CC
mov r0, sp
strb r4, [r0, 0x2]
ldr r4, _080F91C4 @ =gStringVar4
adds r0, r4, 0
mov r1, sp
bl StringCopy
adds r0, r4, 0
adds r1, r5, 0
bl StringAppend
mov r1, sp
ldr r0, _080F91C8 @ =gMenuWindowPtr
ldr r0, [r0]
ldrb r0, [r0, 0x6]
strb r0, [r1, 0x2]
adds r0, r4, 0
bl StringAppend
b _080F91D4
.align 2, 0
_080F91C0: .4byte gUnknown_083E5A18
_080F91C4: .4byte gStringVar4
_080F91C8: .4byte gMenuWindowPtr
_080F91CC:
ldr r0, _080F91E8 @ =gStringVar4
adds r1, r5, 0
bl StringCopy
_080F91D4:
ldr r0, _080F91E8 @ =gStringVar4
adds r1, r7, 0
adds r2, r6, 0
bl MenuPrint
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080F91E8: .4byte gStringVar4
thumb_func_end brm_trade_1
thumb_func_start unref_sub_80F91EC
unref_sub_80F91EC: @ 80F91EC
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r12, r0
adds r4, r2, 0
adds r2, r3, 0
ldr r0, [sp, 0x18]
ldr r3, [sp, 0x1C]
lsls r1, 24
lsrs r1, 24
mov r8, r1
lsls r4, 24
lsrs r4, 24
lsls r2, 24
lsrs r2, 24
lsls r0, 24
lsrs r7, r0, 24
lsls r3, 24
lsrs r5, r3, 24
ldr r6, _080F9234 @ =gStringVar1
adds r0, r6, 0
mov r1, r12
adds r3, r4, 0
bl ConvertIntToDecimalStringN
mov r0, r8
cmp r0, 0xFF
beq _080F9238
adds r0, r6, 0
mov r1, r8
adds r2, r7, 0
adds r3, r5, 0
bl brm_trade_1
b _080F9242
.align 2, 0
_080F9234: .4byte gStringVar1
_080F9238:
adds r0, r6, 0
adds r1, r7, 0
adds r2, r5, 0
bl MenuPrint
_080F9242:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end unref_sub_80F91EC
thumb_func_start unref_sub_80F924C
unref_sub_80F924C: @ 80F924C
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
adds r4, r2, 0
lsls r5, 24
lsrs r5, 24
lsls r6, 24
lsrs r6, 24
lsls r4, 24
lsrs r4, 24
ldr r1, _080F9280 @ =gUnknown_083E5A1C
mov r0, sp
movs r2, 0x2
bl memcpy
mov r0, sp
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
bl brm_trade_1
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080F9280: .4byte gUnknown_083E5A1C
thumb_func_end unref_sub_80F924C
thumb_func_start sub_80F9284
sub_80F9284: @ 80F9284
push {lr}
ldr r0, _080F92A0 @ =gSaveBlock2
ldrb r0, [r0, 0x13]
cmp r0, 0x1
bne _080F92B6
ldr r0, _080F92A4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
beq _080F92A8
movs r0, 0x1
b _080F92B8
.align 2, 0
_080F92A0: .4byte gSaveBlock2
_080F92A4: .4byte gMain
_080F92A8:
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080F92B6
movs r0, 0x2
b _080F92B8
_080F92B6:
movs r0, 0
_080F92B8:
pop {r1}
bx r1
thumb_func_end sub_80F9284
thumb_func_start sub_80F92BC
sub_80F92BC: @ 80F92BC
push {lr}
ldr r0, _080F92D8 @ =gSaveBlock2
ldrb r0, [r0, 0x13]
cmp r0, 0x1
bne _080F92EE
ldr r0, _080F92DC @ =gMain
ldrh r1, [r0, 0x30]
movs r0, 0x80
lsls r0, 2
ands r0, r1
cmp r0, 0
beq _080F92E0
movs r0, 0x1
b _080F92F0
.align 2, 0
_080F92D8: .4byte gSaveBlock2
_080F92DC: .4byte gMain
_080F92E0:
movs r0, 0x80
lsls r0, 1
ands r0, r1
cmp r0, 0
beq _080F92EE
movs r0, 0x2
b _080F92F0
_080F92EE:
movs r0, 0
_080F92F0:
pop {r1}
bx r1
thumb_func_end sub_80F92BC
thumb_func_start sub_80F92F4
sub_80F92F4: @ 80F92F4
push {lr}
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _080F9314
ldr r0, _080F930C @ =gSaveBlock1
ldrh r1, [r0, 0x4]
ldr r0, _080F9310 @ =0x00001919
cmp r1, r0
bne _080F9314
movs r0, 0
b _080F9316
.align 2, 0
_080F930C: .4byte gSaveBlock1
_080F9310: .4byte 0x00001919
_080F9314:
movs r0, 0x1
_080F9316:
pop {r1}
bx r1
thumb_func_end sub_80F92F4
thumb_func_start sub_80F931C
sub_80F931C: @ 80F931C
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl is_c1_link_related_active
cmp r0, 0x1
bne _080F933C
adds r0, r4, 0
bl itemid_is_mail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080F933C
movs r0, 0
b _080F933E
_080F933C:
movs r0, 0x1
_080F933E:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80F931C
thumb_func_start sub_80F9344
sub_80F9344: @ 80F9344
push {lr}
bl is_c1_link_related_active
cmp r0, 0x1
beq _080F9356
ldr r0, _080F935C @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080F9360
_080F9356:
movs r0, 0x1
b _080F9362
.align 2, 0
_080F935C: .4byte gReceivedRemoteLinkPlayers
_080F9360:
movs r0, 0
_080F9362:
pop {r1}
bx r1
thumb_func_end sub_80F9344
thumb_func_start sub_80F9368
sub_80F9368: @ 80F9368
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
movs r0, 0x80
lsls r0, 19
movs r1, 0
strh r1, [r0]
adds r0, 0xE
strh r1, [r0]
subs r0, 0x2
strh r1, [r0]
subs r0, 0x2
strh r1, [r0]
subs r0, 0x2
strh r1, [r0]
adds r0, 0x14
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
subs r0, 0x6
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
subs r0, 0x6
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
subs r0, 0x6
strh r1, [r0]
adds r0, 0x2
strh r1, [r0]
movs r3, 0xC0
lsls r3, 19
movs r4, 0xC0
lsls r4, 9
add r0, sp, 0x4
mov r8, r0
mov r2, sp
movs r6, 0
ldr r1, _080F9430 @ =0x040000d4
movs r5, 0x80
lsls r5, 5
ldr r7, _080F9434 @ =0x81000800
movs r0, 0x81
lsls r0, 24
mov r12, r0
_080F93C6:
strh r6, [r2]
mov r0, sp
str r0, [r1]
str r3, [r1, 0x4]
str r7, [r1, 0x8]
ldr r0, [r1, 0x8]
adds r3, r5
subs r4, r5
cmp r4, r5
bhi _080F93C6
strh r6, [r2]
mov r2, sp
str r2, [r1]
str r3, [r1, 0x4]
lsrs r0, r4, 1
mov r2, r12
orrs r0, r2
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r0, 0xE0
lsls r0, 19
movs r3, 0x80
lsls r3, 3
movs r4, 0
str r4, [sp, 0x4]
ldr r2, _080F9430 @ =0x040000d4
mov r1, r8
str r1, [r2]
str r0, [r2, 0x4]
lsrs r0, r3, 2
movs r1, 0x85
lsls r1, 24
orrs r0, r1
str r0, [r2, 0x8]
ldr r0, [r2, 0x8]
movs r1, 0xA0
lsls r1, 19
mov r0, sp
strh r4, [r0]
str r0, [r2]
str r1, [r2, 0x4]
lsrs r3, 1
movs r0, 0x81
lsls r0, 24
orrs r3, r0
str r3, [r2, 0x8]
ldr r0, [r2, 0x8]
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080F9430: .4byte 0x040000d4
_080F9434: .4byte 0x81000800
thumb_func_end sub_80F9368
thumb_func_start sub_80F9438
sub_80F9438: @ 80F9438
push {lr}
movs r0, 0
bl SetVBlankCallback
movs r0, 0
bl SetHBlankCallback
pop {r0}
bx r0
thumb_func_end sub_80F9438
thumb_func_start sub_80F944C
sub_80F944C: @ 80F944C
push {r4,lr}
movs r2, 0
ldr r4, _080F9478 @ =gUnknown_020388C0
movs r3, 0xFF
_080F9454:
adds r0, r2, r4
ldrb r1, [r0]
orrs r1, r3
strb r1, [r0]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x3
bls _080F9454
movs r0, 0x6
bl FreeSpritePaletteByTag
ldr r0, _080F947C @ =gUnknown_083E5968
bl LoadSpritePalette
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080F9478: .4byte gUnknown_020388C0
_080F947C: .4byte gUnknown_083E5968
thumb_func_end sub_80F944C
thumb_func_start sub_80F9480
sub_80F9480: @ 80F9480
push {r4,lr}
adds r3, r0, 0
lsls r1, 24
lsrs r1, 24
movs r2, 0
cmp r2, r1
bcs _080F949E
movs r4, 0xFF
_080F9490:
adds r0, r3, r2
strb r4, [r0]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, r1
bcc _080F9490
_080F949E:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80F9480
thumb_func_start sub_80F94A4
sub_80F94A4: @ 80F94A4
push {r4,r5,lr}
adds r5, r1, 0
lsls r0, 24
lsrs r4, r0, 24
lsls r2, 16
lsrs r1, r2, 16
lsls r3, 16
lsrs r2, r3, 16
cmp r4, 0x5
bhi _080F94E8
ldrb r0, [r5]
cmp r0, 0xFF
bne _080F94D0
ldr r0, _080F94F0 @ =gSpriteTemplate_83E5A00
lsls r1, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSprite
strb r0, [r5]
_080F94D0:
subs r0, r4, 0x4
lsls r0, 24
lsrs r4, r0, 24
ldrb r1, [r5]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080F94F4 @ =gSprites
adds r0, r1
adds r1, r4, 0
bl StartSpriteAnim
_080F94E8:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080F94F0: .4byte gSpriteTemplate_83E5A00
_080F94F4: .4byte gSprites
thumb_func_end sub_80F94A4
thumb_func_start sub_80F94F8
sub_80F94F8: @ 80F94F8
push {r4,lr}
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0xFF
beq _080F9516
adds r1, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080F951C @ =gSprites
adds r0, r1
bl DestroySprite
movs r0, 0xFF
strb r0, [r4]
_080F9516:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080F951C: .4byte gSprites
thumb_func_end sub_80F94F8
thumb_func_start sub_80F9520
sub_80F9520: @ 80F9520
push {r4,r5,lr}
adds r5, r0, 0
movs r4, 0
_080F9526:
adds r0, r5, r4
bl sub_80F94F8
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x7
bls _080F9526
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80F9520
thumb_func_start CreateVerticalScrollIndicators
CreateVerticalScrollIndicators: @ 80F953C
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 16
lsrs r3, r1, 16
lsls r2, 16
lsrs r2, 16
cmp r4, 0x3
bls _080F9550
b _080F9790
_080F9550:
cmp r4, 0x1
beq _080F95F6
cmp r4, 0x1
bgt _080F9564
cmp r4, 0
beq _080F9578
ldr r5, _080F9560 @ =gUnknown_020388C0
b _080F977A
.align 2, 0
_080F9560: .4byte gUnknown_020388C0
_080F9564:
cmp r4, 0x2
bne _080F956A
b _080F967C
_080F956A:
cmp r4, 0x3
bne _080F9570
b _080F96F8
_080F9570:
ldr r5, _080F9574 @ =gUnknown_020388C0
b _080F977A
.align 2, 0
_080F9574: .4byte gUnknown_020388C0
_080F9578:
ldr r0, _080F95D8 @ =gUnknown_020388C0
ldrb r1, [r0]
adds r5, r0, 0
cmp r1, 0xFF
beq _080F9584
b _080F977A
_080F9584:
ldr r0, _080F95DC @ =gSpriteTemplate_83E59D0
lsls r1, r3, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSprite
strb r0, [r5]
ldr r3, _080F95E0 @ =gSprites
ldrb r1, [r5]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldr r1, _080F95E4 @ =0x0000ffff
strh r1, [r0, 0x32]
ldrb r0, [r5, 0x1]
cmp r0, 0xFF
beq _080F95E8
ldrb r0, [r5]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5, 0x1]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
movs r2, 0x26
ldrsh r0, [r0, r2]
negs r0, r0
strh r0, [r1, 0x26]
ldrb r0, [r5]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5, 0x1]
b _080F9650
.align 2, 0
_080F95D8: .4byte gUnknown_020388C0
_080F95DC: .4byte gSpriteTemplate_83E59D0
_080F95E0: .4byte gSprites
_080F95E4: .4byte 0x0000ffff
_080F95E8:
ldrb r1, [r5]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r4, [r0, 0x34]
b _080F977A
_080F95F6:
ldr r0, _080F9660 @ =gUnknown_020388C0
ldrb r1, [r0, 0x1]
adds r5, r0, 0
cmp r1, 0xFF
beq _080F9602
b _080F977A
_080F9602:
ldr r0, _080F9664 @ =gSpriteTemplate_83E59D0
lsls r1, r3, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSprite
strb r0, [r5, 0x1]
ldr r3, _080F9668 @ =gSprites
ldrb r1, [r5, 0x1]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r4, [r0, 0x32]
ldrb r0, [r5]
cmp r0, 0xFF
beq _080F966C
ldrb r0, [r5, 0x1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
movs r2, 0x26
ldrsh r0, [r0, r2]
negs r0, r0
strh r0, [r1, 0x26]
ldrb r0, [r5, 0x1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5]
_080F9650:
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
ldrh r0, [r0, 0x34]
strh r0, [r1, 0x34]
b _080F977A
.align 2, 0
_080F9660: .4byte gUnknown_020388C0
_080F9664: .4byte gSpriteTemplate_83E59D0
_080F9668: .4byte gSprites
_080F966C:
ldrb r0, [r5, 0x1]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
movs r0, 0
strh r0, [r1, 0x34]
b _080F977A
_080F967C:
ldr r0, _080F96E4 @ =gUnknown_020388C0
ldrb r1, [r0, 0x2]
adds r5, r0, 0
cmp r1, 0xFF
bne _080F977A
ldr r0, _080F96E8 @ =gSpriteTemplate_83E59E8
lsls r1, r3, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSprite
strb r0, [r5, 0x2]
ldr r3, _080F96EC @ =gSprites
ldrb r1, [r5, 0x2]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
ldr r1, _080F96F0 @ =0x0000ffff
strh r1, [r0, 0x2E]
ldrb r0, [r5, 0x3]
cmp r0, 0xFF
beq _080F96F4
ldrb r0, [r5, 0x2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5, 0x3]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
movs r2, 0x24
ldrsh r0, [r0, r2]
negs r0, r0
strh r0, [r1, 0x24]
ldrb r0, [r5, 0x2]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5, 0x3]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
ldrh r0, [r0, 0x30]
b _080F9778
.align 2, 0
_080F96E4: .4byte gUnknown_020388C0
_080F96E8: .4byte gSpriteTemplate_83E59E8
_080F96EC: .4byte gSprites
_080F96F0: .4byte 0x0000ffff
_080F96F4:
ldrb r0, [r5, 0x2]
b _080F976E
_080F96F8:
ldr r0, _080F9760 @ =gUnknown_020388C0
ldrb r1, [r0, 0x3]
adds r5, r0, 0
cmp r1, 0xFF
bne _080F977A
ldr r0, _080F9764 @ =gSpriteTemplate_83E59E8
lsls r1, r3, 16
asrs r1, 16
lsls r2, 16
asrs r2, 16
movs r3, 0
bl CreateSprite
strb r0, [r5, 0x3]
ldr r3, _080F9768 @ =gSprites
ldrb r1, [r5, 0x3]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
movs r1, 0x1
strh r1, [r0, 0x2E]
ldrb r0, [r5, 0x2]
cmp r0, 0xFF
beq _080F976C
ldrb r0, [r5, 0x3]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5, 0x2]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
movs r2, 0x24
ldrsh r0, [r0, r2]
negs r0, r0
strh r0, [r1, 0x24]
ldrb r0, [r5, 0x3]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
ldrb r2, [r5, 0x2]
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r0, r3
ldrh r0, [r0, 0x30]
b _080F9778
.align 2, 0
_080F9760: .4byte gUnknown_020388C0
_080F9764: .4byte gSpriteTemplate_83E59E8
_080F9768: .4byte gSprites
_080F976C:
ldrb r0, [r5, 0x3]
_080F976E:
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r3
movs r0, 0
_080F9778:
strh r0, [r1, 0x30]
_080F977A:
adds r0, r4, r5
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080F9798 @ =gSprites
adds r0, r1
movs r1, 0x1
ands r1, r4
bl StartSpriteAnim
_080F9790:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080F9798: .4byte gSprites
thumb_func_end CreateVerticalScrollIndicators
thumb_func_start sub_80F979C
sub_80F979C: @ 80F979C
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r3, r1, 24
cmp r2, 0x3
bhi _080F97D4
ldr r0, _080F97D8 @ =gUnknown_020388C0
adds r1, r2, r0
ldrb r0, [r1]
cmp r0, 0xFF
beq _080F97D4
ldr r2, _080F97DC @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
adds r1, 0x3E
movs r0, 0x1
adds r2, r3, 0
ands r2, r0
lsls r2, 2
ldrb r3, [r1]
movs r0, 0x5
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1]
_080F97D4:
pop {r0}
bx r0
.align 2, 0
_080F97D8: .4byte gUnknown_020388C0
_080F97DC: .4byte gSprites
thumb_func_end sub_80F979C
thumb_func_start DestroyVerticalScrollIndicator
DestroyVerticalScrollIndicator: @ 80F97E0
push {r4,lr}
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x3
bhi _080F9808
ldr r0, _080F9810 @ =gUnknown_020388C0
adds r4, r1, r0
ldrb r0, [r4]
cmp r0, 0xFF
beq _080F9808
adds r1, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, _080F9814 @ =gSprites
adds r0, r1
bl DestroySprite
movs r0, 0xFF
strb r0, [r4]
_080F9808:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080F9810: .4byte gUnknown_020388C0
_080F9814: .4byte gSprites
thumb_func_end DestroyVerticalScrollIndicator
thumb_func_start LoadScrollIndicatorPalette
LoadScrollIndicatorPalette: @ 80F9818
push {lr}
ldr r0, _080F9824 @ =gUnknown_083E5968
bl LoadSpritePalette
pop {r0}
bx r0
.align 2, 0
_080F9824: .4byte gUnknown_083E5968
thumb_func_end LoadScrollIndicatorPalette
thumb_func_start BuyMenuFreeMemory
BuyMenuFreeMemory: @ 80F9828
push {lr}
movs r0, 0x6
bl FreeSpritePaletteByTag
pop {r0}
bx r0
thumb_func_end BuyMenuFreeMemory
thumb_func_start sub_80F9834
sub_80F9834: @ 80F9834
push {lr}
adds r2, r0, 0
movs r1, 0x30
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080F9848
ldrh r0, [r2, 0x2E]
ldrh r1, [r2, 0x24]
adds r0, r1
strh r0, [r2, 0x24]
_080F9848:
movs r1, 0x34
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080F9858
ldrh r0, [r2, 0x32]
ldrh r1, [r2, 0x26]
adds r0, r1
strh r0, [r2, 0x26]
_080F9858:
ldrh r1, [r2, 0x30]
adds r1, 0x1
movs r3, 0
strh r1, [r2, 0x30]
ldrh r0, [r2, 0x34]
adds r0, 0x1
strh r0, [r2, 0x34]
lsls r1, 16
asrs r1, 16
cmp r1, 0x2
ble _080F9870
strh r3, [r2, 0x30]
_080F9870:
movs r1, 0x34
ldrsh r0, [r2, r1]
cmp r0, 0x2
ble _080F987A
strh r3, [r2, 0x34]
_080F987A:
movs r0, 0x24
ldrsh r1, [r2, r0]
cmp r1, 0x8
beq _080F988A
movs r0, 0x8
negs r0, r0
cmp r1, r0
bne _080F988C
_080F988A:
strh r3, [r2, 0x24]
_080F988C:
movs r0, 0x26
ldrsh r1, [r2, r0]
cmp r1, 0x8
beq _080F989C
movs r0, 0x8
negs r0, r0
cmp r1, r0
bne _080F98A0
_080F989C:
movs r0, 0
strh r0, [r2, 0x26]
_080F98A0:
pop {r0}
bx r0
thumb_func_end sub_80F9834
thumb_func_start sub_80F98A4
sub_80F98A4: @ 80F98A4
push {lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r0, _080F98D0 @ =gUnknown_020388C0
adds r3, r1, r0
ldrb r0, [r3]
cmp r0, 0xFF
beq _080F98CA
cmp r1, 0x3
bhi _080F98CA
ldr r2, _080F98D4 @ =gSprites
adds r1, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, _080F98D8 @ =SpriteCallbackDummy
str r1, [r0]
_080F98CA:
pop {r0}
bx r0
.align 2, 0
_080F98D0: .4byte gUnknown_020388C0
_080F98D4: .4byte gSprites
_080F98D8: .4byte SpriteCallbackDummy
thumb_func_end sub_80F98A4
thumb_func_start sub_80F98DC
sub_80F98DC: @ 80F98DC
push {lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r0, _080F9908 @ =gUnknown_020388C0
adds r3, r1, r0
ldrb r0, [r3]
cmp r0, 0xFF
beq _080F9902
cmp r1, 0x3
bhi _080F9902
ldr r2, _080F990C @ =gSprites
adds r1, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, _080F9910 @ =sub_80F9834
str r1, [r0]
_080F9902:
pop {r0}
bx r0
.align 2, 0
_080F9908: .4byte gUnknown_020388C0
_080F990C: .4byte gSprites
_080F9910: .4byte sub_80F9834
thumb_func_end sub_80F98DC
thumb_func_start sub_80F9914
sub_80F9914: @ 80F9914
push {r4,lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r0, _080F9964 @ =gUnknown_020388C0
adds r4, r1, r0
ldrb r0, [r4]
cmp r0, 0xFF
beq _080F995C
cmp r1, 0x3
bhi _080F995C
ldr r3, _080F9968 @ =gSprites
adds r1, r0, 0
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
movs r2, 0
strh r2, [r0, 0x24]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r2, [r0, 0x26]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r2, [r0, 0x30]
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r3
strh r2, [r0, 0x34]
_080F995C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080F9964: .4byte gUnknown_020388C0
_080F9968: .4byte gSprites
thumb_func_end sub_80F9914
thumb_func_start sub_80F996C
sub_80F996C: @ 80F996C
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
bl sub_80F98A4
adds r0, r4, 0
bl sub_80F9914
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80F996C
thumb_func_start sub_80F9988
sub_80F9988: @ 80F9988
push {lr}
lsls r0, 24
lsrs r2, r0, 24
lsls r1, 24
lsrs r3, r1, 24
ldr r0, _080F99C4 @ =gUnknown_020388C0
adds r1, r2, r0
ldrb r0, [r1]
cmp r0, 0xFF
beq _080F99BE
cmp r2, 0x3
bhi _080F99BE
ldr r2, _080F99C8 @ =gSprites
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r2
movs r0, 0x3
adds r2, r3, 0
ands r2, r0
lsls r2, 2
ldrb r3, [r1, 0x5]
movs r0, 0xD
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r1, 0x5]
_080F99BE:
pop {r0}
bx r0
.align 2, 0
_080F99C4: .4byte gUnknown_020388C0
_080F99C8: .4byte gSprites
thumb_func_end sub_80F9988
.align 2, 0 @ Don't pad with nop.