diff --git a/asm/code_809A560.s b/asm/code_809A560.s deleted file mode 100644 index 523d79abe..000000000 --- a/asm/code_809A560.s +++ /dev/null @@ -1,1681 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - - thumb_func_start sub_809B57C -sub_809B57C: - push {r4,r5,lr} - sub sp, 0x8 - bl DrawDialogueBoxString - ldr r5, _0809B5C8 - ldr r0, [r5] - ldr r1, [r0] - cmp r1, 0x3 - bhi _0809B5E4 - cmp r1, 0x1 - bcc _0809B5E4 - movs r4, 0x84 - lsls r4, 3 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _0809B5CC - cmp r0, 0x3 - beq _0809B5CC - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0809B5E4 - ldr r1, [sp] - movs r0, 0x1 - bl GroundScriptLock - ldr r1, [r5] - adds r2, r1, r4 - movs r0, 0x3 - str r0, [r2] - movs r0, 0x86 - lsls r0, 3 - adds r1, r0 - ldr r0, [sp] - str r0, [r1] - b _0809B5E4 - .align 2, 0 -_0809B5C8: .4byte gUnknown_3001B64 -_0809B5CC: - add r0, sp, 0x4 - bl sub_80144A4 - adds r4, r0, 0 - cmp r4, 0 - bne _0809B5E4 - movs r0, 0 - bl GroundScriptLockJumpZero - ldr r0, _0809B5FC - ldr r0, [r0] - str r4, [r0] -_0809B5E4: - ldr r0, _0809B5FC - ldr r0, [r0] - ldr r1, _0809B600 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bge _0809B604 - movs r0, 0 - movs r1, 0 - bl sub_8005838 - b _0809B60C - .align 2, 0 -_0809B5FC: .4byte gUnknown_3001B64 -_0809B600: .4byte 0x00000434 -_0809B604: - movs r0, 0 - movs r1, 0x5 - bl sub_8005838 -_0809B60C: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_809B57C - - thumb_func_start sub_809B614 -sub_809B614: - push {lr} - bl sub_80060EC - ldr r0, _0809B62C - ldr r2, _0809B630 - ldrh r1, [r2] - strh r1, [r0] - ldr r0, _0809B634 - ands r0, r1 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0809B62C: .4byte gUnknown_20399DE -_0809B630: .4byte gUnknown_20399DC -_0809B634: .4byte 0x0000fffd - thumb_func_end sub_809B614 - - thumb_func_start sub_809B638 -sub_809B638: - push {lr} - bl xxx_call_update_bg_vram - pop {r0} - bx r0 - thumb_func_end sub_809B638 - - thumb_func_start nullsub_210 -nullsub_210: - bx lr - thumb_func_end nullsub_210 - - thumb_func_start sub_809B648 -sub_809B648: - push {r4-r6,lr} - sub sp, 0x24 - ldr r0, _0809B66C - ldr r1, [r0] - ldr r2, _0809B670 - adds r1, r2 - ldr r1, [r1] - subs r1, 0x2 - adds r6, r0, 0 - cmp r1, 0x2C - bls _0809B662 - bl _0809C392 -_0809B662: - lsls r0, r1, 2 - ldr r1, _0809B674 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809B66C: .4byte gUnknown_3001B64 -_0809B670: .4byte 0x00000414 -_0809B674: .4byte _0809B678 - .align 2, 0 -_0809B678: - .4byte _0809B72C - .4byte _0809B772 - .4byte _0809B7AC - .4byte _0809B834 - .4byte _0809B89C - .4byte _0809B8FC - .4byte _0809B91C - .4byte _0809B944 - .4byte _0809B9D2 - .4byte _0809BA2A - .4byte _0809BAA8 - .4byte _0809BB66 - .4byte _0809BBDA - .4byte _0809BBDA - .4byte _0809BC26 - .4byte _0809BC68 - .4byte _0809C1B4 - .4byte _0809BC78 - .4byte _0809C1C2 - .4byte _0809C1C2 - .4byte _0809C1C8 - .4byte _0809BCBC - .4byte _0809BCBC - .4byte _0809BD1C - .4byte _0809BD64 - .4byte _0809BDE8 - .4byte _0809BE30 - .4byte _0809BE40 - .4byte _0809BE50 - .4byte _0809BE60 - .4byte _0809BE9C - .4byte _0809BEB8 - .4byte _0809BED4 - .4byte _0809BF70 - .4byte _0809BFFC - .4byte _0809C072 - .4byte _0809C0B8 - .4byte _0809C0FC - .4byte _0809C148 - .4byte _0809C158 - .4byte _0809C168 - .4byte _0809C204 - .4byte _0809C238 - .4byte _0809C280 - .4byte _0809C32A -_0809B72C: - ldr r2, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r2, r3 - ldr r0, [r0] - cmp r0, 0x1 - beq _0809B780 - ldr r0, _0809B754 - ldrh r0, [r0, 0x2] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0809B758 - movs r0, 0x86 - lsls r0, 3 - adds r1, r2, r0 - movs r0, 0x1 - str r0, [r1] - bl _0809C392 - .align 2, 0 -_0809B754: .4byte gRealInputs -_0809B758: - bl sub_8094D14 - lsls r0, 24 - cmp r0, 0 - beq _0809B784 - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x2 - str r1, [r0] - bl _0809C392 -_0809B772: - ldr r0, [r6] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B78A -_0809B780: - bl ResetTextbox_809B294 -_0809B784: - movs r0, 0x1 - bl _0809C394 -_0809B78A: - ldr r0, _0809B7A8 - ldrh r1, [r0] - ldrh r0, [r0, 0x2] - movs r2, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0809B79C - bl _0809C392 -_0809B79C: - ands r1, r2 - cmp r1, 0 - bne _0809B784 - bl _0809C392 - .align 2, 0 -_0809B7A8: .4byte gRealInputs -_0809B7AC: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B7F4 - bl ResetTextbox_809B294 - ldr r1, [r6] - ldr r2, _0809B7D8 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - bne _0809B7E0 - ldr r3, _0809B7DC - adds r0, r1, r3 - ldr r1, [r0] - movs r0, 0 - bl CreateConfirmNameMenu - b _0809B784 - .align 2, 0 -_0809B7D8: .4byte 0x00000424 -_0809B7DC: .4byte 0x0000042c -_0809B7E0: - ldr r2, _0809B7F0 - adds r0, r1, r2 - ldr r1, [r0] - movs r0, 0x2 - bl CreateConfirmNameMenu - b _0809B784 - .align 2, 0 -_0809B7F0: .4byte 0x0000042c -_0809B7F4: - bl sub_8016080 - cmp r0, 0x3 - bne _0809B80C - bl CleanConfirmNameMenu - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809C1BC -_0809B80C: - cmp r0, 0x2 - bne _0809B784 - ldr r0, [r6] - ldr r1, _0809B830 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0809B784 - bl CleanConfirmNameMenu - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 -_0809B828: - movs r1, 0 - str r1, [r0] - bl _0809C392 - .align 2, 0 -_0809B830: .4byte 0x00000424 -_0809B834: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B85C - bl ResetTextbox_809B294 - ldr r0, [r6] - ldr r1, _0809B858 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x1 - bl CreateConfirmNameMenu - b _0809B784 - .align 2, 0 -_0809B858: .4byte 0x0000042c -_0809B85C: - bl sub_8016080 - cmp r0, 0x3 - bne _0809B874 - bl CleanConfirmNameMenu - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - bl _0809C1BC -_0809B874: - cmp r0, 0x2 - beq _0809B87A - b _0809B784 -_0809B87A: - ldr r0, [r6] - ldr r3, _0809B898 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0 - bne _0809B888 - b _0809B784 -_0809B888: - bl CleanConfirmNameMenu - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - b _0809B828 - .align 2, 0 -_0809B898: .4byte 0x00000424 -_0809B89C: - ldr r0, [r6] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B8C4 - bl ResetTextbox_809B294 - ldr r0, [r6] - ldr r3, _0809B8C0 - adds r0, r3 - ldr r1, [r0] - movs r0, 0x4 - bl sub_80151C0 - b _0809B784 - .align 2, 0 -_0809B8C0: .4byte 0x0000042c -_0809B8C4: - bl sub_80154F0 - cmp r0, 0x3 - bne _0809B8D4 - bl sub_80155F0 - bl _0809C1B4 -_0809B8D4: - cmp r0, 0x2 - beq _0809B8DA - b _0809B784 -_0809B8DA: - ldr r0, [r6] - ldr r2, _0809B8F8 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0 - bne _0809B8E8 - b _0809B784 -_0809B8E8: - bl sub_80155F0 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B828 - .align 2, 0 -_0809B8F8: .4byte 0x00000424 -_0809B8FC: - ldr r0, [r6] - ldr r1, _0809B914 - adds r0, r1 - ldr r0, [r0] - bl sub_801D014 - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809B918 - b _0809B932 - .align 2, 0 -_0809B914: .4byte 0x0000042c -_0809B918: .4byte gUnknown_81161A8 -_0809B91C: - ldr r0, [r6] - ldr r3, _0809B93C - adds r0, r3 - ldr r0, [r0] - bl sub_801D014 - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809B940 -_0809B932: - str r1, [r0] - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 - .align 2, 0 -_0809B93C: .4byte 0x0000042c -_0809B940: .4byte gUnknown_81161B8 -_0809B944: - bl ResetTextbox_809B294 - ldr r4, _0809B984 - ldr r0, [r4] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B998 - bl ResetTextbox_809B294 - ldr r0, [r4] - ldr r3, _0809B988 - adds r0, r3 - ldr r0, [r0] - ldr r1, _0809B98C - bl sub_8015080 - lsls r0, 24 - cmp r0, 0 - bne _0809B990 - ldr r0, [r4] -_0809B972: - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 -_0809B978: - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl _0809C392 - .align 2, 0 -_0809B984: .4byte gUnknown_3001B64 -_0809B988: .4byte 0x0000042c -_0809B98C: .4byte gUnknown_811610C -_0809B990: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809B998: - bl sub_801516C - cmp r0, 0x2 - beq _0809B9BC - cmp r0, 0x3 - beq _0809B9A6 - b _0809B784 -_0809B9A6: - bl sub_8015198 - ldr r1, [r4] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - str r0, [r1] - bl sub_80151A4 - bl _0809C392 -_0809B9BC: - ldr r0, [r4] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_80151A4 - bl _0809C392 -_0809B9D2: - bl ResetTextbox_809B294 - ldr r4, _0809BA08 - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BA1C - bl ResetTextbox_809B294 - ldr r0, [r4] - ldr r2, _0809BA0C - adds r0, r2 - ldr r0, [r0] - ldr r1, _0809BA10 - bl sub_8015080 - lsls r0, 24 - cmp r0, 0 - bne _0809BA14 - ldr r0, [r4] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BA08: .4byte gUnknown_3001B64 -_0809BA0C: .4byte 0x0000042c -_0809BA10: .4byte gUnknown_811612C -_0809BA14: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BA1C: - bl sub_801516C - cmp r0, 0x2 - beq _0809B9BC - cmp r0, 0x3 - beq _0809B9A6 - b _0809B784 -_0809BA2A: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BA68 - bl ResetTextbox_809B294 - ldr r0, [r6] - ldr r2, _0809BA5C - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3 - bl sub_80211AC - lsls r0, 24 - cmp r0, 0 - bne _0809BA60 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BA5C: .4byte 0x00000424 -_0809BA60: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BA68: - movs r0, 0x1 - bl sub_8021274 - cmp r0, 0x2 - beq _0809BA92 - cmp r0, 0x3 - beq _0809BA78 - b _0809B784 -_0809BA78: - bl sub_802132C - ldr r1, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - bl sub_80213A0 - bl _0809C392 -_0809BA92: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_80213A0 - bl _0809C392 -_0809BAA8: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BB10 - movs r0, 0 - movs r1, 0x12 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - bl sub_80A2654 - lsls r0, 16 - asrs r4, r0, 16 - bl ResetTextbox_809B294 - movs r0, 0x3 - movs r1, 0 - movs r2, 0xA - movs r3, 0x1 - bl sub_802F73C - lsls r0, 24 - cmp r0, 0 - bne _0809BAEA - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809B978 -_0809BAEA: - movs r5, 0x1 - negs r5, r5 - cmp r4, r5 - beq _0809BB08 - adds r0, r4, 0 - bl sub_802F848 - lsls r0, 24 - cmp r0, 0 - bne _0809BB08 - movs r0, 0 - movs r1, 0x12 - adds r2, r5, 0 - bl SetScriptVarValue -_0809BB08: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BB10: - movs r0, 0x1 - bl sub_802F8A0 - cmp r0, 0x2 - beq _0809BB50 - cmp r0, 0x3 - beq _0809BB20 - b _0809B784 -_0809BB20: - bl sub_802F90C - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - bl sub_80A26B8 - adds r2, r0, 0 - lsls r2, 16 - asrs r2, 16 - movs r0, 0 - movs r1, 0x12 - bl SetScriptVarValue - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - str r4, [r0] - bl sub_802F974 - bl _0809C392 -_0809BB50: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_802F974 - bl _0809C392 -_0809BB66: - ldr r0, [r6] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BB9A - bl ResetTextbox_809B294 - movs r0, 0x3 - movs r1, 0 - movs r2, 0xA - bl sub_80302E8 - lsls r0, 24 - cmp r0, 0 - bne _0809BB92 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 -_0809BB92: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BB9A: - movs r0, 0x1 - bl sub_80303AC - cmp r0, 0x2 - beq _0809BBC4 - cmp r0, 0x3 - beq _0809BBAA - b _0809B784 -_0809BBAA: - bl sub_8030418 - ldr r1, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - lsls r0, 16 - asrs r0, 16 - str r0, [r1] - bl sub_8030480 - bl _0809C392 -_0809BBC4: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_8030480 - bl _0809C392 -_0809BBDA: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BC14 - bl ResetTextbox_809B294 - ldr r0, [r6] - ldr r2, _0809BC10 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0xE - bne _0809BC02 - movs r0, 0 - movs r1, 0x18 - movs r2, 0x1 - bl SetScriptVarValue -_0809BC02: - movs r0, 0x1 - bl sub_8011C28 - movs r0, 0 - bl PrepareSavePakWrite - b _0809B784 - .align 2, 0 -_0809BC10: .4byte 0x00000414 -_0809BC14: - bl WriteSavePak - lsls r0, 24 - cmp r0, 0 - beq _0809BC20 - b _0809B784 -_0809BC20: - bl FinishWriteSavePak - b _0809C392 -_0809BC26: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl CreateKangaskhanStorage - lsls r0, 24 - cmp r0, 0 - beq _0809BC5C - ldr r0, _0809BC54 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BC58 - b _0809C266 - .align 2, 0 -_0809BC54: .4byte gUnknown_3001B64 -_0809BC58: .4byte gUnknown_81161C8 -_0809BC5C: - ldr r0, _0809BC64 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809BC64: .4byte gUnknown_3001B64 -_0809BC68: - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BC74 - b _0809C266 - .align 2, 0 -_0809BC74: .4byte gUnknown_81161D8 -_0809BC78: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl CreateFelicityBank - lsls r0, 24 - cmp r0, 0 - beq _0809BCB0 - ldr r0, _0809BCA8 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BCAC - b _0809C266 - .align 2, 0 -_0809BCA8: .4byte gUnknown_3001B64 -_0809BCAC: .4byte gUnknown_81161E8 -_0809BCB0: - ldr r0, _0809BCB8 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809BCB8: .4byte gUnknown_3001B64 -_0809BCBC: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r4, r0, 24 - bl ResetTextbox_809B294 - ldr r0, _0809BCE0 - ldr r0, [r0] - ldr r2, _0809BCE4 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x17 - bne _0809BCE8 - negs r0, r4 - orrs r0, r4 - lsrs r0, 31 - b _0809BCF0 - .align 2, 0 -_0809BCE0: .4byte gUnknown_3001B64 -_0809BCE4: .4byte 0x00000414 -_0809BCE8: - movs r0, 0x2 - cmp r4, 0 - beq _0809BCF0 - movs r0, 0x3 -_0809BCF0: - bl CreateKecleonBros - lsls r0, 24 - cmp r0, 0 - beq _0809BD10 - ldr r0, _0809BD08 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BD0C - b _0809C266 - .align 2, 0 -_0809BD08: .4byte gUnknown_3001B64 -_0809BD0C: .4byte gUnknown_81161F8 -_0809BD10: - ldr r0, _0809BD18 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809BD18: .4byte gUnknown_3001B64 -_0809BD1C: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl sub_801FB50 - lsls r0, 24 - cmp r0, 0 - beq _0809BD54 - ldr r0, _0809BD4C - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BD50 - b _0809C266 - .align 2, 0 -_0809BD4C: .4byte gUnknown_3001B64 -_0809BD50: .4byte gUnknown_8116208 -_0809BD54: - ldr r0, _0809BD60 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BD60: .4byte gUnknown_3001B64 -_0809BD64: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BD84 - bl ResetTextbox_809B294 - movs r0, 0 - movs r1, 0x39 - bl ClearScriptVarArray - bl sub_802465C - b _0809B784 -_0809BD84: - bl sub_80246F0 - adds r4, r0, 0 - movs r0, 0 - movs r1, 0x39 - bl GetScriptVarValue - cmp r0, 0 - bne _0809BDB2 - bl HasEvolutionCompleted - lsls r0, 24 - cmp r0, 0 - beq _0809BDB2 - movs r0, 0 - movs r1, 0x39 - movs r2, 0x1 - bl SetScriptVarValue - movs r0, 0x46 - movs r1, 0 - bl GroundMap_ExecuteEvent -_0809BDB2: - cmp r4, 0x3 - bne _0809BDCC - bl CleanLuminousCave - ldr r0, _0809BDC8 - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809C1BC - .align 2, 0 -_0809BDC8: .4byte gUnknown_3001B64 -_0809BDCC: - cmp r4, 0x2 - beq _0809BDD2 - b _0809B784 -_0809BDD2: - bl CleanLuminousCave - ldr r0, _0809BDE4 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B828 - .align 2, 0 -_0809BDE4: .4byte gUnknown_3001B64 -_0809BDE8: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl CreateWigglytuffShop - lsls r0, 24 - cmp r0, 0 - beq _0809BE20 - ldr r0, _0809BE18 - ldr r0, [r0] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809BE1C - b _0809C266 - .align 2, 0 -_0809BE18: .4byte gUnknown_3001B64 -_0809BE1C: .4byte gUnknown_8116218 -_0809BE20: - ldr r0, _0809BE2C - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809B978 - .align 2, 0 -_0809BE2C: .4byte gUnknown_3001B64 -_0809BE30: - ldr r0, [r6] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BE3C - b _0809C266 - .align 2, 0 -_0809BE3C: .4byte gUnknown_8116228 -_0809BE40: - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809BE4C - b _0809C266 - .align 2, 0 -_0809BE4C: .4byte gUnknown_8116238 -_0809BE50: - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BE5C - b _0809C266 - .align 2, 0 -_0809BE5C: .4byte gUnknown_8116248 -_0809BE60: - bl ResetTextbox_809B294 - movs r0, 0x98 - lsls r0, 1 - bl CreateHelperPelipperMenu - lsls r0, 24 - cmp r0, 0 - bne _0809BE84 - ldr r0, _0809BE80 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BE80: .4byte gUnknown_3001B64 -_0809BE84: - ldr r0, _0809BE94 - ldr r0, [r0] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809BE98 - b _0809C266 - .align 2, 0 -_0809BE94: .4byte gUnknown_3001B64 -_0809BE98: .4byte gUnknown_8116258 -_0809BE9C: - movs r0, 0x4 - bl PlayMenuSoundEffect - ldr r0, _0809BEB0 - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BEB4 - b _0809C266 - .align 2, 0 -_0809BEB0: .4byte gUnknown_3001B64 -_0809BEB4: .4byte gUnknown_8116268 -_0809BEB8: - movs r0, 0x4 - bl PlayMenuSoundEffect - ldr r0, _0809BECC - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BED0 - b _0809C266 - .align 2, 0 -_0809BECC: .4byte gUnknown_3001B64 -_0809BED0: .4byte gUnknown_8116278 -_0809BED4: - mov r0, sp - bl sub_8099328 - lsls r0, 24 - cmp r0, 0 - beq _0809BF4E - add r1, sp, 0x4 - add r2, sp, 0x8 - movs r0, 0x2 - bl GetScriptVarScenario - ldr r0, [sp, 0x8] - cmp r0, 0x7 - bgt _0809BF4E - add r4, sp, 0xC -_0809BEF2: - lsls r1, r0, 24 - lsrs r1, 24 - mov r0, sp - ldrb r2, [r0] - adds r0, r4, 0 - bl sub_8096AF8 - ldrb r0, [r4] - cmp r0, 0 - beq _0809BF44 - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - movs r0, 0x2 - bl ScenarioCalc - ldr r0, _0809BF40 - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r2, r0, r1 - ldrh r1, [r4, 0x2] - lsls r1, 16 - asrs r1, 16 - negs r0, r1 - orrs r0, r1 - lsrs r1, r0, 31 - movs r3, 0x4 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0809BF30 - adds r1, 0x2 -_0809BF30: - str r1, [r2] - cmp r1, 0 - beq _0809BF38 - b _0809C392 -_0809BF38: - movs r0, 0x3 - str r0, [r2] - b _0809C392 - .align 2, 0 -_0809BF40: .4byte gUnknown_3001B64 -_0809BF44: - ldr r0, [sp, 0x8] - adds r0, 0x1 - str r0, [sp, 0x8] - cmp r0, 0x7 - ble _0809BEF2 -_0809BF4E: - ldr r0, _0809BF6C - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - str r1, [r0] - bl sub_8096BD0 - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ScenarioCalc - b _0809C392 - .align 2, 0 -_0809BF6C: .4byte gUnknown_3001B64 -_0809BF70: - mov r5, sp - adds r5, 0x1 - adds r0, r5, 0 - bl sub_8099328 - lsls r0, 24 - cmp r0, 0 - bne _0809BF82 - b _0809C392 -_0809BF82: - add r1, sp, 0x14 - add r2, sp, 0x18 - movs r0, 0x2 - bl GetScriptVarScenario - add r4, sp, 0x1C - ldr r1, [sp, 0x18] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r5] - adds r0, r4, 0 - bl sub_8096AF8 - ldrb r0, [r4] - cmp r0, 0 - bne _0809BFA4 - b _0809C392 -_0809BFA4: - ldr r0, [sp, 0x18] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r5] - bl sub_802DB28 - lsls r0, 24 - cmp r0, 0 - bne _0809BFB8 - b _0809C392 -_0809BFB8: - movs r0, 0 - movs r1, 0x19 - bl GetScriptVarValue - cmp r0, 0x63 - bgt _0809BFCE - adds r2, r0, 0x1 - movs r0, 0 - movs r1, 0x19 - bl SetScriptVarValue -_0809BFCE: - movs r0, 0 - movs r1, 0x39 - movs r2, 0x1 - bl SetScriptVarValue - ldr r1, [sp, 0x14] - ldr r2, [sp, 0x18] - adds r2, 0x1 - movs r0, 0x2 - bl ScenarioCalc - ldr r0, _0809BFF4 - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BFF8 - b _0809C266 - .align 2, 0 -_0809BFF4: .4byte gUnknown_3001B64 -_0809BFF8: .4byte gUnknown_8116288 -_0809BFFC: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809C036 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - asrs r4, 31 - movs r0, 0x4 - ands r4, r0 - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C032 - bl _0809B784 -_0809C032: - ldr r0, [r6] - b _0809B972 -_0809C036: - bl HandleMakuhitaDojoState - cmp r0, 0x2 - beq _0809C05E - cmp r0, 0x3 - beq _0809C046 - bl _0809B784 -_0809C046: - bl sub_802FED0 - ldr r1, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - lsls r0, 16 - asrs r0, 16 - str r0, [r1] - bl MakuhitaDojo_Delete - b _0809C392 -_0809C05E: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl MakuhitaDojo_Delete - b _0809C392 -_0809C072: - movs r4, 0x1 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809C082 - movs r4, 0x5 -_0809C082: - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C0A8 - ldr r0, _0809C0A0 - ldr r0, [r0] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809C0A4 - b _0809C266 - .align 2, 0 -_0809C0A0: .4byte gUnknown_3001B64 -_0809C0A4: .4byte gUnknown_8116298 -_0809C0A8: - ldr r0, _0809C0B4 - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809B978 - .align 2, 0 -_0809C0B4: .4byte gUnknown_3001B64 -_0809C0B8: - movs r4, 0x2 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809C0C8 - movs r4, 0x6 -_0809C0C8: - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C0F0 - ldr r0, _0809C0E8 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809C0EC - b _0809C266 - .align 2, 0 -_0809C0E8: .4byte gUnknown_3001B64 -_0809C0EC: .4byte gUnknown_81162A8 -_0809C0F0: - ldr r0, _0809C0F8 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809C0F8: .4byte gUnknown_3001B64 -_0809C0FC: - movs r4, 0x3 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809C10C - movs r4, 0x7 -_0809C10C: - bl ResetTextbox_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C134 - ldr r0, _0809C12C - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C130 - b _0809C266 - .align 2, 0 -_0809C12C: .4byte gUnknown_3001B64 -_0809C130: .4byte gUnknown_81162B8 -_0809C134: - ldr r0, _0809C144 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809B978 - .align 2, 0 -_0809C144: .4byte gUnknown_3001B64 -_0809C148: - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809C154 - b _0809C266 - .align 2, 0 -_0809C154: .4byte gUnknown_81162C8 -_0809C158: - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C164 - b _0809C266 - .align 2, 0 -_0809C164: .4byte gUnknown_81162D8 -_0809C168: - bl ResetTextbox_809B294 - bl sub_803B050 - lsls r0, 24 - cmp r0, 0 - beq _0809C1A0 - ldr r4, _0809C194 - ldr r0, [r4] - ldr r3, _0809C198 - adds r0, r3 - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_803B100 - ldr r0, [r4] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C19C - b _0809C266 - .align 2, 0 -_0809C194: .4byte gUnknown_3001B64 -_0809C198: .4byte 0x000005a4 -_0809C19C: .4byte gUnknown_81162E8 -_0809C1A0: - ldr r0, _0809C1B0 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809B978 - .align 2, 0 -_0809C1B0: .4byte gUnknown_3001B64 -_0809C1B4: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 -_0809C1BC: - movs r1, 0x1 - str r1, [r0] - b _0809C392 -_0809C1C2: - bl ResetTextbox_809B294 - b _0809C392 -_0809C1C8: - movs r0, 0x2 - bl CreateFriendListMenu - lsls r0, 24 - cmp r0, 0 - beq _0809C1EC - ldr r0, _0809C1E4 - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C1E8 - b _0809C266 - .align 2, 0 -_0809C1E4: .4byte gUnknown_3001B64 -_0809C1E8: .4byte gUnknown_81162F8 -_0809C1EC: - ldr r0, _0809C200 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x2 - negs r1, r1 - str r1, [r0] - b _0809C392 - .align 2, 0 -_0809C200: .4byte gUnknown_3001B64 -_0809C204: - ldr r1, [r6] - ldr r2, _0809C230 - adds r0, r1, r2 - ldr r0, [r0] - movs r3, 0x85 - lsls r3, 3 - adds r1, r3 - ldr r1, [r1] - bl sub_809CCDC - ldr r1, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r2, r1, r3 - str r0, [r2] - movs r0, 0x83 - lsls r0, 3 - adds r1, r0 - ldr r0, _0809C234 - str r0, [r1] - bl _0809B784 - .align 2, 0 -_0809C230: .4byte 0x00000424 -_0809C234: .4byte gUnknown_8116308 -_0809C238: - ldr r0, [r6] - movs r2, 0x85 - lsls r2, 3 - adds r1, r0, r2 - ldr r5, [r1] - ldr r3, _0809C26C - adds r0, r3 - ldrb r4, [r0] - bl ResetTextbox_809B294 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_801B60C - lsls r0, 24 - cmp r0, 0 - beq _0809C274 - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809C270 -_0809C266: - str r1, [r0] - bl _0809B784 - .align 2, 0 -_0809C26C: .4byte 0x00000424 -_0809C270: .4byte gUnknown_8116318 -_0809C274: - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - bl _0809B978 -_0809C280: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809C2B8 - bl ResetTextbox_809B294 - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl xxx_call_save_unk_text_struct_800641C - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xA - bl sub_801A5D8 - lsls r0, 24 - cmp r0, 0 - beq _0809C2B2 - bl _0809B784 -_0809C2B2: - ldr r0, [r6] - bl _0809B972 -_0809C2B8: - movs r0, 0x1 - bl sub_801A6E8 - cmp r0, 0x2 - beq _0809C320 - cmp r0, 0x3 - beq _0809C2CA - bl _0809B784 -_0809C2CA: - bl sub_801A8AC - adds r5, r0, 0 - ldr r0, _0809C304 - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, r1 - ldrb r4, [r0, 0x2] - adds r0, r4, 0 - bl IsEdibleItem - lsls r0, 24 - cmp r0, 0 - beq _0809C30C - ldr r0, _0809C308 - adds r1, r4, 0 - movs r2, 0 - bl BufferItemName - adds r0, r5, 0 - bl ShiftItemsDownFrom - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - movs r1, 0x1 - b _0809C318 - .align 2, 0 -_0809C304: .4byte gTeamInventoryRef -_0809C308: .4byte gFormatBuffer_Items -_0809C30C: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 -_0809C314: - movs r1, 0x1 - negs r1, r1 -_0809C318: - str r1, [r0] - bl sub_801A928 - b _0809C392 -_0809C320: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - b _0809C314 -_0809C32A: - adds r4, r6, 0 - ldr r0, [r4] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809C36C - bl ResetTextbox_809B294 - ldr r1, [r4] - ldr r3, _0809C368 - adds r0, r1, r3 - ldr r0, [r0] - movs r2, 0x85 - lsls r2, 3 - adds r1, r2 - ldr r1, [r1] - bl DrawCredits - lsls r0, 24 - cmp r0, 0 - beq _0809C35C - bl _0809B784 -_0809C35C: - ldr r0, [r4] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809B978 - .align 2, 0 -_0809C368: .4byte 0x00000424 -_0809C36C: - bl sub_8035574 - cmp r0, 0x3 - bls _0809C378 - bl _0809B784 -_0809C378: - cmp r0, 0x2 - bcs _0809C380 - bl _0809B784 -_0809C380: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_803565C -_0809C392: - movs r0, 0 -_0809C394: - add sp, 0x24 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809B648 - - .align 2,0 diff --git a/include/structs/str_3001B64.h b/include/structs/str_3001B64.h index a3578a3bd..4e7b13f92 100644 --- a/include/structs/str_3001B64.h +++ b/include/structs/str_3001B64.h @@ -49,17 +49,17 @@ struct unkStruct_3001B64 u32 unk8; struct unkStruct_3001B64_unkC unkC; u32 unk414; - struct unkStruct_3001B64_unk418 *unk418; + const struct unkStruct_3001B64_unk418 *unk418; const MenuItem *unk41C; u32 unk420; u32 unk424; u32 unk428; - u32 unk42C; + u8 *unk42C; s32 unk430; - u32 unk434; + s32 unk434; u32 fill438; struct unkStruct_3001B64_sub unk43C[10]; - u16 unk5A4; + s16 unk5A4; }; #endif // GUARD_STR_3001B61_H diff --git a/ld_script.txt b/ld_script.txt index ba99fb2ac..f179f2414 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -319,7 +319,6 @@ SECTIONS { src/code_8099360.o(.text); asm/code_8099360.o(.text); src/code_809A560.o(.text); - asm/code_809A560.o(.text); src/code_809A560_1.o(.text); src/code_809C5C4.o(.text); asm/code_809C5C4.o(.text); diff --git a/src/code_809A560.c b/src/code_809A560.c index 797cc0af3..2e951c6ab 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -2,14 +2,17 @@ #include "text.h" #include "memory.h" #include "pokemon.h" +#include "ground_script.h" #include "code_8099360.h" #include "code_800D090.h" +#include "code_800558C.h" #include "pokemon_mid.h" #include "string_format.h" #include "structs/str_3001B64.h" #include "constants/dungeon.h" #include "wigglytuff_shop1.h" #include "event_flag.h" +#include "input.h" IWRAM_INIT struct unkStruct_3001B64 *gUnknown_3001B64 = {NULL}; @@ -51,7 +54,7 @@ void sub_809A560(void) gUnknown_3001B64->unk420 = 0; gUnknown_3001B64->unk424 = 0; gUnknown_3001B64->unk428 = 0; - gUnknown_3001B64->unk42C = 0; + gUnknown_3001B64->unk42C = NULL; gUnknown_3001B64->unk430 = -1; gUnknown_3001B64->unk434 = -1; sub_809A7EC(); @@ -681,14 +684,14 @@ bool8 sub_809B18C(s32 *sp) return (gUnknown_3001B64->unk420 == 3); } -bool8 sub_809B1D4(s32 a0, u32 kind, s32 a2, s32 r3); +bool8 sub_809B1D4(s32 a0, u32 kind, s32 a2, u8 *a3); -bool8 sub_809B1C0(s32 a0, u32 kind, s32 a2) +bool8 sub_809B1C0(s32 a0, u32 kind, u8 *a2) { return sub_809B1D4(a0, kind, 0, a2); } -bool8 sub_809B1D4(s32 a0, u32 kind, s32 a2, s32 a3) +bool8 sub_809B1D4(s32 a0, u32 kind, s32 a2, u8 *a3) { switch (a0) { case 0xB: @@ -823,7 +826,7 @@ void sub_809B57C(void); void sub_809B474(void) { - struct unkStruct_3001B64_unk418 *unkStructPtr; + const struct unkStruct_3001B64_unk418 *unkStructPtr; switch (gUnknown_3001B64->unk0) { case 0: @@ -879,3 +882,788 @@ void sub_809B474(void) } sub_809B57C(); } + +extern void GroundScriptLock(s16 index, s32 r1); +extern void GroundScriptLockJumpZero(s16 index); + +void sub_809B57C(void) +{ + DrawDialogueBoxString(); + switch (gUnknown_3001B64->unk0) { + case 1: + case 2: + case 3: + switch (gUnknown_3001B64->unk420) { + default: { + s32 sp; + if (sub_80144A4(&sp) == 0) { + GroundScriptLock(1, sp); + gUnknown_3001B64->unk420 = 3; + gUnknown_3001B64->unk430 = sp; + } + break; + } + case 0: + case 3: { + s32 sp; + if (sub_80144A4(&sp) == 0) { + GroundScriptLockJumpZero(0); + gUnknown_3001B64->unk0 = 0; + } + break; + } + } + break; + } + + if (gUnknown_3001B64->unk434 < 0) { + sub_8005838(0, 0); + } + else { + sub_8005838(0, 5); + } +} + +void sub_809B614(void) +{ + sub_80060EC(); + gUnknown_20399DE = gUnknown_20399DC; + gUnknown_20399DC &= 0xFFFD; +} + +void sub_809B638(void) +{ + xxx_call_update_bg_vram(); +} + +void nullsub_210(void) +{ + +} + +extern const struct unkStruct_3001B64_unk418 gUnknown_81161E8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81162F8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81161A8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81161B8; +extern const struct unkStruct_3001B64_unk418 gUnknown_811610C; +extern const struct unkStruct_3001B64_unk418 gUnknown_811612C; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116298; +extern const struct unkStruct_3001B64_unk418 gUnknown_81162A8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81162B8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81162C8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81162D8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81162E8; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116308; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116318; +extern const struct unkStruct_3001B64_unk418 gUnknown_81161F8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81161C8; +extern const struct unkStruct_3001B64_unk418 gUnknown_81161D8; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116218; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116228; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116238; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116248; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116258; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116268; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116278; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116288; +extern const struct unkStruct_3001B64_unk418 gUnknown_8116208; + +struct unkStruct_8096AF8 +{ + bool8 unk0; + /* 0x2 */ u16 clientSpecies; + /* 0x4 */ u16 targetSpecies; +}; + +void sub_8096AF8(struct unkStruct_8096AF8 *, u8 slotIndex, u8 dungeon); +u8 sub_802DB28(u8, u8); +void sub_8096BD0(); +void ScenarioCalc(s16 varId, s32 main, s32 sub); +void MakuhitaDojo_Delete(); +s32 HandleMakuhitaDojoState(); +s16 sub_802FED0(); +u8 sub_801FB50(); +void sub_80151C0(); +void sub_80155F0(); +s32 sub_80160D8(); +void ResetTextbox_809B294(); +u8 sub_801A5D8(); +s32 sub_801A6E8(s32); +s32 sub_801A8AC(); +void sub_801A928(); +s32 sub_8016080(); +void CleanConfirmNameMenu(); +u32 CreateConfirmNameMenu(u32 mode, u8 *name); +bool8 DrawCredits(s32 creditsCategoryIndex, s32); +u32 sub_8035574(); +void sub_803565C(); +u8 sub_8094D14(); +void sub_802465C(); +s32 sub_80246F0(); +s32 GetScriptVarValue(u8 *localVarBuf, s32 varId); +bool8 HasEvolutionCompleted(); +void GroundMap_ExecuteEvent(); +void SetScriptVarValue(u8 *localVarBuf, s32 varId, s32 val); +void CleanLuminousCave(); +u8 CreateFelicityBank(u8); +u8 sub_80023E4(); +u8 CreateFriendListMenu(); +void PlayMenuSoundEffect(); +void sub_801D014(); +u8 sub_8015080(); +s32 sub_801516C(); +void sub_80151A4(); +s32 sub_8015198(); +u8 sub_80211AC(); +void sub_80213A0(); +u8 sub_802132C(); +u8 MakuhitaDojo_New(); +u8 sub_803B050(); +void sub_803B100(); +s32 sub_809CCDC(); +u8 sub_801B60C(); +u8 CreateKecleonBros(); +s16 sub_80A2654(s16); +u8 sub_802F73C(); +u8 sub_802F848(); +s32 sub_802F8A0(); +void sub_802F974(); +s16 sub_802F90C(); +s16 sub_80A26B8(); +u8 sub_80302E8(); +s32 sub_80303AC(); +void sub_8030480(); +s16 sub_8030418(); +void PrepareSavePakWrite(); +u8 WriteSavePak(); +void FinishWriteSavePak(); +u8 CreateKangaskhanStorage(); +void sub_8011C28(); +u8 CreateHelperPelipperMenu(); +u8 CreateWigglytuffShop(); +u8 sub_8099328(); +void GetScriptVarScenario(s32 varId,u32 *outMain,u32 *outSub); + +bool8 sub_809B648(void) +{ + s32 iVar14; + s32 iVar15; + u8 uVar11; + u8 uVar12; + u8 uVar15; + u8 uVar16; + u8 uVar17; + u32 uVar14; + u8 uVar19; + u8 uVar1; + u32 uVar7; + s32 sVar6; + u8 local_34; + u32 local_30; + u32 local_2c; + struct unkStruct_8096AF8 local_28; + u32 local_20; + u32 local_1c; + struct unkStruct_8096AF8 local_18; + + u8 local_33; + + switch (gUnknown_3001B64->unk414) { + case 2: + if (gUnknown_3001B64->unk420 != 1) { + u32 pressed = gRealInputs.pressed; + if ((pressed & 3) != 0) { + gUnknown_3001B64->unk430 = 1; + return 0; + } + + if (sub_8094D14()) { + gUnknown_3001B64->unk430 = 2; + return 0; + } + else { + return 1; + } + } + ResetTextbox_809B294(); + return 1; + case 3: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + return 1; + } + else { + u32 held = gRealInputs.held; + u32 pressed = gRealInputs.pressed; + if (((pressed & 2) == 0) && ((held & 2))) { + return 1; + } + return 0; + } + break; + case 4: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + if (gUnknown_3001B64->unk424 == 0) { + CreateConfirmNameMenu(0, gUnknown_3001B64->unk42C); + } + else { + CreateConfirmNameMenu(2, gUnknown_3001B64->unk42C); + } + return 1; + } + else { + s32 iVar12 = sub_8016080(); + if (iVar12 == 3) { + CleanConfirmNameMenu(); + gUnknown_3001B64->unk430 = 1; + break; + } + else if(iVar12 == 2) { + if (gUnknown_3001B64->unk424 == 0) { + return 1; + } + CleanConfirmNameMenu(); + gUnknown_3001B64->unk430 = 0; + return 0; + } + return 1; + } + break; + case 5: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + CreateConfirmNameMenu(1, gUnknown_3001B64->unk42C); + } + else { + s32 iVar12 = sub_8016080(); + if(iVar12 == 3) + { + CleanConfirmNameMenu(); + gUnknown_3001B64->unk430 = 1; + return 0; + } + else if(iVar12 == 2) + { + if (gUnknown_3001B64->unk424 == 0) { + return 1; + } + CleanConfirmNameMenu(); + gUnknown_3001B64->unk430 = 0; + return 0; + } + + } + return 1; + + case 6: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + sub_80151C0(4,gUnknown_3001B64->unk42C); + return 1; + } + else { + s32 iVar12 = sub_80154F0(); + if (iVar12 == 3) + { + sub_80155F0(); + gUnknown_3001B64->unk430 = 1; + return 0; + } + else if (iVar12 == 2) + { + if (gUnknown_3001B64->unk424 == 0) return 1; + sub_80155F0(); + gUnknown_3001B64->unk430 = 0; + return 0; + + } + return 1; + } + + case 7: + sub_801D014(gUnknown_3001B64->unk42C); + gUnknown_3001B64->unk418 = &gUnknown_81161A8; + PlayMenuSoundEffect(4); + return 1; + case 8: + sub_801D014(gUnknown_3001B64->unk42C); + gUnknown_3001B64->unk418 = &gUnknown_81161B8; + PlayMenuSoundEffect(4); + return 1; + case 9: + ResetTextbox_809B294(); + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + if (sub_8015080(gUnknown_3001B64->unk42C,&gUnknown_811610C) == '\0') { + gUnknown_3001B64->unk430 = -1; + return 0; + } + PlayMenuSoundEffect(4); + } + else { + switch( sub_801516C()) + { + case 3: + gUnknown_3001B64->unk430 = sub_8015198(); + sub_80151A4(); + return 0; + case 2: + gUnknown_3001B64->unk430 = -1; + sub_80151A4(); + return 0; + } + } + return 1; + case 10: + ResetTextbox_809B294(); + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + if (sub_8015080(gUnknown_3001B64->unk42C,&gUnknown_811612C) == '\0') { + gUnknown_3001B64->unk430 = -1; + return 0; + } + PlayMenuSoundEffect(4); + } + else { + switch( sub_801516C()) + { + case 3: + gUnknown_3001B64->unk430 = sub_8015198(); + sub_80151A4(); + return 0; + case 2: + gUnknown_3001B64->unk430 = -1; + sub_80151A4(); + return 0; + } + } + return 1; + case 11: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + if (sub_80211AC(gUnknown_3001B64->unk424,3) == '\0') { + gUnknown_3001B64->unk430 = -1; + return 0; + } + PlayMenuSoundEffect(4); + + } + else { + switch(sub_8021274(1)) + { + case 3: + gUnknown_3001B64->unk430 = sub_802132C(); + sub_80213A0(); + return 0; + case 2: + gUnknown_3001B64->unk430 = -1; + sub_80213A0(); + return 0; + } + } + + return 1; + case 0xc: + if (gUnknown_3001B64->unk420 == 1) { + s32 sVar6 = sub_80A2654(GetScriptVarValue(0,0x12)); + ResetTextbox_809B294(); + if (sub_802F73C(3,0,10,1) == '\0') { + gUnknown_3001B64->unk430 = -1; + return 0; + } + if ((sVar6 != -1) && (sub_802F848(sVar6) == '\0')) { + SetScriptVarValue(0,0x12,-1); + } + PlayMenuSoundEffect(4); + } + else { + switch(sub_802F8A0(1)) + { + case 3: + sVar6 = sub_802F90C(); + SetScriptVarValue(0, 0x12, sub_80A26B8(sVar6)); + gUnknown_3001B64->unk430 = sVar6; + sub_802F974(); + return 0; + case 2: + gUnknown_3001B64->unk430 = -1; + sub_802F974(); + return 0; + + } + } + + + return 1; + case 0xd: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + if ( sub_80302E8(3,0,10) == '\0') { + gUnknown_3001B64->unk430 = -1; + return 0; + } + PlayMenuSoundEffect(4); + + } + else { + switch(sub_80303AC(1)) + { + case 3: + gUnknown_3001B64->unk430 = sub_8030418(); + sub_8030480(); + return 0; + case 2: + gUnknown_3001B64->unk430 = -1; + sub_8030480(); + return 0; + } + } + + return 1; + case 0xe: + case 0xf: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + if (gUnknown_3001B64->unk414 == 0xe) { + SetScriptVarValue(0,0x18,1); + } + sub_8011C28(1); + PrepareSavePakWrite(0); + + return 1; + } + if (WriteSavePak() != '\0') { + return 1; + } + FinishWriteSavePak(); + return 0; + case 0x10: + uVar16 = sub_80023E4(4) == 0 ? 0 : 1; + ResetTextbox_809B294(); + if ( CreateKangaskhanStorage(uVar16)) { + gUnknown_3001B64->unk418 = &gUnknown_81161C8; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x11: + gUnknown_3001B64->unk418 = &gUnknown_81161D8; + return 1; + + case 0x13: + uVar17 = sub_80023E4(4) == 0 ? 0 : 1; + ResetTextbox_809B294(); + if (CreateFelicityBank(uVar17)) { + gUnknown_3001B64->unk418 = &gUnknown_81161E8; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x17: + case 0x18: + uVar11 = sub_80023E4(4); + ResetTextbox_809B294(); + if (gUnknown_3001B64->unk414 == 0x17) { + uVar7 = uVar11 == 0 ? 0 : 1; + } + else { + uVar7 = 2; + if ((uVar11) != 0) { + uVar7 = 3; + } + } + if ( CreateKecleonBros(uVar7)) { + gUnknown_3001B64->unk418 = &gUnknown_81161F8; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + + case 0x19: + uVar15 = sub_80023E4(4) == 0 ? 0 : 1; + ResetTextbox_809B294(); + if (sub_801FB50(uVar15)) { + gUnknown_3001B64->unk418 = &gUnknown_8116208; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + + case 0x1a: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + ClearScriptVarArray(0,0x39); + sub_802465C(); + return 1; + } + else { + s32 iVar10 = sub_80246F0(); + if ((GetScriptVarValue(0,0x39) == 0) && (HasEvolutionCompleted() != '\0')) { + SetScriptVarValue(0,0x39,1); + GroundMap_ExecuteEvent(0x46,0); + } + if (iVar10 == 3) { + CleanLuminousCave(); + gUnknown_3001B64->unk430 = 1; + return 0; + } + if (iVar10 != 2) { + return 1; + } + CleanLuminousCave(); + gUnknown_3001B64->unk430 = 0; + return 0; + } + + return 0; + case 0x1b: + uVar12 = sub_80023E4(4) == 0 ? 0 : 1; + ResetTextbox_809B294(); + if ( CreateWigglytuffShop(uVar12)) { + gUnknown_3001B64->unk418 = &gUnknown_8116218; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x1c: + gUnknown_3001B64->unk418 = &gUnknown_8116228; + return 1; + case 0x1d: + gUnknown_3001B64->unk418 = &gUnknown_8116238; + return 1; + case 0x1e: + gUnknown_3001B64->unk418 = &gUnknown_8116248; + return 1; + case 0x1f: + ResetTextbox_809B294(); + if ( CreateHelperPelipperMenu(0x130) == '\0') { + gUnknown_3001B64->unk430 = -1; + return 0; + } + gUnknown_3001B64->unk418 = &gUnknown_8116258; + return 1; + case 0x20: + PlayMenuSoundEffect(4); + gUnknown_3001B64->unk418 = &gUnknown_8116268; + return 1; + case 0x21: + PlayMenuSoundEffect(4); + gUnknown_3001B64->unk418 = &gUnknown_8116278; + return 1; + + case 0x22: + if ((sub_8099328(&local_34) != '\0') && (GetScriptVarScenario(2,&local_30,&local_2c), (int)local_2c < 8)) { + while ((int)local_2c < 8) { + sub_8096AF8(&local_28,local_2c,local_34); + if (local_28.unk0 != '\0') { + ScenarioCalc(2,local_30,local_2c); + gUnknown_3001B64->unk430 = ((s16)local_28.clientSpecies == 0 ? 0 : 1) + (((s16)local_28.targetSpecies != 0) ? 2 : 0); + if (gUnknown_3001B64->unk430 != 0) + return 0; + gUnknown_3001B64->unk430 = 3; + return 0; + } + local_2c++; + } + } + gUnknown_3001B64->unk430 = 0; + sub_8096BD0(); + ScenarioCalc(2,0,0); + return 0; + case 0x23: + if (sub_8099328(&local_33) == '\0') { + return 0; + } + GetScriptVarScenario(2,&local_20,&local_1c); + sub_8096AF8(&local_18,local_1c,local_33); + if (local_18.unk0 == '\0') { + return 0; + } + if (sub_802DB28(local_1c,local_33) == '\0') { + return 0; + } + iVar14 = GetScriptVarValue(0,0x19); + if (iVar14 < 100) { + SetScriptVarValue(0,0x19,iVar14 + 1); + } + SetScriptVarValue(0,0x39,1); + ScenarioCalc(2,local_20,local_1c + 1); + gUnknown_3001B64->unk418 = &gUnknown_8116288; + return 1; + case 0x24: + if (gUnknown_3001B64->unk420 == 1) { + uVar19 = sub_80023E4(4) == 0 ? 0 : 4; + ResetTextbox_809B294(); + if (MakuhitaDojo_New(uVar19)) { + return 1; + } + else + { + gUnknown_3001B64->unk430 = -1; + return 0; + } + } + else + { + switch(HandleMakuhitaDojoState()) + { + default: + return 1; + case 3: + gUnknown_3001B64->unk430 = sub_802FED0(); + MakuhitaDojo_Delete(); + return 0; + case 2: + gUnknown_3001B64->unk430 = -1; + MakuhitaDojo_Delete(); + return 0; + + } + } + return 0; + case 0x25: + uVar14 = 1; + if (sub_80023E4(4) != '\0') { + uVar14 = 5; + } + ResetTextbox_809B294(); + if (MakuhitaDojo_New(uVar14)) { + gUnknown_3001B64->unk418 = &gUnknown_8116298; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x26: + uVar14 = 2; + if ( sub_80023E4(4) != '\0') { + uVar14 = 6; + } + ResetTextbox_809B294(); + if (MakuhitaDojo_New(uVar14)) { + gUnknown_3001B64->unk418 = &gUnknown_81162A8; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x27: + uVar14 = 3; + if ( sub_80023E4(4) != '\0') { + uVar14 = 7; + } + ResetTextbox_809B294(); + if (MakuhitaDojo_New(uVar14)) { + gUnknown_3001B64->unk418 = &gUnknown_81162B8; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x28: + gUnknown_3001B64->unk418 = &gUnknown_81162C8; + return 1; + case 0x29: + gUnknown_3001B64->unk418 = &gUnknown_81162D8; + return 1; + case 0x2a: + ResetTextbox_809B294(); + if ( sub_803B050()) { + sub_803B100(gUnknown_3001B64->unk5A4); + gUnknown_3001B64->unk418 = &gUnknown_81162E8; + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + case 0x12: + gUnknown_3001B64->unk430 = 1; + break; + case 0x14: + case 0x15: + ResetTextbox_809B294(); + return 0; + case 0x16: + if (CreateFriendListMenu(2)) { + gUnknown_3001B64->unk418 = &gUnknown_81162F8; + return 1; + } + gUnknown_3001B64->unk430 = -2; + return 0; + + case 0x2b: + gUnknown_3001B64->unk430 = sub_809CCDC(gUnknown_3001B64->unk424,gUnknown_3001B64->unk428); + gUnknown_3001B64->unk418 = &gUnknown_8116308; + return 1; + + case 0x2c: { + s32 uVar13 = gUnknown_3001B64->unk428; + u8 uVar1 = gUnknown_3001B64->unk424; + ResetTextbox_809B294(); + if ( sub_801B60C(uVar13,uVar1,1)) { + gUnknown_3001B64->unk418 = &gUnknown_8116318; + return 1; + } + gUnknown_3001B64->unk430 = -1; + } + + return 0; + case 0x2d: + if (gUnknown_3001B64->unk420 == 1) { + ResetTextbox_809B294(); + xxx_call_save_unk_text_struct_800641C(NULL,'\x01','\x01'); + if (sub_801A5D8(0,0,0,10) != '\0') { + return 1; + } + gUnknown_3001B64->unk430 = -1; + return 0; + } + + switch(sub_801A6E8(1)) + { + case 3: + iVar15 = sub_801A8AC(); + uVar1 = gTeamInventoryRef->teamItems[iVar15].id; + if (IsEdibleItem(uVar1)) { + BufferItemName(gFormatBuffer_Items[0],uVar1,0); + ShiftItemsDownFrom(iVar15); + gUnknown_3001B64->unk430 = 1; + + } + else { + gUnknown_3001B64->unk430 = -1; + + } + sub_801A928();return 0; + break; + case 2: + gUnknown_3001B64->unk430 = -1;sub_801A928();return 0; + break; + default: + return 1; + } + + return 0; + case 0x2E: + if(gUnknown_3001B64->unk420 == 1) + { + ResetTextbox_809B294(); + if(DrawCredits(gUnknown_3001B64->unk424, gUnknown_3001B64->unk428)) return 1; + gUnknown_3001B64->unk430 = -1; + return 0; + } + switch(sub_8035574()) + { + case 2: + case 3: + gUnknown_3001B64->unk430 = -1; + sub_803565C(); + return 0; + default: + return 1; + } + return 0; + default: + return 0; + } + return 0; +} + +