diff options
Diffstat (limited to 'asm/menu_helpers.s')
-rw-r--r-- | asm/menu_helpers.s | 1339 |
1 files changed, 1339 insertions, 0 deletions
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s new file mode 100644 index 000000000..4faccce74 --- /dev/null +++ b/asm/menu_helpers.s @@ -0,0 +1,1339 @@ + .include "constants/gba_constants.s" + .include "constants/species_constants.s" + .include "asm/macros.s" + + .syntax unified + + .text + + thumb_func_start sub_80F9020 +sub_80F9020: @ 80F9020 + push {r4,r5,lr} + ldr r4, _080F9054 @ =gBG1TilemapBuffer + 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 gBG1TilemapBuffer + 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 @ =gBG1TilemapBuffer + 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 gBG1TilemapBuffer + 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 sub_80F953C +sub_80F953C: @ 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 sub_80F953C + + 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 SetBgTilemapBuffer +SetBgTilemapBuffer: @ 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 SetBgTilemapBuffer + + thumb_func_start InitMenuInUpperLeftCornerPlaySoundWhenAPressed +InitMenuInUpperLeftCornerPlaySoundWhenAPressed: @ 80F9818 + push {lr} + ldr r0, _080F9824 @ =gUnknown_083E5968 + bl LoadSpritePalette + pop {r0} + bx r0 + .align 2, 0 +_080F9824: .4byte gUnknown_083E5968 + thumb_func_end InitMenuInUpperLeftCornerPlaySoundWhenAPressed + + 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. |