diff options
author | camthesaxman <cameronghall@cox.net> | 2017-07-09 00:40:28 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-07-09 00:40:28 -0500 |
commit | 55db40b3302d3b83df4f764952aba94dd81eb8ad (patch) | |
tree | 9970b4c256637956c1df19393937dfa63e22c5c3 | |
parent | 4a9e02772870528cc3b9653eb4028b236f3c3aa8 (diff) |
decompile ItemListMenu_ChangeDescription - sub_80A4F74
-rw-r--r-- | asm/item_menu.s | 902 | ||||
-rw-r--r-- | include/item.h | 2 | ||||
-rw-r--r-- | src/item.c | 2 | ||||
-rw-r--r-- | src/item_menu.c | 274 |
4 files changed, 273 insertions, 907 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s index 7a9799fec..563c1b98e 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -6,908 +6,6 @@ .text - thumb_func_start ItemListMenu_ChangeDescription -ItemListMenu_ChangeDescription: @ 80A49AC - push {r4,r5,lr} - sub sp, 0x64 - adds r4, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _080A49E8 @ =gUnknown_03005D10 - ldr r0, _080A49EC @ =gUnknown_02038559 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0, 0x1] - ldrb r2, [r0] - adds r1, r2 - ldrb r0, [r0, 0x2] - cmp r1, r0 - bne _080A4A18 - cmp r4, 0 - bne _080A49F4 - movs r0, 0 - movs r1, 0xD - movs r2, 0xD - movs r3, 0x14 - bl MenuZeroFillWindowRect - ldr r0, _080A49F0 @ =gOtherText_ReturnTo - movs r1, 0x4 - movs r2, 0x68 - b _080A4A08 - .align 2, 0 -_080A49E8: .4byte gUnknown_03005D10 -_080A49EC: .4byte gUnknown_02038559 -_080A49F0: .4byte gOtherText_ReturnTo -_080A49F4: - cmp r4, 0x1 - bne _080A4A4C - ldr r1, _080A4A10 @ =gUnknown_0840E740 - ldr r0, _080A4A14 @ =gUnknown_03000701 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x4 - movs r2, 0x78 -_080A4A08: - movs r3, 0 - bl MenuPrint_PixelCoords - b _080A4A4C - .align 2, 0 -_080A4A10: .4byte gUnknown_0840E740 -_080A4A14: .4byte gUnknown_03000701 -_080A4A18: - cmp r4, 0 - bne _080A4A28 - movs r0, 0 - movs r1, 0xD - movs r2, 0xD - movs r3, 0x14 - bl MenuZeroFillWindowRect -_080A4A28: - lsls r1, r5, 16 - asrs r1, 16 - mov r0, sp - adds r2, r4, 0 - bl ItemId_CopyDescription - cmp r0, 0 - beq _080A4A4C - lsls r2, r4, 20 - movs r0, 0xD0 - lsls r0, 15 - adds r2, r0 - lsrs r2, 16 - mov r0, sp - movs r1, 0x4 - movs r3, 0 - bl MenuPrint_PixelCoords -_080A4A4C: - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end ItemListMenu_ChangeDescription - - thumb_func_start sub_80A4A54 -sub_80A4A54: @ 80A4A54 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r2, 0x1 - adds r2, r1, 0 - adds r1, r5, 0 -_080A4A5E: - ldrb r3, [r2] - adds r0, r3, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080A4A8A - subs r4, 0x1 - cmp r4, 0 - bne _080A4A78 - movs r0, 0xFF - strb r0, [r1] - movs r0, 0x1 - b _080A4A92 -_080A4A78: - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080A4A84 - movs r0, 0 - b _080A4A92 -_080A4A84: - adds r1, r5, 0 - adds r2, 0x1 - b _080A4A5E -_080A4A8A: - strb r3, [r1] - adds r2, 0x1 - adds r1, 0x1 - b _080A4A5E -_080A4A92: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80A4A54 - - thumb_func_start sub_80A4A98 -sub_80A4A98: @ 80A4A98 - push {r4,r5,lr} - sub sp, 0x64 - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0 - bne _080A4AB0 - movs r0, 0 - movs r1, 0xD - movs r2, 0xD - movs r3, 0x14 - bl MenuZeroFillWindowRect -_080A4AB0: - mov r0, sp - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_80A4A54 - cmp r0, 0 - beq _080A4AD2 - lsls r2, r4, 20 - movs r0, 0xD0 - lsls r0, 15 - adds r2, r0 - lsrs r2, 16 - mov r0, sp - movs r1, 0x4 - movs r3, 0 - bl MenuPrint_PixelCoords -_080A4AD2: - add sp, 0x64 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80A4A98 - - thumb_func_start sub_80A4ADC -sub_80A4ADC: @ 80A4ADC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A4B0C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080A4AFA - movs r0, 0 - bl sub_80A7528 -_080A4AFA: - movs r0, 0x5 - bl PlaySE - ldr r1, _080A4B10 @ =gUnknown_0203855C - movs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080A4B0C: .4byte gTasks -_080A4B10: .4byte gUnknown_0203855C - thumb_func_end sub_80A4ADC - - thumb_func_start sub_80A4B14 -sub_80A4B14: @ 80A4B14 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsls r4, 24 - lsrs r4, 24 - ldr r2, _080A4B50 @ =gUnknown_03005D10 - ldr r1, _080A4B54 @ =gUnknown_02038559 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - lsls r1, 2 - adds r1, r2 - lsrs r0, 24 - ldrb r2, [r1, 0x1] - adds r0, r2 - strb r0, [r1, 0x1] - movs r0, 0 - bl MoveMenuCursor - bl sub_80A73C0 - bl sub_80A763C - adds r0, r4, 0 - bl sub_80A4ADC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4B50: .4byte gUnknown_03005D10 -_080A4B54: .4byte gUnknown_02038559 - thumb_func_end sub_80A4B14 - - thumb_func_start sub_80A4B58 -sub_80A4B58: @ 80A4B58 - push {r4,lr} - adds r4, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 24 - asrs r0, 24 - bl MoveMenuCursor - ldr r2, _080A4B88 @ =gUnknown_03005D10 - ldr r1, _080A4B8C @ =gUnknown_02038559 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - lsls r1, 2 - adds r1, r2 - strb r0, [r1] - bl sub_80A73C0 - adds r0, r4, 0 - bl sub_80A4ADC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A4B88: .4byte gUnknown_03005D10 -_080A4B8C: .4byte gUnknown_02038559 - thumb_func_end sub_80A4B58 - - thumb_func_start sub_80A4B90 -sub_80A4B90: @ 80A4B90 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0x6 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _080A4BBC - ldr r0, _080A4BB4 @ =0x00000103 - cmp r4, r0 - beq _080A4BAE - adds r0, 0xD - cmp r4, r0 - bne _080A4BBC -_080A4BAE: - ldr r0, _080A4BB8 @ =gOtherText_Walk - b _080A4BE6 - .align 2, 0 -_080A4BB4: .4byte 0x00000103 -_080A4BB8: .4byte gOtherText_Walk -_080A4BBC: - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080A4BE4 - ldr r1, _080A4BDC @ =gUnknown_083C1640 - ldr r0, _080A4BE0 @ =gUnknown_03000704 - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - b _080A4BE6 - .align 2, 0 -_080A4BDC: .4byte gUnknown_083C1640 -_080A4BE0: .4byte gUnknown_03000704 -_080A4BE4: - ldr r0, _080A4BEC @ =gOtherText_Check -_080A4BE6: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080A4BEC: .4byte gOtherText_Check - thumb_func_end sub_80A4B90 - - thumb_func_start sub_80A4BF0 -sub_80A4BF0: @ 80A4BF0 - push {r4-r7,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r7, _080A4C38 @ =gUnknown_02038564 - ldrb r4, [r7] - cmp r4, 0x4 - beq _080A4C00 - b _080A4CF8 -_080A4C00: - movs r0, 0 - movs r1, 0x7 - movs r2, 0xD - movs r3, 0xC - bl MenuDrawTextWindow - str r4, [sp] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x8 - movs r3, 0xC - bl sub_80A4008 - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A4C40 - ldr r0, _080A4C3C @ =gUnknown_03000701 - ldrb r0, [r0] - cmp r0, 0x5 - bne _080A4C40 - movs r0, 0x1 - movs r1, 0 - bl sub_80A7834 - b _080A4CA0 - .align 2, 0 -_080A4C38: .4byte gUnknown_02038564 -_080A4C3C: .4byte gUnknown_03000701 -_080A4C40: - movs r6, 0 - ldr r0, _080A4C5C @ =gUnknown_02038564 - ldrb r0, [r0] - cmp r6, r0 - bcs _080A4CA0 - ldr r4, _080A4C60 @ =gUnknown_083C1640 -_080A4C4C: - cmp r6, 0 - bne _080A4C68 - ldr r0, _080A4C64 @ =gScriptItemId - ldrh r0, [r0] - bl sub_80A4B90 - adds r3, r0, 0 - b _080A4C76 - .align 2, 0 -_080A4C5C: .4byte gUnknown_02038564 -_080A4C60: .4byte gUnknown_083C1640 -_080A4C64: .4byte gScriptItemId -_080A4C68: - ldr r0, _080A4CC4 @ =gUnknown_03000704 - ldr r0, [r0] - adds r0, r6 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r4 - ldr r3, [r0] -_080A4C76: - lsrs r0, r6, 1 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x1 - ands r2, r6 - lsls r2, 1 - adds r2, 0x8 - adds r0, r3, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080A4CC8 @ =gUnknown_02038564 - ldrb r0, [r0] - cmp r6, r0 - bcc _080A4C4C -_080A4CA0: - ldr r0, _080A4CCC @ =gUnknown_03000701 - ldrb r0, [r0] - cmp r0, 0x5 - bne _080A4CD4 - ldr r0, _080A4CC8 @ =gUnknown_02038564 - ldrb r3, [r0] - ldr r0, _080A4CD0 @ =gUnknown_03000700 - ldrb r0, [r0] - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x8 - bl InitMenu - b _080A4CEA - .align 2, 0 -_080A4CC4: .4byte gUnknown_03000704 -_080A4CC8: .4byte gUnknown_02038564 -_080A4CCC: .4byte gUnknown_03000701 -_080A4CD0: .4byte gUnknown_03000700 -_080A4CD4: - ldr r0, _080A4CF4 @ =gUnknown_02038564 - ldrb r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x8 - bl InitMenu -_080A4CEA: - movs r0, 0x2F - bl sub_8072DCC - b _080A4D8A - .align 2, 0 -_080A4CF4: .4byte gUnknown_02038564 -_080A4CF8: - movs r0, 0 - movs r1, 0x5 - movs r2, 0xD - movs r3, 0xC - bl MenuDrawTextWindow - movs r0, 0x6 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x6 - movs r3, 0xC - bl sub_80A4008 - movs r6, 0 - ldrb r7, [r7] - cmp r6, r7 - bcs _080A4D6E - ldr r7, _080A4D98 @ =gUnknown_083C1640 -_080A4D1E: - ldr r0, _080A4D9C @ =gUnknown_03000704 - ldr r0, [r0] - adds r0, r6 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r7 - ldr r5, [r0] - adds r0, r6, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 1 - adds r4, r0 - lsls r4, 1 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x3 - bl __umodsi3 - adds r2, r0, 0 - lsls r2, 25 - movs r0, 0xC0 - lsls r0, 19 - adds r2, r0 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080A4DA0 @ =gUnknown_02038564 - ldrb r0, [r0] - cmp r6, r0 - bcc _080A4D1E -_080A4D6E: - ldr r0, _080A4DA0 @ =gUnknown_02038564 - ldrb r3, [r0] - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x6 - bl InitMenu - movs r0, 0x2F - bl sub_8072DCC -_080A4D8A: - movs r0, 0x2 - bl sub_80A7528 - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A4D98: .4byte gUnknown_083C1640 -_080A4D9C: .4byte gUnknown_03000704 -_080A4DA0: .4byte gUnknown_02038564 - thumb_func_end sub_80A4BF0 - - thumb_func_start sub_80A4DA4 -sub_80A4DA4: @ 80A4DA4 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl sub_80A73FC - movs r0, 0x6 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x6 - movs r3, 0xD - bl sub_80A36B8 - movs r0, 0 - movs r1, 0x5 - movs r2, 0xD - movs r3, 0xC - bl MenuZeroFillWindowRect - bl sub_80A7590 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A4DA4 - - thumb_func_start sub_80A4DD8 -sub_80A4DD8: @ 80A4DD8 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - adds r4, r1, 0 - adds r1, r2, 0 - adds r6, r3, 0 - ldr r5, [sp, 0x20] - ldr r2, [sp, 0x24] - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r6, 24 - lsrs r6, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - ldr r3, _080A4E84 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - movs r0, 0x1 - strh r0, [r2, 0xA] - adds r0, r4, 0x2 - mov r9, r0 - strh r0, [r2, 0xC] - adds r0, r1, 0x1 - mov r8, r0 - strh r0, [r2, 0xE] - adds r2, r4, r6 - lsls r2, 24 - lsrs r2, 24 - adds r3, r1, r5 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - bl MenuDrawTextWindow - ldr r0, _080A4E88 @ =gBGTilemapBuffers + 0x800 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - subs r6, 0x1 - lsls r6, 24 - lsrs r6, 24 - subs r5, 0x1 - lsls r5, 24 - lsrs r5, 24 - str r5, [sp] - adds r1, r4, 0 - mov r2, r8 - adds r3, r6, 0 - bl sub_80A4008 - mov r2, r9 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - mov r0, r10 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x1 - mov r3, r8 - bl sub_80A418C - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4E84: .4byte gTasks -_080A4E88: .4byte gBGTilemapBuffers + 0x800 - thumb_func_end sub_80A4DD8 - - thumb_func_start sub_80A4E8C -sub_80A4E8C: @ 80A4E8C - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - movs r1, 0x1 - bl sub_80F979C - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C - movs r0, 0x2 - movs r1, 0x1 - bl sub_80F979C - movs r0, 0x3 - movs r1, 0x1 - bl sub_80F979C - movs r0, 0 - bl PauseVerticalScrollIndicator - movs r0, 0x1 - bl PauseVerticalScrollIndicator - movs r0, 0x2 - bl PauseVerticalScrollIndicator - movs r0, 0x3 - bl PauseVerticalScrollIndicator - ldr r5, _080A4F04 @ =gBGTilemapBuffers + 0x1000 - lsls r4, 24 - asrs r4, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80A3B04 - ldr r0, _080A4F08 @ =gUnknown_02038559 - ldrb r1, [r0] - adds r0, r5, 0 - bl sub_80A3AC0 - bl sub_80A3770 - bl sub_80A7C64 - adds r0, r6, 0 - bl CreateBagPokeballSprite - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A4F04: .4byte gBGTilemapBuffers + 0x1000 -_080A4F08: .4byte gUnknown_02038559 - thumb_func_end sub_80A4E8C - - thumb_func_start sub_80A4F0C -sub_80A4F0C: @ 80A4F0C - push {r4,lr} - ldr r0, _080A4F38 @ =gUnknown_03000701 - ldrb r0, [r0] - subs r0, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _080A4F60 - ldr r4, _080A4F3C @ =gMain - ldrh r0, [r4, 0x2E] - cmp r0, 0x10 - beq _080A4F30 - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080A4F40 -_080A4F30: - movs r0, 0x1 - movs r1, 0x2 - b _080A4F58 - .align 2, 0 -_080A4F38: .4byte gUnknown_03000701 -_080A4F3C: .4byte gMain -_080A4F40: - ldrh r0, [r4, 0x2E] - cmp r0, 0x20 - beq _080A4F52 - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A4F60 -_080A4F52: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x1 -_080A4F58: - bl sub_80A4E8C - movs r0, 0x1 - b _080A4F62 -_080A4F60: - movs r0, 0 -_080A4F62: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80A4F0C - - thumb_func_start sub_80A4F68 -sub_80A4F68: @ 80A4F68 - push {lr} - bl sub_80A4F0C - pop {r0} - bx r0 - thumb_func_end sub_80A4F68 - - thumb_func_start sub_80A4F74 -sub_80A4F74: @ 80A4F74 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r2, r4, 0 - movs r5, 0 - ldr r0, _080A4FAC @ =gMain - ldrh r0, [r0, 0x30] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - bne _080A4FE8 - ldr r1, _080A4FB0 @ =gUnknown_03005D10 - ldr r0, _080A4FB4 @ =gUnknown_02038559 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - beq _080A4FB8 - movs r0, 0x1 - negs r0, r0 - adds r1, r4, 0 - bl sub_80A4B58 - b _080A4FC8 - .align 2, 0 -_080A4FAC: .4byte gMain -_080A4FB0: .4byte gUnknown_03005D10 -_080A4FB4: .4byte gUnknown_02038559 -_080A4FB8: - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _080A4FC8 - movs r0, 0x1 - negs r0, r0 - adds r1, r4, 0 - bl sub_80A4B14 -_080A4FC8: - ldr r0, _080A4FE0 @ =gLinkOpen - ldrb r0, [r0] - cmp r0, 0x1 - bne _080A50AE - ldr r1, _080A4FE4 @ =gMain - ldrh r0, [r1, 0x32] - cmp r0, 0x5 - bne _080A50AE - movs r0, 0xB - strh r0, [r1, 0x32] - b _080A50AE - .align 2, 0 -_080A4FE0: .4byte gLinkOpen -_080A4FE4: .4byte gMain -_080A4FE8: - cmp r1, 0x80 - bne _080A5088 - ldr r0, _080A5020 @ =gUnknown_03000701 - ldrb r0, [r0] - cmp r0, 0x5 - beq _080A502C - ldr r1, _080A5024 @ =gUnknown_03005D10 - ldr r0, _080A5028 @ =gUnknown_02038559 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 2 - adds r2, r0, r1 - ldrb r0, [r2] - ldrb r1, [r2, 0x3] - cmp r0, r1 - bne _080A504E - ldrb r0, [r2, 0x1] - ldrb r1, [r2] - adds r0, r1 - ldrb r2, [r2, 0x2] - cmp r0, r2 - beq _080A5068 - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80A4B14 - b _080A5068 - .align 2, 0 -_080A5020: .4byte gUnknown_03000701 -_080A5024: .4byte gUnknown_03005D10 -_080A5028: .4byte gUnknown_02038559 -_080A502C: - ldr r1, _080A5058 @ =gUnknown_03005D10 - ldr r0, _080A505C @ =gUnknown_02038559 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 2 - adds r2, r0, r1 - ldrb r1, [r2, 0x1] - ldrb r3, [r2] - adds r1, r3 - ldrb r0, [r2, 0x2] - subs r0, 0x1 - cmp r1, r0 - beq _080A5068 - ldrb r2, [r2, 0x3] - cmp r3, r2 - beq _080A5060 -_080A504E: - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80A4B58 - b _080A5068 - .align 2, 0 -_080A5058: .4byte gUnknown_03005D10 -_080A505C: .4byte gUnknown_02038559 -_080A5060: - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80A4B14 -_080A5068: - movs r5, 0x1 - ldr r0, _080A5080 @ =gLinkOpen - ldrb r0, [r0] - cmp r0, 0x1 - bne _080A50C0 - ldr r1, _080A5084 @ =gMain - ldrh r0, [r1, 0x32] - cmp r0, 0x5 - bne _080A50C0 - movs r0, 0xB - strh r0, [r1, 0x32] - b _080A50C0 - .align 2, 0 -_080A5080: .4byte gLinkOpen -_080A5084: .4byte gMain -_080A5088: - ldr r0, _080A50B4 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r4, r1, r0 - movs r1, 0x1C - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080A50BC - bl sub_80A4F0C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A50BC - bl sub_80A73F0 - ldr r0, _080A50B8 @ =sub_80A4F68 - str r0, [r4] -_080A50AE: - movs r5, 0x1 - b _080A50C0 - .align 2, 0 -_080A50B4: .4byte gTasks -_080A50B8: .4byte sub_80A4F68 -_080A50BC: - bl sub_80A73C0 -_080A50C0: - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80A4F74 - thumb_func_start sub_80A50C8 sub_80A50C8: @ 80A50C8 push {r4-r7,lr} diff --git a/include/item.h b/include/item.h index 54a252302..80a460caa 100644 --- a/include/item.h +++ b/include/item.h @@ -51,7 +51,7 @@ u16 ItemId_GetPrice(u16 itemId); u8 ItemId_GetHoldEffect(u16 itemId); u8 ItemId_GetHoldEffectParam(u16 itemId); u8 *ItemId_GetDescription(u16 itemId); -bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c); +bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c); u8 ItemId_GetImportance(u16 itemId); u8 ItemId_GetUnknownValue(u16 itemId); u8 ItemId_GetPocket(u16 itemId); diff --git a/src/item.c b/src/item.c index 6070a0329..22ac6e7cd 100644 --- a/src/item.c +++ b/src/item.c @@ -587,7 +587,7 @@ u8 *ItemId_GetDescription(u16 itemId) return gItems[SanitizeItemId(itemId)].description; } -bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c) +bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c) { u32 r5 = c + 1; u8 *description = gItems[SanitizeItemId(itemId)].description; diff --git a/src/item_menu.c b/src/item_menu.c index b8d9f788a..972a2c748 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1,8 +1,12 @@ #include "global.h" #include "data2.h" #include "decompress.h" +#include "field_player_avatar.h" #include "graphics.h" #include "item.h" +#include "items.h" +#include "item_use.h" +#include "mail_data.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" @@ -48,6 +52,8 @@ extern void gpu_pal_allocator_reset__manage_upper_four(void); extern void sub_80F9020(void); extern void sub_80F9988(); extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16); +extern void PauseVerticalScrollIndicator(); +extern u8 sub_80F9284(void); extern const struct CompressedSpriteSheet gUnknown_083C1CC8; extern const struct CompressedSpriteSheet gUnknown_083C1CD0; @@ -114,10 +120,13 @@ void sub_80A3D40(void); void sub_80A40D0(void); void sub_80A48E8(u16, int, int); void ItemListMenu_InitDescription(s16); -void ItemListMenu_ChangeDescription(); +void ItemListMenu_ChangeDescription(s16, int); void sub_80A4F68(u8); void sub_80A50C8(u8); void ItemListMenu_InitMenu(void); +void sub_80A73C0(void); +void sub_80A73F0(void); +void sub_80A73FC(void); void sub_80A740C(void); void sub_80A751C(void); void sub_80A7528(); @@ -127,9 +136,11 @@ void sub_80A763C(void); void sub_80A76A0(void); void sub_80A770C(void); void sub_80A7828(void); +void sub_80A7834(); void sub_80A78B8(void); void CreateBagSprite(void); void CreateBagPokeballSprite(); +void sub_80A7C64(void); void sub_80A3118(void) { @@ -460,7 +471,7 @@ void sub_80A37F8(u8 taskId) { u32 val = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0; - ItemListMenu_ChangeDescription((s16)gUnknown_03005D24[val].itemId, gUnknown_02038562); + ItemListMenu_ChangeDescription(gUnknown_03005D24[val].itemId, gUnknown_02038562); gUnknown_02038562++; } else @@ -469,7 +480,7 @@ void sub_80A37F8(u8 taskId) { u32 val = gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0; - ItemListMenu_ChangeDescription((s16)gUnknown_03005D24[val].itemId, gUnknown_02038562); + ItemListMenu_ChangeDescription(gUnknown_03005D24[val].itemId, gUnknown_02038562); gUnknown_02038562++; } } @@ -1315,3 +1326,260 @@ void ItemListMenu_InitDescription(s16 itemId) if (r5 < 3) MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20); } + +void ItemListMenu_ChangeDescription(s16 itemId, int b) +{ + u8 description[100]; + + if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 == gUnknown_03005D10[gUnknown_02038559].unk2) + { + if (b == 0) + { + MenuZeroFillWindowRect(0, 13, 13, 20); + MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); + } + else if (b == 1) + { + MenuPrint_PixelCoords(gUnknown_0840E740[gUnknown_03000701], 4, 0x78, 0); + } + } + else + { + if (b == 0) + MenuZeroFillWindowRect(0, 13, 13, 20); + if (ItemId_CopyDescription(description, itemId, b)) + MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); + } +} + +bool32 sub_80A4A54(u8 *a, const u8 *b, u32 c) +{ + u32 r4 = c + 1; + const u8 *src = b; + u8 *dst = a; + + while (1) + { + if (*src == CHAR_NEWLINE || *src == EOS) + { + if (--r4 == 0) + { + *dst = EOS; + return TRUE; + } + if (*src == EOS) + return FALSE; + dst = a; + src++; + } + else + { + *dst++ = *src++; + } + } +} + +void sub_80A4A98(u8 *a, u32 b) +{ + u8 text[100]; + + if (b == 0) + MenuZeroFillWindowRect(0, 13, 13, 20); + if (sub_80A4A54(text, a, b)) + MenuPrint_PixelCoords(text, 4, 104 + b * 16, 0); +} + +void sub_80A4ADC(u8 taskId) +{ + if (gTasks[taskId].data[10] == 0) + sub_80A7528(0); + PlaySE(SE_SELECT); + gUnknown_0203855C = 1; +} + +void sub_80A4B14(s8 a, u8 b) +{ + gUnknown_03005D10[gUnknown_02038559].unk1 += a; + MoveMenuCursor(0); + sub_80A73C0(); + sub_80A763C(); + sub_80A4ADC(b); +} + +void sub_80A4B58(s8 a, u8 b) +{ + gUnknown_03005D10[gUnknown_02038559].unk0 = MoveMenuCursor(a); + sub_80A73C0(); + sub_80A4ADC(b); +} + +const u8 *sub_80A4B90(u16 itemId) +{ + if (TestPlayerAvatarFlags(6)) + { + if (itemId == ITEM_MACH_BIKE || itemId == ITEM_ACRO_BIKE) + return gOtherText_Walk; + } + if (ItemIsMail(itemId) == TRUE) + return gOtherText_Check; + return gUnknown_083C1640[gUnknown_03000704[0]].text; +} + +void sub_80A4BF0(u16 *a) +{ + u8 i; + + if (gUnknown_02038564 == 4) + { + MenuDrawTextWindow(0, 7, 13, 12); + sub_80A4008(a, 1, 8, 12, 4); + if (sub_80F9344() == 1 && gUnknown_03000701 == 5) + { + sub_80A7834(1, 0); + } + else + { + for (i = 0; i < gUnknown_02038564; i++) + { + const u8 *text; + + if (i == 0) + text = sub_80A4B90(gScriptItemId); + else + text = gUnknown_083C1640[gUnknown_03000704[i]].text; + MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); + } + } + if (gUnknown_03000701 == 5) + InitMenu(0, 1, 8, gUnknown_02038564, gUnknown_03000700, 1); + else + InitMenu(0, 1, 8, gUnknown_02038564, 0, 1); + sub_8072DCC(0x2F); + } + else + { + MenuDrawTextWindow(0, 5, 13, 12); + sub_80A4008(a, 1, 6, 12, 6); + for (i = 0; i < gUnknown_02038564; i++) + MenuPrint(gUnknown_083C1640[gUnknown_03000704[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); + InitMenu(0, 1, 6, gUnknown_02038564, 0, 1); + sub_8072DCC(0x2F); + } + sub_80A7528(2); +} + +void sub_80A4DA4(u16 *a) +{ + sub_80A73FC(); + sub_80A36B8(a, 0, 6, 13, 6); + MenuZeroFillWindowRect(0, 5, 13, 12); + sub_80A7590(); +} + +void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 f) +{ + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = b + 2; + gTasks[taskId].data[3] = c + 1; + MenuDrawTextWindow(b, c, b + d, c + e); + sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1); + sub_80A418C(1, 1, b + 2, c + 1, f); +} + +void sub_80A4E8C(s8 a, u8 b) +{ + PlaySE(SE_SELECT); + sub_80F979C(0, 1); + sub_80F979C(1, 1); + sub_80F979C(2, 1); + sub_80F979C(3, 1); + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + PauseVerticalScrollIndicator(2); + PauseVerticalScrollIndicator(3); + sub_80A3B04(gBGTilemapBuffers[2], a); + sub_80A3AC0(gBGTilemapBuffers[2], gUnknown_02038559); + sub_80A3770(); + sub_80A7C64(); + CreateBagPokeballSprite(b); +} + +static bool8 sub_80A4F0C(void) +{ + if (gUnknown_03000701 == 5 || gUnknown_03000701 == 4) + return FALSE; + if (gMain.newKeys == DPAD_RIGHT || sub_80F9284() == 2) + { + sub_80A4E8C(1, 2); + return TRUE; + } + if (gMain.newKeys == DPAD_LEFT || sub_80F9284() == 1) + { + sub_80A4E8C(-1, 1); + return TRUE; + } + return FALSE; +} + +void sub_80A4F68(u8 taskId) +{ + sub_80A4F0C(); +} + +bool8 sub_80A4F74(u8 a) +{ + bool8 retVal = FALSE; + + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (gUnknown_03005D10[gUnknown_02038559].unk0 != 0) + sub_80A4B58(-1, a); + else if (gUnknown_03005D10[gUnknown_02038559].unk1 != 0) + sub_80A4B14(-1, a); + if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5) + gMain.keyRepeatCounter = 11; + retVal = TRUE; + } + else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (gUnknown_03000701 != 5) + { + if (gUnknown_03005D10[gUnknown_02038559].unk0 == gUnknown_03005D10[gUnknown_02038559].unk3) + { + if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk2) + sub_80A4B14(1, a); + } + else + { + sub_80A4B58(1, a); + } + } + else + { + if (gUnknown_03005D10[gUnknown_02038559].unk1 + gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk2 - 1) + { + if (gUnknown_03005D10[gUnknown_02038559].unk0 != gUnknown_03005D10[gUnknown_02038559].unk3) + sub_80A4B58(1, a); + else + sub_80A4B14(1, a); + } + } + retVal = TRUE; + if (gLinkOpen == TRUE && gMain.keyRepeatCounter == 5) + gMain.keyRepeatCounter = 11; + } + else + { + if (gTasks[a].data[10] == 0 && sub_80A4F0C() == TRUE) + { + sub_80A73F0(); + gTasks[a].func = sub_80A4F68; + retVal = TRUE; + } + else + { + sub_80A73C0(); + } + } + return retVal; +} |