.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start Subtask_FigurineMenu Subtask_FigurineMenu: @ 0x080A45A4 .ifdef DEMO_USA bx lr .align 2, 0 .else .ifdef DEMO_JP bx lr .align 2, 0 .else push {lr} bl FlushSprites ldr r0, _080A45C4 @ =gUnk_02032EC0 ldrb r0, [r0, #3] cmp r0, #0xff bne _080A45D0 ldr r1, _080A45C8 @ =gUnk_0812815C ldr r0, _080A45CC @ =gMenu ldrb r0, [r0, #5] lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] bl _call_via_r0 b _080A45E0 .align 2, 0 _080A45C4: .4byte gUnk_02032EC0 _080A45C8: .4byte gUnk_0812815C _080A45CC: .4byte gMenu _080A45D0: ldr r1, _080A4600 @ =gUnk_0812814C ldr r0, _080A4604 @ =gMenu ldrb r0, [r0, #5] lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] bl _call_via_r0 _080A45E0: bl UpdateEntities bl sub_0801C1D4 bl DrawOAMCmd bl DrawEntities bl sub_080A4978 bl CopyOAM bl sub_080A4B44 pop {pc} .align 2, 0 _080A4600: .4byte gUnk_0812814C _080A4604: .4byte gMenu .endif .endif thumb_func_start sub_080A4608 sub_080A4608: @ 0x080A4608 push {r4, lr} movs r0, #0x80 bl SetBgmVolume movs r0, #3 bl sub_080A4DA8 ldr r4, _080A46A0 @ =gPaletteBuffer movs r1, #0xfb lsls r1, r1, #1 adds r0, r4, r1 ldrh r1, [r0] movs r0, #0 bl SetColor movs r0, #0xae lsls r0, r0, #1 movs r2, #0xd3 lsls r2, r2, #1 adds r1, r4, r2 ldrh r1, [r1] bl SetColor ldr r0, _080A46A4 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 bl MemClear ldr r0, _080A46A8 @ =gBG3Buffer movs r1, #0x80 lsls r1, r1, #5 bl MemClear ldr r2, _080A46AC @ =gScreen adds r1, r2, #0 adds r1, #0x58 movs r0, #0xf0 strh r0, [r1] adds r1, #4 ldr r0, _080A46B0 @ =0x00007898 strh r0, [r1] adds r1, #4 movs r0, #0x1f strh r0, [r1] adds r1, #2 movs r0, #0x1d strh r0, [r1] movs r0, #1 strh r0, [r2, #0x1a] movs r2, #0xee ldr r3, _080A46B4 @ =gMenu movs r1, #0xf adds r0, r3, #0 adds r0, #0x1f _080A4674: strb r2, [r0] subs r0, #1 subs r1, #1 cmp r1, #0 bge _080A4674 ldr r0, _080A46B8 @ =gUnk_02032EC0 ldrb r1, [r0, #3] ldr r0, _080A46BC @ =gSave ldrb r0, [r0, #6] movs r2, #0x88 cmp r0, #0 bne _080A468E movs r2, #0x82 _080A468E: cmp r2, r1 bge _080A4694 movs r1, #1 _080A4694: strb r1, [r3, #0x1c] movs r0, #4 movs r1, #8 bl SetFade pop {r4, pc} .align 2, 0 _080A46A0: .4byte gPaletteBuffer _080A46A4: .4byte gBG0Buffer _080A46A8: .4byte gBG3Buffer _080A46AC: .4byte gScreen _080A46B0: .4byte 0x00007898 _080A46B4: .4byte gMenu _080A46B8: .4byte gUnk_02032EC0 _080A46BC: .4byte gSave thumb_func_start sub_080A46C0 sub_080A46C0: @ 0x080A46C0 push {lr} movs r0, #0x80 lsls r0, r0, #1 bl SetBgmVolume movs r0, #0x6c bl SoundReq movs r0, #2 bl ClearRoomFlag bl Subtask_Exit pop {pc} thumb_func_start sub_080A46DC sub_080A46DC: @ 0x080A46DC push {lr} bl sub_080A4608 movs r0, #1 bl sub_080A7114 pop {pc} .align 2, 0 thumb_func_start sub_080A46EC sub_080A46EC: @ 0x080A46EC push {lr} ldr r0, _080A4714 @ =gFadeControl ldrb r0, [r0] cmp r0, #0 bne _080A4710 ldr r1, _080A4718 @ =gUnk_080FC3E4 ldr r0, _080A471C @ =gMenu ldrb r0, [r0, #0x1c] lsls r0, r0, #3 adds r0, r0, r1 ldrb r1, [r0, #7] movs r0, #0xa2 movs r2, #0 bl CreateObject movs r0, #2 bl sub_080A7114 _080A4710: pop {pc} .align 2, 0 _080A4714: .4byte gFadeControl _080A4718: .4byte gUnk_080FC3E4 _080A471C: .4byte gMenu thumb_func_start sub_080A4720 sub_080A4720: @ 0x080A4720 push {r4, lr} ldr r4, _080A4744 @ =gMenu ldrb r0, [r4] cmp r0, #0 beq _080A47C4 adds r1, r4, #0 adds r1, #0x20 ldrb r0, [r1] adds r0, #1 movs r3, #0 strb r0, [r1] ldrb r0, [r1] cmp r0, #0x40 beq _080A4748 cmp r0, #0x80 beq _080A4788 b _080A475A .align 2, 0 _080A4744: .4byte gMenu _080A4748: ldr r0, _080A477C @ =gUnk_02002B0E ldrb r1, [r4, #0x1c] bl WriteBit adds r1, r4, #0 adds r1, #0x21 strb r0, [r1] movs r0, #1 strb r0, [r4, #1] _080A475A: ldr r0, _080A4780 @ =gMenu adds r0, #0x20 ldrb r0, [r0] lsrs r1, r0, #2 cmp r1, #0x10 bls _080A476A movs r0, #0x20 subs r1, r0, r1 _080A476A: ldr r0, _080A4784 @ =gScreen adds r2, r0, #0 adds r2, #0x6a strh r1, [r2] adds r0, #0x66 movs r1, #0xbf strh r1, [r0] b _080A47C4 .align 2, 0 _080A477C: .4byte gUnk_02002B0E _080A4780: .4byte gMenu _080A4784: .4byte gScreen _080A4788: ldr r2, _080A47C8 @ =gScreen adds r0, r2, #0 adds r0, #0x6a strh r3, [r0] subs r0, #4 strh r3, [r0] ldrh r1, [r2] movs r3, #0x80 lsls r3, r3, #6 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] movs r0, #3 bl sub_080A7114 ldr r0, _080A47CC @ =gUnk_0812813C bl sub_080A70AC movs r0, #0x15 strb r0, [r4, #1] adds r0, r4, #0 adds r0, #0x21 ldrb r0, [r0] movs r1, #0x6d cmp r0, #0 bne _080A47BE adds r1, #0x9c _080A47BE: adds r0, r1, #0 bl SoundReq _080A47C4: pop {r4, pc} .align 2, 0 _080A47C8: .4byte gScreen _080A47CC: .4byte gUnk_0812813C thumb_func_start sub_080A47D0 sub_080A47D0: @ 0x080A47D0 push {r4, lr} ldr r0, _080A47EC @ =gMenu movs r4, #0x1f ldrsb r4, [r0, r4] ldr r0, _080A47F0 @ =gInput ldrh r0, [r0, #4] cmp r0, #8 beq _080A47FE cmp r0, #8 bgt _080A47F4 cmp r0, #2 beq _080A47FE b _080A480A .align 2, 0 _080A47EC: .4byte gMenu _080A47F0: .4byte gInput _080A47F4: cmp r0, #0x10 beq _080A4804 cmp r0, #0x20 beq _080A4808 b _080A480A _080A47FE: bl sub_080A46C0 b _080A480A _080A4804: adds r4, #8 b _080A480A _080A4808: subs r4, #8 _080A480A: ldr r1, _080A4828 @ =gMenu ldrb r0, [r1, #0x1e] cmp r4, #0 bge _080A4814 movs r4, #0 _080A4814: cmp r0, r4 bge _080A481A adds r4, r0, #0 _080A481A: strb r4, [r1, #0x1f] ldr r1, _080A482C @ =gScreen adds r0, r4, #0 subs r0, #0x70 strh r0, [r1, #0x18] pop {r4, pc} .align 2, 0 _080A4828: .4byte gMenu _080A482C: .4byte gScreen thumb_func_start sub_080A4830 sub_080A4830: @ 0x080A4830 push {lr} bl sub_080A4608 ldr r2, _080A4858 @ =gScreen ldrh r1, [r2] movs r3, #0x80 lsls r3, r3, #6 adds r0, r3, #0 orrs r0, r1 strh r0, [r2] ldr r0, _080A485C @ =gUnk_0812813C bl sub_080A70AC ldr r1, _080A4860 @ =gMenu movs r0, #0xff strb r0, [r1, #1] movs r0, #1 bl sub_080A7114 pop {pc} .align 2, 0 _080A4858: .4byte gScreen _080A485C: .4byte gUnk_0812813C _080A4860: .4byte gMenu thumb_func_start sub_080A4864 sub_080A4864: @ 0x080A4864 push {r4, r5, r6, lr} ldr r0, _080A4894 @ =gFadeControl ldrb r0, [r0] cmp r0, #0 bne _080A4926 ldr r0, _080A4898 @ =gMenu movs r5, #0x1f ldrsb r5, [r0, r5] ldrb r4, [r0, #0x1c] ldr r0, _080A489C @ =gInput ldrh r1, [r0, #4] cmp r1, #0x20 beq _080A48DC cmp r1, #0x20 bgt _080A48A0 cmp r1, #2 beq _080A48C0 cmp r1, #2 ble _080A48DE cmp r1, #8 beq _080A48C0 cmp r1, #0x10 beq _080A48D8 b _080A48DE .align 2, 0 _080A4894: .4byte gFadeControl _080A4898: .4byte gMenu _080A489C: .4byte gInput _080A48A0: cmp r1, #0x80 beq _080A48D4 cmp r1, #0x80 bgt _080A48AE cmp r1, #0x40 beq _080A48D0 b _080A48DE _080A48AE: movs r0, #0x80 lsls r0, r0, #1 cmp r1, r0 beq _080A48CC movs r0, #0x80 lsls r0, r0, #2 cmp r1, r0 beq _080A48C8 b _080A48DE _080A48C0: movs r0, #3 bl sub_080A7114 b _080A48DE _080A48C8: subs r4, #5 b _080A48DE _080A48CC: adds r4, #5 b _080A48DE _080A48D0: subs r4, #1 b _080A48DE _080A48D4: adds r4, #1 b _080A48DE _080A48D8: adds r5, #8 b _080A48DE _080A48DC: subs r5, #8 _080A48DE: ldr r0, _080A4928 @ =gSave ldrb r0, [r0, #6] movs r1, #0x88 cmp r0, #0 bne _080A48EA movs r1, #0x82 _080A48EA: cmp r4, #0 bgt _080A48F0 movs r4, #1 _080A48F0: cmp r1, r4 bge _080A48F6 adds r4, r1, #0 _080A48F6: ldr r6, _080A492C @ =gMenu ldrb r0, [r6, #0x1c] cmp r0, r4 beq _080A490E strb r4, [r6, #0x1c] movs r0, #0x69 bl SoundReq movs r0, #2 bl sub_080A7114 movs r5, #0 _080A490E: ldrb r0, [r6, #0x1e] cmp r5, #0 bge _080A4916 movs r5, #0 _080A4916: cmp r0, r5 bge _080A491C adds r5, r0, #0 _080A491C: strb r5, [r6, #0x1f] ldr r1, _080A4930 @ =gScreen adds r0, r5, #0 subs r0, #0x70 strh r0, [r1, #0x18] _080A4926: pop {r4, r5, r6, pc} .align 2, 0 _080A4928: .4byte gSave _080A492C: .4byte gMenu _080A4930: .4byte gScreen thumb_func_start sub_080A4934 sub_080A4934: @ 0x080A4934 push {lr} movs r0, #1 bl sub_080A7114 pop {pc} .align 2, 0 thumb_func_start sub_080A4940 sub_080A4940: @ 0x080A4940 push {lr} bl sub_080A46C0 pop {pc} thumb_func_start sub_080A4948 sub_080A4948: @ 0x080A4948 push {r4, lr} adds r1, r0, #0 movs r4, #0 ldr r3, _080A4974 @ =gSave ldrb r0, [r3, #6] movs r2, #0x88 cmp r0, #0 bne _080A495A movs r2, #0x82 _080A495A: cmp r1, #0 bgt _080A4962 cmp r2, r1 blt _080A4970 _080A4962: adds r0, r3, #0 adds r0, #0xce bl ReadBit cmp r0, #0 beq _080A4970 movs r4, #1 _080A4970: adds r0, r4, #0 pop {r4, pc} .align 2, 0 _080A4974: .4byte gSave thumb_func_start sub_080A4978 sub_080A4978: @ 0x080A4978 .ifdef EU push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} ldr r5, _080A432C @ =gOamCmd movs r0, #0 strh r0, [r5, #4] strh r0, [r5, #6] movs r0, #0x80 lsls r0, r0, #4 strh r0, [r5, #8] movs r0, #0x9c strh r0, [r5] movs r0, #0x48 strh r0, [r5, #2] ldr r7, _080A4330 @ =0x000001FB adds r0, r7, #0 movs r1, #0 bl DrawDirect ldr r0, _080A4334 @ =gSave ldrb r0, [r0, #6] movs r2, #0x88 cmp r0, #0 bne _080A41C2 movs r2, #0x82 _080A41C2: ldr r3, _080A4338 @ =gChooseFileState ldrb r1, [r3, #1] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080A4226 ldrb r4, [r3, #0x1c] cmp r2, r4 blt _080A4226 movs r6, #0xe8 strh r6, [r5] movs r0, #0xa0 lsls r0, r0, #7 adds r1, r2, #0 bl __divsi3 subs r1, r4, #1 muls r0, r1, r0 cmp r0, #0 bge _080A41EC adds r0, #0xff _080A41EC: asrs r0, r0, #8 adds r0, #0x20 strh r0, [r5, #2] adds r0, r7, #0 movs r1, #1 bl DrawDirect ldr r0, _080A433C @ =gMain ldrh r1, [r0, #0xc] movs r0, #0x10 ands r0, r1 movs r4, #2 cmp r0, #0 beq _080A420A movs r4, #4 _080A420A: strh r6, [r5] movs r0, #0x1a strh r0, [r5, #2] adds r0, r7, #0 adds r1, r4, #0 bl DrawDirect strh r6, [r5] movs r0, #0x76 strh r0, [r5, #2] adds r1, r4, #1 adds r0, r7, #0 bl DrawDirect _080A4226: ldr r0, _080A433C @ =gMain ldrh r1, [r0, #0xc] movs r2, #0x10 adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _080A427C ldr r5, _080A4338 @ =gChooseFileState ldrb r1, [r5, #1] adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _080A427C ldrb r0, [r5, #0x1e] cmp r0, #0 beq _080A427C ldr r4, _080A432C @ =gOamCmd strh r2, [r4, #2] movs r0, #0x1f ldrsb r0, [r5, r0] cmp r0, #0 ble _080A4262 movs r0, #6 strh r0, [r4] movs r0, #0x9c strh r0, [r4, #2] ldr r0, _080A4330 @ =0x000001FB movs r1, #6 bl DrawDirect _080A4262: ldrb r1, [r5, #0x1e] movs r0, #0x1f ldrsb r0, [r5, r0] cmp r1, r0 ble _080A427C movs r0, #0xea strh r0, [r4] movs r0, #0x9c strh r0, [r4, #2] ldr r0, _080A4330 @ =0x000001FB movs r1, #7 bl DrawDirect _080A427C: movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #0 beq _080A42D0 ldr r2, _080A4338 @ =gChooseFileState ldrb r1, [r2, #1] movs r0, #4 ands r0, r1 cmp r0, #0 beq _080A42D0 ldr r1, _080A432C @ =gOamCmd movs r0, #0x10 strh r0, [r1, #2] ldrb r4, [r2, #0x1c] movs r6, #2 adds r7, r1, #0 movs r5, #0x6b _080A42A0: strh r5, [r7] adds r0, r4, #0 movs r1, #0xa bl __modsi3 lsls r0, r0, #1 movs r2, #0x9e lsls r2, r2, #4 adds r1, r2, #0 orrs r0, r1 strh r0, [r7, #8] movs r0, #0 movs r1, #9 bl DrawDirect adds r0, r4, #0 movs r1, #0xa bl __divsi3 adds r4, r0, #0 subs r5, #7 subs r6, #1 cmp r6, #0 bge _080A42A0 _080A42D0: ldr r4, _080A4338 @ =gChooseFileState ldrb r1, [r4, #1] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080A4352 ldrb r0, [r4, #0x1c] bl sub_080A4948 cmp r0, #0 beq _080A4352 ldr r1, _080A432C @ =gOamCmd movs r0, #0x2c strh r0, [r1] movs r0, #0x48 strh r0, [r1, #2] movs r0, #0xd4 lsls r0, r0, #7 strh r0, [r1, #8] ldr r0, _080A4340 @ =0x000001F7 ldrb r1, [r4, #0x1c] subs r1, #1 bl DrawDirect ldrb r1, [r4, #0x1c] ldrb r0, [r4, #0x1d] cmp r0, r1 beq _080A4352 strb r1, [r4, #0x1d] ldrb r4, [r4, #0x1c] lsls r4, r4, #4 ldr r0, _080A4344 @ =gFigurines adds r4, r4, r0 ldr r0, [r4] movs r1, #0x16 movs r2, #9 bl LoadPalettes ldr r0, [r4, #4] ldr r2, [r4, #8] cmp r2, #0 bge _080A434CEU ldr r1, _080A4348EU @ =0x06014000 bl LZ77UnCompVram b _080A4352 .align 2, 0 _080A432C: .4byte gOamCmd _080A4330: .4byte 0x000001FB _080A4334: .4byte gSave _080A4338: .4byte gChooseFileState _080A433C: .4byte gMain _080A4340: .4byte 0x000001F7 _080A4344: .4byte gFigurines _080A4348EU: .4byte 0x06014000 _080A434CEU: ldr r1, _080A4358EU @ =0x06014000 bl LoadResourceAsync _080A4352: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _080A4358EU: .4byte 0x06014000 .else push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} ldr r5, _080A4B1C @ =gOamCmd movs r0, #0 strh r0, [r5, #4] strh r0, [r5, #6] movs r0, #0x80 lsls r0, r0, #4 strh r0, [r5, #8] movs r0, #0x9c strh r0, [r5] movs r0, #0x48 strh r0, [r5, #2] movs r7, #0xfe lsls r7, r7, #1 adds r0, r7, #0 movs r1, #0 bl DrawDirect ldr r0, _080A4B20 @ =gSave ldrb r0, [r0, #6] movs r2, #0x88 cmp r0, #0 bne _080A49AC movs r2, #0x82 _080A49AC: ldr r3, _080A4B24 @ =gMenu ldrb r1, [r3, #1] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080A4A10 ldrb r4, [r3, #0x1c] cmp r2, r4 blt _080A4A10 movs r6, #0xe8 strh r6, [r5] movs r0, #0xa0 lsls r0, r0, #7 adds r1, r2, #0 bl __divsi3 subs r1, r4, #1 muls r0, r1, r0 cmp r0, #0 bge _080A49D6 adds r0, #0xff _080A49D6: asrs r0, r0, #8 adds r0, #0x20 strh r0, [r5, #2] adds r0, r7, #0 movs r1, #1 bl DrawDirect ldr r0, _080A4B28 @ =gMain ldrh r1, [r0, #0xc] movs r0, #0x10 ands r0, r1 movs r4, #2 cmp r0, #0 beq _080A49F4 movs r4, #4 _080A49F4: strh r6, [r5] movs r0, #0x1a strh r0, [r5, #2] adds r0, r7, #0 adds r1, r4, #0 bl DrawDirect strh r6, [r5] movs r0, #0x76 strh r0, [r5, #2] adds r1, r4, #1 adds r0, r7, #0 bl DrawDirect _080A4A10: ldr r0, _080A4B28 @ =gMain ldrh r1, [r0, #0xc] movs r2, #0x10 adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _080A4A6A ldr r5, _080A4B24 @ =gMenu ldrb r1, [r5, #1] adds r0, r2, #0 ands r0, r1 cmp r0, #0 beq _080A4A6A ldrb r0, [r5, #0x1e] cmp r0, #0 beq _080A4A6A ldr r4, _080A4B1C @ =gOamCmd strh r2, [r4, #2] movs r0, #0x1f ldrsb r0, [r5, r0] cmp r0, #0 ble _080A4A4E movs r0, #6 strh r0, [r4] movs r0, #0x9c strh r0, [r4, #2] movs r0, #0xfe lsls r0, r0, #1 movs r1, #6 bl DrawDirect _080A4A4E: ldrb r1, [r5, #0x1e] movs r0, #0x1f ldrsb r0, [r5, r0] cmp r1, r0 ble _080A4A6A movs r0, #0xea strh r0, [r4] movs r0, #0x9c strh r0, [r4, #2] movs r0, #0xfe lsls r0, r0, #1 movs r1, #7 bl DrawDirect _080A4A6A: movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #0 beq _080A4ABE ldr r2, _080A4B24 @ =gMenu ldrb r1, [r2, #1] movs r0, #4 ands r0, r1 cmp r0, #0 beq _080A4ABE ldr r1, _080A4B1C @ =gOamCmd movs r0, #0x10 strh r0, [r1, #2] ldrb r4, [r2, #0x1c] movs r6, #2 adds r7, r1, #0 movs r5, #0x6b _080A4A8E: strh r5, [r7] adds r0, r4, #0 movs r1, #0xa bl __modsi3 lsls r0, r0, #1 movs r2, #0x9e lsls r2, r2, #4 adds r1, r2, #0 orrs r0, r1 strh r0, [r7, #8] movs r0, #0 movs r1, #9 bl DrawDirect adds r0, r4, #0 movs r1, #0xa bl __divsi3 adds r4, r0, #0 subs r5, #7 subs r6, #1 cmp r6, #0 bge _080A4A8E _080A4ABE: ldr r4, _080A4B24 @ =gMenu ldrb r1, [r4, #1] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080A4B3A ldrb r0, [r4, #0x1c] bl sub_080A4948 cmp r0, #0 beq _080A4B3A ldr r1, _080A4B1C @ =gOamCmd movs r0, #0x2c strh r0, [r1] movs r0, #0x48 strh r0, [r1, #2] movs r0, #0xd4 lsls r0, r0, #7 strh r0, [r1, #8] movs r0, #0xfc lsls r0, r0, #1 ldrb r1, [r4, #0x1c] subs r1, #1 bl DrawDirect ldrb r1, [r4, #0x1c] ldrb r0, [r4, #0x1d] cmp r0, r1 beq _080A4B3A strb r1, [r4, #0x1d] ldrb r4, [r4, #0x1c] lsls r4, r4, #4 ldr r0, _080A4B2C @ =gFigurines adds r4, r4, r0 ldr r0, [r4] movs r1, #0x16 movs r2, #9 bl LoadPalettes ldr r0, [r4, #4] ldr r2, [r4, #8] cmp r2, #0 bge _080A4B34 ldr r1, _080A4B30 @ =0x06014000 bl LZ77UnCompVram b _080A4B3A .align 2, 0 _080A4B1C: .4byte gOamCmd _080A4B20: .4byte gSave _080A4B24: .4byte gMenu _080A4B28: .4byte gMain _080A4B2C: .4byte gFigurines _080A4B30: .4byte 0x06014000 _080A4B34: ldr r1, _080A4B40 @ =0x06014000 bl LoadResourceAsync _080A4B3A: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 _080A4B40: .4byte 0x06014000 .endif thumb_func_start sub_080A4B44 sub_080A4B44: @ 0x080A4B44 push {r4, r5, lr} ldr r5, _080A4B9C @ =gMenu ldrb r4, [r5, #0x1c] ldrb r1, [r5, #1] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _080A4B5C adds r0, r4, #0 bl sub_080A4CBC strb r0, [r5, #0x1e] _080A4B5C: ldrb r1, [r5, #1] movs r0, #4 ands r0, r1 cmp r0, #0 beq _080A4B6E adds r0, r4, #0 movs r1, #2 bl sub_080A4BA0 _080A4B6E: ldrb r1, [r5, #1] movs r0, #8 ands r0, r1 cmp r0, #0 beq _080A4B98 subs r0, r4, #2 movs r1, #0 bl sub_080A4BA0 subs r0, r4, #1 movs r1, #1 bl sub_080A4BA0 adds r0, r4, #1 movs r1, #3 bl sub_080A4BA0 adds r0, r4, #2 movs r1, #4 bl sub_080A4BA0 _080A4B98: pop {r4, r5, pc} .align 2, 0 _080A4B9C: .4byte gMenu thumb_func_start sub_080A4BA0 sub_080A4BA0: @ 0x080A4BA0 push {r4, r5, r6, lr} sub sp, #0x54 adds r5, r0, #0 adds r6, r1, #0 add r0, sp, #0x18 movs r1, #0x30 bl MemClear ldr r0, _080A4C08 @ =gUnk_0812816C mov r1, sp movs r2, #0x18 bl MemCopy ldr r0, _080A4C0C @ =gUnk_08128184 add r4, sp, #0x48 adds r1, r4, #0 movs r2, #0xc bl MemCopy lsls r1, r6, #1 adds r1, r1, r6 lsls r2, r1, #9 ldr r0, [sp, #4] adds r0, r0, r2 str r0, [sp, #4] mov r2, sp mov r0, sp lsls r1, r1, #4 ldrh r0, [r0, #0x10] adds r1, r1, r0 strh r1, [r2, #0x10] lsls r1, r6, #7 ldr r0, [sp] adds r0, r0, r1 str r0, [sp] cmp r6, #2 bne _080A4BEE mov r0, sp strb r6, [r0, #0x14] _080A4BEE: ldr r0, _080A4C10 @ =gSave ldrb r0, [r0, #6] movs r1, #0x88 cmp r0, #0 bne _080A4BFA movs r1, #0x82 _080A4BFA: cmp r5, #0 ble _080A4C02 cmp r1, r5 bge _080A4C14 _080A4C02: movs r5, #1 rsbs r5, r5, #0 b _080A4C3E .align 2, 0 _080A4C08: .4byte gUnk_0812816C _080A4C0C: .4byte gUnk_08128184 _080A4C10: .4byte gSave _080A4C14: ldr r1, _080A4C30 @ =gUnk_020227E8 ldr r2, _080A4C34 @ =0x00303030 adds r0, r5, #0 bl sub_08057044 adds r0, r5, #0 bl sub_080A4948 cmp r0, #0 bne _080A4C38 movs r0, #0x80 lsls r0, r0, #8 b _080A4C3C .align 2, 0 _080A4C30: .4byte gUnk_020227E8 _080A4C34: .4byte 0x00303030 _080A4C38: movs r0, #0x80 lsls r0, r0, #4 _080A4C3C: adds r5, r5, r0 _080A4C3E: ldr r0, _080A4C94 @ =gMenu lsls r1, r6, #1 adds r0, #0x10 adds r1, r1, r0 ldrh r0, [r1] cmp r0, r5 beq _080A4CB2 strh r5, [r1] ldr r0, _080A4C98 @ =0x0000F00B cmp r6, #2 bne _080A4C56 subs r0, #7 _080A4C56: ldr r1, [sp] movs r2, #0x80 bl MemFill16 cmp r5, #0 ble _080A4CAC ldr r0, _080A4C9C @ =0x00007FFF cmp r5, r0 ble _080A4C6A ldr r5, _080A4CA0 @ =0x00000889 _080A4C6A: adds r0, r5, #0 cmp r5, #0 bge _080A4C72 adds r0, #0xff _080A4C72: asrs r0, r0, #8 strb r0, [r4, #8] strb r5, [r4, #9] ldr r0, [sp] adds r0, #0x16 str r0, [sp] movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #0 bne _080A4CA4 adds r0, r4, #0 mov r1, sp bl sub_0805F46C b _080A4CAC .align 2, 0 _080A4C94: .4byte gMenu _080A4C98: .4byte 0x0000F00B _080A4C9C: .4byte 0x00007FFF _080A4CA0: .4byte 0x00000889 _080A4CA4: adds r0, r5, #0 mov r1, sp bl sub_0805F46C _080A4CAC: ldr r1, _080A4CB8 @ =gScreen movs r0, #1 strh r0, [r1, #0x32] _080A4CB2: add sp, #0x54 pop {r4, r5, r6, pc} .align 2, 0 _080A4CB8: .4byte gScreen thumb_func_start sub_080A4CBC sub_080A4CBC: @ 0x080A4CBC push {r4, r5, r6, lr} adds r6, r0, #0 ldr r1, _080A4D0C @ =gMenu ldrb r0, [r1, #0x1a] cmp r0, r6 beq _080A4CFE strb r6, [r1, #0x1a] ldr r4, _080A4D10 @ =gBG1Buffer movs r5, #0x80 lsls r5, r5, #4 adds r0, r4, #0 adds r1, r5, #0 bl MemClear ldr r1, _080A4D14 @ =0x0600E000 adds r0, r4, #0 adds r2, r5, #0 bl MemCopy adds r0, r6, #0 bl sub_080A4948 cmp r0, #0 beq _080A4CF8 movs r1, #0x90 lsls r1, r1, #4 adds r0, r6, r1 ldr r1, _080A4D18 @ =gUnk_08128190 bl sub_0805F46C _080A4CF8: ldr r1, _080A4D1C @ =gScreen movs r0, #1 strh r0, [r1, #0x1a] _080A4CFE: ldr r0, _080A4D18 @ =gUnk_08128190 ldr r0, [r0] movs r2, #0x80 lsls r2, r2, #1 adds r1, r0, r2 movs r2, #0 b _080A4D28 .align 2, 0 _080A4D0C: .4byte gMenu _080A4D10: .4byte gBG1Buffer _080A4D14: .4byte 0x0600E000 _080A4D18: .4byte gUnk_08128190 _080A4D1C: .4byte gScreen _080A4D20: adds r1, #0x40 adds r2, #1 cmp r2, #0x13 bhi _080A4D2E _080A4D28: ldrh r0, [r1] cmp r0, #0 bne _080A4D20 _080A4D2E: lsls r0, r2, #3 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_080A4D34 sub_080A4D34: @ 0x080A4D34 push {lr} bl LoadGfxGroups movs r0, #0xb5 bl LoadPaletteGroup ldr r1, _080A4D50 @ =gSave adds r2, r1, #0 adds r2, #0xaa ldrb r0, [r2] cmp r0, #8 bhi _080A4D54 movs r1, #2 b _080A4D66 .align 2, 0 _080A4D50: .4byte gSave _080A4D54: adds r0, r1, #0 adds r0, #0xab ldrb r0, [r0] ldrb r1, [r2] subs r0, r0, r1 movs r1, #1 cmp r0, #8 bgt _080A4D66 movs r1, #0 _080A4D66: adds r0, r1, #0 adds r0, #0x56 bl LoadGfxGroup ldr r1, _080A4D80 @ =gScreen movs r0, #0 strh r0, [r1, #0x2e] strh r0, [r1, #0x30] ldr r0, _080A4D84 @ =0x00001E0B strh r0, [r1, #0x2c] movs r0, #1 strh r0, [r1, #0x32] pop {pc} .align 2, 0 _080A4D80: .4byte gScreen _080A4D84: .4byte 0x00001E0B thumb_func_start sub_080A4D88 sub_080A4D88: @ 0x080A4D88 push {lr} ldr r0, _080A4DA4 @ =gUnk_020344A0 movs r1, #8 bl MemClear movs r0, #1 movs r1, #0 bl MenuFadeIn movs r0, #0x80 bl SetBgmVolume pop {pc} .align 2, 0 _080A4DA4: .4byte gUnk_020344A0 thumb_func_start sub_080A4DA8 sub_080A4DA8: @ 0x080A4DA8 push {r4, lr} adds r4, r0, #0 bl sub_080A4D34 adds r0, r4, #0 bl sub_080A4DB8 pop {r4, pc} thumb_func_start sub_080A4DB8 sub_080A4DB8: @ 0x080A4DB8 push {r4, r5, lr} adds r5, r0, #0 bl sub_08056250 ldr r0, _080A4E58 @ =gBG0Buffer movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 bl MemClear ldr r0, _080A4E5C @ =gBG1Buffer adds r1, r4, #0 bl MemClear ldr r0, _080A4E60 @ =gBG2Buffer adds r1, r4, #0 bl MemClear ldr r0, _080A4E64 @ =gUnk_0200AF34 movs r1, #0xc0 lsls r1, r1, #2 bl MemClear ldr r4, _080A4E68 @ =gMenu adds r0, r4, #0 movs r1, #0x30 bl MemClear ldr r0, _080A4E6C @ =0x0000FFFF strh r0, [r4, #0x2e] ldr r0, _080A4E70 @ =gUnk_02034490 adds r0, #2 adds r0, r5, r0 ldrb r0, [r0] movs r3, #0 strb r0, [r4, #3] ldr r0, _080A4E74 @ =gUnk_08128A38 lsls r5, r5, #3 adds r5, r5, r0 ldrb r0, [r5] lsls r0, r0, #3 ldr r1, _080A4E78 @ =gUnk_08128AD8 adds r4, r0, r1 ldr r1, _080A4E7C @ =gScreen ldrh r2, [r4, #2] movs r5, #0xca lsls r5, r5, #5 adds r0, r5, #0 orrs r0, r2 strh r0, [r1] strh r3, [r1, #0xa] strh r3, [r1, #0xc] movs r2, #1 strh r2, [r1, #0xe] strh r3, [r1, #0x16] strh r3, [r1, #0x18] ldrh r0, [r4, #4] strh r0, [r1, #0x14] strh r2, [r1, #0x1a] strh r3, [r1, #0x22] strh r3, [r1, #0x24] ldrh r0, [r4, #6] strh r0, [r1, #0x20] strh r2, [r1, #0x26] strh r3, [r1, #0x2e] strh r3, [r1, #0x30] ldr r0, _080A4E80 @ =0x00001E0B strh r0, [r1, #0x2c] ldrb r0, [r4] cmp r0, #0 beq _080A4E4A bl LoadPaletteGroup _080A4E4A: ldrb r0, [r4, #1] cmp r0, #0 beq _080A4E54 bl LoadGfxGroup _080A4E54: pop {r4, r5, pc} .align 2, 0 _080A4E58: .4byte gBG0Buffer _080A4E5C: .4byte gBG1Buffer _080A4E60: .4byte gBG2Buffer _080A4E64: .4byte gUnk_0200AF34 _080A4E68: .4byte gMenu _080A4E6C: .4byte 0x0000FFFF _080A4E70: .4byte gUnk_02034490 _080A4E74: .4byte gUnk_08128A38 _080A4E78: .4byte gUnk_08128AD8 _080A4E7C: .4byte gScreen _080A4E80: .4byte 0x00001E0B thumb_func_start sub_080A4E84 sub_080A4E84: @ 0x080A4E84 ldr r1, _080A4E8C @ =gUnk_02034490 strb r0, [r1, #0x14] bx lr .align 2, 0 _080A4E8C: .4byte gUnk_02034490 thumb_func_start sub_080A4E90 sub_080A4E90: @ 0x080A4E90 ldr r1, _080A4E9C @ =gUnk_02034490 movs r2, #0 strb r0, [r1, #0x11] strb r2, [r1, #0x12] bx lr .align 2, 0 _080A4E9C: .4byte gUnk_02034490 thumb_func_start Subtask_PauseMenu Subtask_PauseMenu: @ 0x080A4EA0 push {r4, lr} ldr r4, _080A4EB8 @ =gUnk_02034490 ldrb r0, [r4, #0x11] cmp r0, #6 bne _080A4EBC movs r0, #0x80 lsls r0, r0, #1 bl SetBgmVolume bl Subtask_Exit b _080A4F14 .align 2, 0 _080A4EB8: .4byte gUnk_02034490 _080A4EBC: bl FlushSprites ldr r1, _080A4F18 @ =gUnk_08128B30 ldrb r0, [r4, #0x11] lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] bl _call_via_r0 bl sub_080A5128 bl sub_0801C1D4 bl DrawOAMCmd ldrb r0, [r4, #0x11] cmp r0, #4 beq _080A4EF0 ldr r0, _080A4F1C @ =gUnk_08128A38 ldrb r1, [r4, #1] lsls r1, r1, #3 adds r0, #4 adds r1, r1, r0 ldr r0, [r1] bl _call_via_r0 _080A4EF0: bl CopyOAM movs r3, #0x16 ldrsb r3, [r4, r3] movs r1, #0 cmp r3, #0 beq _080A4F00 ldr r1, _080A4F20 @ =0x00000E46 _080A4F00: ldr r2, _080A4F24 @ =gScreen adds r0, r2, #0 adds r0, #0x66 strh r1, [r0] lsls r1, r3, #8 movs r0, #0x10 subs r0, r0, r3 orrs r1, r0 adds r2, #0x68 strh r1, [r2] _080A4F14: pop {r4, pc} .align 2, 0 _080A4F18: .4byte gUnk_08128B30 _080A4F1C: .4byte gUnk_08128A38 _080A4F20: .4byte 0x00000E46 _080A4F24: .4byte gScreen thumb_func_start sub_080A4F28 sub_080A4F28: @ 0x080A4F28 push {r4, lr} bl sub_0801E8D4 bl sub_080A4D34 movs r1, #4 ldr r3, _080A4F90 @ =gUnk_02034492 movs r2, #0 _080A4F38: adds r0, r1, r3 strb r2, [r0] adds r1, #1 cmp r1, #0xd ble _080A4F38 ldr r1, _080A4F94 @ =gRoomTransition ldrh r0, [r1, #0x20] ldrh r1, [r1, #0x22] bl sub_080A6A80 ldr r4, _080A4F98 @ =gUnk_02034490 ldrb r0, [r0, #4] strb r0, [r4, #6] bl sub_0801DB94 strb r0, [r4, #7] movs r0, #0x10 bl IsItemEquipped movs r1, #0xf cmp r0, #2 beq _080A4F66 movs r1, #0x10 _080A4F66: strb r1, [r4, #0x15] ldr r1, _080A4F9C @ =gUnk_08128A38 ldrb r0, [r4, #1] lsls r0, r0, #3 adds r0, r0, r1 ldrb r0, [r0, #1] bl sub_080A50A0 strb r0, [r4, #1] strb r0, [r4, #0x14] bl sub_080A4DB8 movs r0, #4 movs r1, #0x20 bl SetFade movs r0, #1 bl sub_080A4E90 pop {r4, pc} .align 2, 0 _080A4F90: .4byte gUnk_02034492 _080A4F94: .4byte gRoomTransition _080A4F98: .4byte gUnk_02034490 _080A4F9C: .4byte gUnk_08128A38 thumb_func_start sub_080A4FA0 sub_080A4FA0: @ 0x080A4FA0 push {lr} ldr r0, _080A4FB4 @ =gFadeControl ldrb r0, [r0] cmp r0, #0 bne _080A4FB0 movs r0, #2 bl sub_080A4E90 _080A4FB0: pop {pc} .align 2, 0 _080A4FB4: .4byte gFadeControl thumb_func_start sub_080A4FB8 sub_080A4FB8: @ 0x080A4FB8 push {r4, r5, lr} bl sub_080A51F4 cmp r0, #0 beq _080A5052 ldr r0, _080A4FE4 @ =gMenu ldr r1, [r0, #0xc] adds r2, r0, #0 cmp r1, #0 beq _080A5052 movs r4, #1 rsbs r4, r4, #0 ldr r0, _080A4FE8 @ =gInput ldrh r1, [r0, #2] cmp r1, #8 beq _080A4FFE cmp r1, #8 bgt _080A4FEC cmp r1, #2 beq _080A500A b _080A500C .align 2, 0 _080A4FE4: .4byte gMenu _080A4FE8: .4byte gInput _080A4FEC: movs r0, #0x80 lsls r0, r0, #1 cmp r1, r0 beq _080A5006 movs r0, #0x80 lsls r0, r0, #2 cmp r1, r0 beq _080A5002 b _080A500C _080A4FFE: movs r4, #0 b _080A5010 _080A5002: movs r4, #1 b _080A5010 _080A5006: movs r4, #2 b _080A5010 _080A500A: movs r4, #3 _080A500C: cmp r4, #0 blt _080A5052 _080A5010: ldr r0, [r2, #0xc] adds r0, r0, r4 ldrb r5, [r0] cmp r5, #6 bgt _080A5024 cmp r5, #4 bge _080A5028 cmp r5, #0 beq _080A5052 b _080A5042 _080A5024: cmp r5, #0xf bne _080A5042 _080A5028: movs r0, #0x47 bl GetInventoryValue cmp r0, #0 bne _080A5042 movs r1, #1 cmp r4, #1 bne _080A503A movs r1, #2 _080A503A: ldr r0, _080A5078 @ =gMenu ldr r0, [r0, #0xc] adds r0, r0, r1 ldrb r5, [r0] _080A5042: ldr r0, _080A507C @ =gUnk_02034490 movs r4, #0 strb r5, [r0, #0x14] movs r0, #0x65 bl SoundReq ldr r0, _080A5078 @ =gMenu str r4, [r0, #0xc] _080A5052: ldr r4, _080A507C @ =gUnk_02034490 movs r0, #0x14 ldrsb r0, [r4, r0] bl sub_080A50A0 adds r5, r0, #0 ldrb r0, [r4, #1] cmp r0, r5 beq _080A5096 strb r5, [r4, #0x14] bl sub_080A51D4 cmp r5, #0xe bne _080A5080 movs r0, #6 bl sub_080A4E90 b _080A5096 .align 2, 0 _080A5078: .4byte gMenu _080A507C: .4byte gUnk_02034490 _080A5080: movs r0, #3 bl sub_080A4E90 ldr r0, _080A5098 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 bl MemClear ldr r1, _080A509C @ =gScreen movs r0, #1 strh r0, [r1, #0xe] _080A5096: pop {r4, r5, pc} .align 2, 0 _080A5098: .4byte gBG0Buffer _080A509C: .4byte gScreen thumb_func_start sub_080A50A0 sub_080A50A0: @ 0x080A50A0 push {lr} adds r1, r0, #0 cmp r1, #0xf bne _080A50B4 bl AreaHasMap movs r1, #4 cmp r0, #0 beq _080A50B4 movs r1, #5 _080A50B4: adds r0, r1, #0 pop {pc} thumb_func_start sub_080A50B8 sub_080A50B8: @ 0x080A50B8 push {r4, lr} ldr r4, _080A50DC @ =gUnk_02034490 movs r0, #0x16 ldrsb r0, [r4, r0] adds r0, #2 cmp r0, #0x10 ble _080A50D8 ldr r2, _080A50E0 @ =gScreen ldrh r1, [r2] ldr r0, _080A50E4 @ =0x0000F8FF ands r0, r1 strh r0, [r2] movs r0, #4 bl sub_080A4E90 movs r0, #0x10 _080A50D8: strb r0, [r4, #0x16] pop {r4, pc} .align 2, 0 _080A50DC: .4byte gUnk_02034490 _080A50E0: .4byte gScreen _080A50E4: .4byte 0x0000F8FF thumb_func_start sub_080A50E8 sub_080A50E8: @ 0x080A50E8 push {lr} ldr r1, _080A5104 @ =gUnk_02034490 movs r0, #0x10 strb r0, [r1, #0x16] movs r0, #0x14 ldrsb r0, [r1, r0] strb r0, [r1, #1] bl sub_080A4DB8 movs r0, #5 bl sub_080A4E90 pop {pc} .align 2, 0 _080A5104: .4byte gUnk_02034490 thumb_func_start sub_080A5108 sub_080A5108: @ 0x080A5108 push {r4, lr} ldr r4, _080A5124 @ =gUnk_02034490 movs r0, #0x16 ldrsb r0, [r4, r0] subs r0, #2 cmp r0, #0 bge _080A511E movs r0, #2 bl sub_080A4E90 movs r0, #0 _080A511E: strb r0, [r4, #0x16] pop {r4, pc} .align 2, 0 _080A5124: .4byte gUnk_02034490 thumb_func_start sub_080A5128 sub_080A5128: @ 0x080A5128 push {r4, r5, lr} sub sp, #0x18 ldr r0, _080A5140 @ =gUnk_02034490 ldrb r1, [r0, #1] adds r2, r0, #0 cmp r1, #7 blt _080A515A cmp r1, #8 ble _080A5144 cmp r1, #0xb bgt _080A515A b _080A51C6 .align 2, 0 _080A5140: .4byte gUnk_02034490 _080A5144: movs r0, #0x60 str r0, [sp] movs r0, #0x18 str r0, [sp, #4] subs r0, #0x28 str r0, [sp, #8] movs r1, #0x48 str r1, [sp, #0xc] movs r0, #0x80 lsls r0, r0, #1 b _080A5182 _080A515A: movs r0, #0x40 str r0, [sp] movs r0, #0x16 ldrsb r0, [r2, r0] lsls r0, r0, #1 movs r4, #0x10 subs r0, r4, r0 str r0, [sp, #4] movs r0, #0x16 ldrsb r0, [r2, r0] movs r1, #3 bl __divsi3 lsls r0, r0, #0x18 asrs r0, r0, #0x18 subs r4, r4, r0 str r4, [sp, #8] movs r1, #0x48 str r1, [sp, #0xc] adds r0, #0xe0 _080A5182: str r0, [sp, #0x10] str r1, [sp, #0x14] ldr r4, _080A51CC @ =gOamCmd movs r0, #0 strh r0, [r4, #4] strh r0, [r4, #6] movs r0, #0x80 lsls r0, r0, #3 strh r0, [r4, #8] ldr r0, [sp] strh r0, [r4] ldr r0, [sp, #4] strh r0, [r4, #2] .ifdef EU movs r5, #0xfd lsls r5, r5, #0x1 .else ldr r5, _080A51D0 @ =0x000001FB .endif adds r0, r5, #0 movs r1, #0 bl DrawDirect ldr r0, [sp, #8] strh r0, [r4] ldr r0, [sp, #0xc] strh r0, [r4, #2] adds r0, r5, #0 movs r1, #1 bl DrawDirect ldr r0, [sp, #0x10] strh r0, [r4] ldr r0, [sp, #0x14] strh r0, [r4, #2] adds r0, r5, #0 movs r1, #2 bl DrawDirect _080A51C6: add sp, #0x18 pop {r4, r5, pc} .align 2, 0 _080A51CC: .4byte gOamCmd .ifndef EU _080A51D0: .4byte 0x000001FB .endif thumb_func_start sub_080A51D4 sub_080A51D4: @ 0x080A51D4 push {lr} ldr r0, _080A51EC @ =gUnk_02034490 ldrb r1, [r0, #1] cmp r1, #0xd bhi _080A51E8 adds r0, #2 adds r0, r1, r0 ldr r1, _080A51F0 @ =gMenu ldrb r1, [r1, #3] strb r1, [r0] _080A51E8: pop {pc} .align 2, 0 _080A51EC: .4byte gUnk_02034490 _080A51F0: .4byte gMenu thumb_func_start sub_080A51F4 sub_080A51F4: @ 0x080A51F4 push {lr} movs r1, #1 ldr r0, _080A5210 @ =gFadeControl ldrb r0, [r0] cmp r0, #0 beq _080A5202 movs r1, #0 _080A5202: ldr r0, _080A5214 @ =gUnk_02034490 ldrb r0, [r0, #0x11] cmp r0, #2 beq _080A520C movs r1, #0 _080A520C: adds r0, r1, #0 pop {pc} .align 2, 0 _080A5210: .4byte gFadeControl _080A5214: .4byte gUnk_02034490 thumb_func_start sub_080A5218 sub_080A5218: @ 0x080A5218 push {lr} ldr r1, _080A5230 @ =gUnk_08128B48 ldr r0, _080A5234 @ =gMenu ldrb r0, [r0, #5] lsls r0, r0, #2 adds r0, r0, r1 ldr r0, [r0] bl _call_via_r0 bl sub_080A5384 pop {pc} .align 2, 0 _080A5230: .4byte gUnk_08128B48 _080A5234: .4byte gMenu thumb_func_start sub_080A5238 sub_080A5238: @ 0x080A5238 push {r4, r5, lr} ldr r4, _080A528C @ =gMenu movs r0, #0 str r0, [r4, #0xc] ldr r0, _080A5290 @ =gUnk_08128B50 bl sub_080A70AC movs r5, #1 adds r4, #0x10 _080A524A: adds r0, r5, #0 bl GetInventoryValue cmp r0, #1 bne _080A527E ldr r1, _080A5294 @ =gUnk_080FD5B4 lsls r0, r5, #3 adds r0, r0, r1 ldrb r1, [r0] cmp r1, #0x11 bhi _080A527E cmp r5, #0x10 bhi _080A526C cmp r5, #0xf blo _080A526C ldr r0, _080A5298 @ =gUnk_02034490 ldrb r5, [r0, #0x15] _080A526C: adds r0, r1, r4 strb r5, [r0] lsls r1, r1, #3 movs r0, #0xd8 lsls r0, r0, #2 adds r1, r1, r0 adds r0, r5, #0 bl sub_080A5F48 _080A527E: adds r5, #1 cmp r5, #0x1f bls _080A524A movs r0, #1 bl sub_080A7114 pop {r4, r5, pc} .align 2, 0 _080A528C: .4byte gMenu _080A5290: .4byte gUnk_08128B50 _080A5294: .4byte gUnk_080FD5B4 _080A5298: .4byte gUnk_02034490 thumb_func_start sub_080A529C sub_080A529C: @ 0x080A529C push {r4, r5, lr} bl sub_080A51F4 cmp r0, #0 beq _080A5380 ldr r1, _080A52D0 @ =gMenu ldr r0, _080A52D4 @ =gUnk_08128BF4 str r0, [r1, #0xc] ldrb r4, [r1, #3] lsls r1, r4, #3 ldr r0, _080A52D8 @ =gItemMenuTable adds r1, r1, r0 ldr r0, _080A52DC @ =gInput ldrh r2, [r0, #2] adds r3, r0, #0 cmp r2, #1 beq _080A52E0 cmp r2, #2 beq _080A52EC ldrh r0, [r3, #4] cmp r0, #0x20 beq _080A5330 cmp r0, #0x20 bgt _080A531E b _080A5318 .align 2, 0 _080A52D0: .4byte gMenu _080A52D4: .4byte gUnk_08128BF4 _080A52D8: .4byte gItemMenuTable _080A52DC: .4byte gInput _080A52E0: cmp r4, #0x10 bne _080A52EC .ifdef DEMO_USA movs r0, #0x6d bl SoundReq b _080A5336 .else .ifdef DEMO_JP @ TODO same as DEMO_USA movs r0, #0x6d bl SoundReq b _080A5336 .else movs r0, #0xb bl sub_080A4E84 b _080A530A .endif .endif _080A52EC: ldr r0, _080A5314 @ =gMenu adds r0, #0x10 adds r2, r4, r0 ldrb r0, [r2] cmp r0, #0 beq _080A5336 ldrh r0, [r3, #2] movs r1, #1 eors r0, r1 rsbs r1, r0, #0 orrs r1, r0 lsrs r1, r1, #0x1f ldrb r0, [r2] bl ForceEquipItem _080A530A: movs r0, #0x6a bl SoundReq b _080A5336 .align 2, 0 _080A5314: .4byte gMenu _080A5318: cmp r0, #0x10 beq _080A5334 b _080A5336 _080A531E: cmp r0, #0x40 beq _080A5328 cmp r0, #0x80 beq _080A532C b _080A5336 _080A5328: ldrb r4, [r1] b _080A5336 _080A532C: ldrb r4, [r1, #1] b _080A5336 _080A5330: ldrb r4, [r1, #2] b _080A5336 _080A5334: ldrb r4, [r1, #3] _080A5336: ldr r5, _080A535C @ =gMenu ldrb r0, [r5, #3] cmp r0, r4 beq _080A5346 strb r4, [r5, #3] movs r0, #0x69 bl SoundReq _080A5346: adds r0, r5, #0 adds r0, #0x10 adds r0, r4, r0 ldrb r1, [r0] cmp r4, #0xc blo _080A5376 cmp r4, #0xf bls _080A5360 cmp r4, #0x10 beq _080A5374 b _080A5376 .align 2, 0 _080A535C: .4byte gMenu _080A5360: cmp r1, #0 beq _080A5376 ldr r0, _080A5370 @ =gSave adds r0, r0, r1 adds r0, #0x9a ldrb r1, [r0] b _080A5376 .align 2, 0 _080A5370: .4byte gSave _080A5374: movs r1, #0x73 _080A5376: movs r0, #0x80 lsls r0, r0, #3 adds r0, r1, r0 bl sub_080A6F6C _080A5380: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080A5384 sub_080A5384: @ 0x080A5384 .ifdef EU push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} ldr r0, _080A4C14EU @ =gOamCmd movs r2, #0 movs r1, #0x80 lsls r1, r1, #3 strh r1, [r0, #4] strh r2, [r0, #6] strh r2, [r0, #8] movs r5, #0 ldr r4, _080A4C18 @ =gSave movs r0, #0xb6 adds r0, r0, r4 mov sl, r0 movs r1, #0xac adds r1, r1, r4 mov sb, r1 movs r2, #0xad adds r2, r2, r4 mov r8, r2 movs r6, #0 _080A4BC8: ldr r0, _080A4C1C @ =gChooseFileState adds r0, #0x10 adds r2, r5, r0 ldrb r0, [r2] cmp r0, #0 beq _080A4C68 ldr r0, _080A4C20 @ =gItemMenuTable adds r1, r6, r0 ldrb r0, [r1, #6] ldr r3, _080A4C14EU @ =gOamCmd strh r0, [r3] ldrb r0, [r1, #7] strh r0, [r3, #2] ldrb r3, [r2] cmp r3, #0x1f bhi _080A4BF4 cmp r3, #0x1c blo _080A4BF4 adds r0, r3, #0 subs r0, #0x1c add r0, sl ldrb r3, [r0] _080A4BF4: movs r2, #3 cmp r3, #7 blo _080A4C42 cmp r3, #8 bhi _080A4C28 ldr r0, _080A4C24 @ =gBombBagSizes adds r1, r4, #0 adds r1, #0xae ldrb r1, [r1] adds r1, r1, r0 ldrb r0, [r1] mov r7, sb ldrb r7, [r7] cmp r0, r7 bhi _080A4C42 b _080A4C40 .align 2, 0 _080A4C14EU: .4byte gOamCmd _080A4C18: .4byte gSave _080A4C1C: .4byte gChooseFileState _080A4C20: .4byte gItemMenuTable _080A4C24: .4byte gBombBagSizes _080A4C28: cmp r3, #0xa bhi _080A4C42 ldr r0, _080A4D40 @ =gQuiverSizes adds r1, r4, #0 adds r1, #0xaf ldrb r1, [r1] adds r1, r1, r0 ldrb r0, [r1] mov r1, r8 ldrb r1, [r1] cmp r0, r1 bhi _080A4C42 _080A4C40: movs r2, #4 _080A4C42: lsls r2, r2, #0xc movs r7, #0xd8 lsls r7, r7, #2 adds r0, r6, r7 movs r7, #0x80 lsls r7, r7, #4 adds r1, r7, #0 orrs r0, r1 orrs r2, r0 ldr r0, _080A4D44 @ =gOamCmd strh r2, [r0, #8] ldr r1, _080A4D48 @ =gSpriteAnimations_322 lsls r0, r3, #2 adds r0, r0, r1 ldr r0, [r0] ldrb r1, [r0] ldr r0, _080A4D4C @ =0x00000141 bl DrawDirect _080A4C68: adds r6, #8 adds r5, #1 cmp r5, #0x10 bls _080A4BC8 ldr r0, _080A4D44 @ =gOamCmd movs r1, #0x80 lsls r1, r1, #4 strh r1, [r0, #8] ldr r1, _080A4D50EU @ =gChooseFileState ldrb r1, [r1, #3] mov sb, r0 cmp r1, #0x10 bne _080A4C8E movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #0 beq _080A4C8E movs r1, #0x11 _080A4C8E: lsls r0, r1, #3 ldr r1, _080A4D54EU @ =gItemMenuTable mov r8, r1 adds r1, r0, r1 mov r4, sb ldrb r0, [r1, #6] strh r0, [r4] ldrb r0, [r1, #7] strh r0, [r4, #2] ldrb r2, [r1, #4] ldr r0, _080A4D58 @ =gMain ldrh r1, [r0, #0xc] movs r0, #0x10 ands r0, r1 adds r1, r2, #4 cmp r0, #0 beq _080A4CB2EU adds r1, r2, #3 _080A4CB2EU: movs r6, #0xfd lsls r6, r6, #1 adds r0, r6, #0 bl DrawDirect movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] movs r1, #0x11 cmp r0, #0 beq _080A4CCA movs r1, #0x10 _080A4CCA: lsls r0, r1, #3 mov r2, r8 adds r1, r0, r2 ldrb r0, [r1, #6] strh r0, [r4] ldrb r0, [r1, #7] strh r0, [r4, #2] movs r0, #0x80 lsls r0, r0, #4 strh r0, [r4, #8] adds r0, r6, #0 movs r1, #0x22 bl DrawDirect ldr r7, _080A4D5C @ =gSave adds r0, r7, #0 adds r0, #0xb4 ldrb r0, [r0] bl sub_080A554C adds r5, r0, #0 cmp r5, #0x10 bhi _080A4D0E lsls r0, r5, #3 mov r3, r8 adds r1, r0, r3 ldrb r0, [r1, #6] strh r0, [r4] ldrb r0, [r1, #7] strh r0, [r4, #2] adds r0, r6, #0 movs r1, #3 bl DrawDirect _080A4D0E: adds r0, r7, #0 adds r0, #0xb5 ldrb r0, [r0] bl sub_080A554C adds r5, r0, #0 cmp r5, #0x10 bhi _080A4D36 lsls r0, r5, #3 mov r7, r8 adds r1, r0, r7 ldrb r0, [r1, #6] mov r2, sb strh r0, [r2] ldrb r0, [r1, #7] strh r0, [r2, #2] adds r0, r6, #0 movs r1, #3 bl DrawDirect _080A4D36: pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _080A4D40: .4byte gQuiverSizes _080A4D44: .4byte gOamCmd _080A4D48: .4byte gSpriteAnimations_322 _080A4D4C: .4byte 0x00000141 _080A4D50EU: .4byte gChooseFileState _080A4D54EU: .4byte gItemMenuTable _080A4D58: .4byte gMain _080A4D5C: .4byte gSave .else push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} ldr r0, _080A5400 @ =gOamCmd movs r2, #0 movs r1, #0x80 lsls r1, r1, #3 strh r1, [r0, #4] strh r2, [r0, #6] strh r2, [r0, #8] movs r5, #0 ldr r4, _080A5404 @ =gSave movs r0, #0xb6 adds r0, r0, r4 mov sl, r0 movs r1, #0xac adds r1, r1, r4 mov sb, r1 movs r2, #0xad adds r2, r2, r4 mov r8, r2 movs r6, #0 _080A53B4: ldr r0, _080A5408 @ =gMenu adds r0, #0x10 adds r2, r5, r0 ldrb r0, [r2] cmp r0, #0 beq _080A5456 ldr r0, _080A540C @ =gItemMenuTable adds r1, r6, r0 ldrb r0, [r1, #6] ldr r3, _080A5400 @ =gOamCmd strh r0, [r3] ldrb r0, [r1, #7] strh r0, [r3, #2] ldrb r3, [r2] cmp r3, #0x1f bhi _080A53E0 cmp r3, #0x1c blo _080A53E0 adds r0, r3, #0 subs r0, #0x1c add r0, sl ldrb r3, [r0] _080A53E0: movs r2, #3 cmp r3, #7 blo _080A542E cmp r3, #8 bhi _080A5414 ldr r0, _080A5410 @ =gBombBagSizes adds r1, r4, #0 adds r1, #0xae ldrb r1, [r1] adds r1, r1, r0 ldrb r0, [r1] mov r7, sb ldrb r7, [r7] cmp r0, r7 bhi _080A542E b _080A542C .align 2, 0 _080A5400: .4byte gOamCmd _080A5404: .4byte gSave _080A5408: .4byte gMenu _080A540C: .4byte gItemMenuTable _080A5410: .4byte gBombBagSizes _080A5414: cmp r3, #0xa bhi _080A542E ldr r0, _080A552C @ =gQuiverSizes adds r1, r4, #0 adds r1, #0xaf ldrb r1, [r1] adds r1, r1, r0 ldrb r0, [r1] mov r1, r8 ldrb r1, [r1] cmp r0, r1 bhi _080A542E _080A542C: movs r2, #4 _080A542E: lsls r2, r2, #0xc movs r7, #0xd8 lsls r7, r7, #2 adds r0, r6, r7 movs r7, #0x80 lsls r7, r7, #4 adds r1, r7, #0 orrs r0, r1 orrs r2, r0 ldr r0, _080A5530 @ =gOamCmd strh r2, [r0, #8] ldr r1, _080A5534 @ =gSpriteAnimations_322 lsls r0, r3, #2 adds r0, r0, r1 ldr r0, [r0] ldrb r1, [r0] movs r0, #0xa1 lsls r0, r0, #1 bl DrawDirect _080A5456: adds r6, #8 adds r5, #1 cmp r5, #0x10 bls _080A53B4 ldr r0, _080A5530 @ =gOamCmd movs r1, #0x80 lsls r1, r1, #4 strh r1, [r0, #8] ldr r1, _080A5538 @ =gMenu ldrb r1, [r1, #3] mov sb, r0 cmp r1, #0x10 bne _080A547C movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] cmp r0, #0 beq _080A547C movs r1, #0x11 _080A547C: lsls r0, r1, #3 ldr r1, _080A553C @ =gItemMenuTable mov r8, r1 adds r1, r0, r1 mov r4, sb ldrb r0, [r1, #6] strh r0, [r4] ldrb r0, [r1, #7] strh r0, [r4, #2] ldrb r2, [r1, #4] ldr r0, _080A5540 @ =gMain ldrh r1, [r0, #0xc] movs r0, #0x10 ands r0, r1 adds r1, r2, #4 cmp r0, #0 beq _080A54A0 adds r1, r2, #3 _080A54A0: ldr r6, _080A5544 @ =0x000001FB adds r0, r6, #0 bl DrawDirect movs r0, #0x80 lsls r0, r0, #0x12 ldrb r0, [r0, #7] movs r1, #0x11 cmp r0, #0 beq _080A54B6 movs r1, #0x10 _080A54B6: lsls r0, r1, #3 mov r2, r8 adds r1, r0, r2 ldrb r0, [r1, #6] strh r0, [r4] ldrb r0, [r1, #7] strh r0, [r4, #2] movs r0, #0x80 lsls r0, r0, #4 strh r0, [r4, #8] adds r0, r6, #0 movs r1, #0x22 bl DrawDirect ldr r7, _080A5548 @ =gSave adds r0, r7, #0 adds r0, #0xb4 ldrb r0, [r0] bl sub_080A554C adds r5, r0, #0 cmp r5, #0x10 bhi _080A54FA lsls r0, r5, #3 mov r3, r8 adds r1, r0, r3 ldrb r0, [r1, #6] strh r0, [r4] ldrb r0, [r1, #7] strh r0, [r4, #2] adds r0, r6, #0 movs r1, #3 bl DrawDirect _080A54FA: adds r0, r7, #0 adds r0, #0xb5 ldrb r0, [r0] bl sub_080A554C adds r5, r0, #0 cmp r5, #0x10 bhi _080A5522 lsls r0, r5, #3 mov r7, r8 adds r1, r0, r7 ldrb r0, [r1, #6] mov r2, sb strh r0, [r2] ldrb r0, [r1, #7] strh r0, [r2, #2] adds r0, r6, #0 movs r1, #3 bl DrawDirect _080A5522: pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 _080A552C: .4byte gQuiverSizes _080A5530: .4byte gOamCmd _080A5534: .4byte gSpriteAnimations_322 _080A5538: .4byte gMenu _080A553C: .4byte gItemMenuTable _080A5540: .4byte gMain _080A5544: .4byte 0x000001FB _080A5548: .4byte gSave .endif