From 88b68547f7b4647bbf6cde87fae1ffdf3dd3d1de Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 23 Mar 2025 11:29:18 -0700 Subject: [PATCH] Match sub_80A14E8 Co-authored-by: DizzyEggg --- asm/ground_script.s | 1713 ------------------------------------------- ld_script.txt | 2 +- src/code_80A14E8.c | 909 +++++++++++++++++++++++ src/ground_script.c | 13 +- 4 files changed, 916 insertions(+), 1721 deletions(-) delete mode 100644 asm/ground_script.s create mode 100644 src/code_80A14E8.c diff --git a/asm/ground_script.s b/asm/ground_script.s deleted file mode 100644 index 808df9384..000000000 --- a/asm/ground_script.s +++ /dev/null @@ -1,1713 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80A14E8 -sub_80A14E8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, _080A1514 - add sp, r4 - adds r6, r0, 0 - adds r5, r2, 0 - adds r7, r3, 0 - lsls r1, 24 - lsrs r1, 24 - subs r0, r1, 0x1 - cmp r0, 0x49 - bls _080A1508 - bl _080A236A -_080A1508: - lsls r0, 2 - ldr r1, _080A1518 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A1514: .4byte 0xfffffc80 -_080A1518: .4byte _080A151C - .align 2, 0 -_080A151C: - .4byte _080A1644 - .4byte _080A164C - .4byte _080A1672 - .4byte _080A167A - .4byte _080A1680 - .4byte _080A1688 - .4byte _080A1690 - .4byte _080A1698 - .4byte _080A169E - .4byte _080A16C6 - .4byte _080A1730 - .4byte _080A1756 - .4byte _080A178C - .4byte _080A1792 - .4byte _080A17C0 - .4byte _080A17C6 - .4byte _080A1800 - .4byte _080A1814 - .4byte _080A1824 - .4byte _080A1840 - .4byte _080A185E - .4byte _080A18C2 - .4byte _080A18E2 @ Wigglytuff Club Opening - .4byte _080A18F2 - .4byte _080A1904 - .4byte _080A197C - .4byte _080A1988 - .4byte _080A19DC - .4byte _080A19FC - .4byte _080A1A0E - .4byte _080A1A18 - .4byte _080A1A70 - .4byte _080A1AF8 - .4byte _080A1B20 - .4byte _080A1B36 - .4byte _080A1B58 - .4byte _080A1B64 - .4byte _080A1BD8 - .4byte _080A1BE4 - .4byte _080A1C30 - .4byte _080A1C84 - .4byte _080A1DEC - .4byte _080A1E30 - .4byte _080A1E3C - .4byte _080A1ED0 - .4byte _080A1ED6 - .4byte _080A1F28 - .4byte _080A1F3C - .4byte _080A1F44 - .4byte _080A1F50 - .4byte _080A1F80 - .4byte _080A1FDA - .4byte _080A202C - .4byte _080A2054 - .4byte _080A2060 - .4byte _080A204A - .4byte _080A206C - .4byte _080A2076 - .4byte _080A207C - .4byte _080A2082 - .4byte _080A20D4 - .4byte _080A20F4 - .4byte _080A21E4 - .4byte _080A228C - .4byte _080A229E - .4byte _080A2298 - .4byte _080A22AE - .4byte _080A22CC - .4byte _080A22E4 - .4byte _080A2304 - .4byte _080A2320 - .4byte _080A232E - .4byte _080A233A - .4byte _080A2346 -_080A1644: - bl sub_8098C58 - bl _080A236A -_080A164C: - bl sub_8011C34 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080A1660 - bl Rand32Bit - bl sub_8011C40 -_080A1660: - movs r0, 0x1 - bl sub_8011C28 - bl sub_8001064 - bl sub_809965C - bl _080A236A -_080A1672: - bl sub_8098CC8 - bl _080A236A -_080A167A: - bl sub_80961D8 - b _080A1804 -_080A1680: - bl ResetMailbox - bl _080A236A -_080A1688: - bl sub_80963FC - bl _080A236A -_080A1690: - bl sub_8096488 - bl _080A236A -_080A1698: - bl sub_80964B4 - b _080A1804 -_080A169E: - movs r0, 0x8 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _080A16B0 - bl sub_808D4B0 - b _080A16B4 -_080A16B0: - bl sub_808D500 -_080A16B4: - lsls r0, 24 - lsrs r4, r0, 24 - bl nullsub_104 - negs r0, r4 - orrs r0, r4 - lsrs r0, 31 - bl _080A236C -_080A16C6: - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0x1 - beq _080A16D2 - bl _080A236A -_080A16D2: - movs r2, 0xE - ldrsh r0, [r6, r2] - add r1, sp, 0x314 - bl sub_80A8C4C - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080A16E8 - bl _080A236A -_080A16E8: - add r0, sp, 0x314 - ldrb r0, [r0] - cmp r0, 0x44 - bne _080A16FC - movs r0, 0x82 - lsls r0, 1 - cmp r1, r0 - bne _080A16FC - bl _080A203C -_080A16FC: - movs r3, 0xE - ldrsh r0, [r6, r3] - bl sub_80A90C8 - lsls r0, 16 - ldr r1, _080A172C - asrs r0, 14 - adds r0, r1 - ldr r1, [r0] - add r0, sp, 0x4 - bl strcpy - movs r0, 0 - movs r1, 0x1 - add r2, sp, 0x4 - bl ScriptPrintText -_080A171E: - lsls r0, 24 -_080A1720: - cmp r0, 0 - beq _080A1726 - b _080A1EBE -_080A1726: - bl _080A236A - .align 2, 0 -_080A172C: .4byte gFriendAreaDialogue -_080A1730: - movs r0, 0 - movs r1, 0x14 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - bl sub_80A2740 - lsls r0, 24 - lsrs r0, 24 - bl CountJobsinDungeon - movs r1, 0 - cmp r0, 0 - ble _080A1750 - movs r1, 0x1 -_080A1750: - adds r0, r1, 0 - bl _080A236C -_080A1756: - add r4, sp, 0x104 - adds r0, r4, 0 - bl sub_8099394 - lsls r0, 24 - cmp r0, 0 - bne _080A1768 - bl _080A236A -_080A1768: - ldr r0, _080A1788 - ldr r1, [r0] - ldrb r2, [r4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 4 - adds r1, r0 - adds r1, 0x2C - movs r0, 0 - ldrsb r0, [r1, r0] -_080A177C: - cmp r0, 0 - ble _080A1782 - b _080A1EBE -_080A1782: - bl _080A236A - .align 2, 0 -_080A1788: .4byte gUnknown_203B480 -_080A178C: - bl sub_8097640 - b _080A1804 -_080A1792: - movs r5, 0x11 -_080A1794: - lsls r4, r5, 16 - asrs r0, r4, 16 - bl IsMazeCompleted - lsls r0, 24 - cmp r0, 0 - beq _080A17B6 - lsrs r4, 16 - movs r0, 0 - movs r1, 0x2F - adds r2, r4, 0 - bl GetScriptVarArrayValue - cmp r0, 0 - bne _080A17B6 - bl _080A234E -_080A17B6: - adds r5, 0x1 - cmp r5, 0x16 - ble _080A1794 - bl _080A236A -_080A17C0: - bl sub_80964E4 - b _080A1804 -_080A17C6: - movs r4, 0x8 - ldrsh r0, [r6, r4] - cmp r0, 0x1 - beq _080A17D2 - bl _080A236A -_080A17D2: - movs r5, 0xA - ldrsh r0, [r6, r5] - cmp r0, 0 - beq _080A17DE - bl _080A236A -_080A17DE: - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0x1 - beq _080A17EA - bl _080A236A -_080A17EA: - movs r2, 0xA - ldrsh r4, [r6, r2] - movs r3, 0xE - ldrsh r0, [r6, r3] - bl sub_80A8E9C - adds r1, r0, 0 - adds r0, r4, 0 - bl sub_80A87E0 - b _080A171E -_080A1800: - bl sub_80A8D20 -_080A1804: - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bl _080A236C -_080A1814: - ldr r0, _080A1820 - ldrh r0, [r0] - movs r1, 0xC0 - lsls r1, 2 - ands r0, r1 - b _080A1720 - .align 2, 0 -_080A1820: .4byte gRealInputs -_080A1824: - lsls r0, r5, 16 - asrs r0, 16 - bl sub_80A8D54 - cmp r0, 0 - bne _080A1834 - bl _080A236A -_080A1834: - ldrh r0, [r0] - lsrs r0, 1 - movs r1, 0x1 - ands r0, r1 - bl _080A236C -_080A1840: - movs r4, 0x8 - ldrsh r0, [r6, r4] - cmp r0, 0x1 - beq _080A184C - bl _080A236A -_080A184C: - movs r5, 0xA - ldrsh r0, [r6, r5] - bl sub_80A8BFC - lsls r0, 16 - asrs r0, 16 - bl GetCanMoveFlag - b _080A171E -_080A185E: - lsls r0, r5, 16 - asrs r0, 16 - bl sub_80A7AE8 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0 - bge _080A1872 - bl _080A236A -_080A1872: - lsls r4, r7, 8 - ldr r1, [r6] - ldr r0, [r6, 0x4] - add r7, sp, 0x318 - ldr r2, [r1, 0xC] - adds r1, r7, 0 - bl _call_via_r2 - add r6, sp, 0x320 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80A8FD8 - add r0, sp, 0x318 - ldr r3, [r0] - subs r1, r3, r4 - add r0, sp, 0x320 - ldr r2, [r0] - cmp r1, r2 - ble _080A189E - bl _080A236A -_080A189E: - adds r0, r3, r4 - cmp r0, r2 - bge _080A18A8 - bl _080A236A -_080A18A8: - ldr r2, [r7, 0x4] - subs r0, r2, r4 - ldr r1, [r6, 0x4] - cmp r0, r1 - ble _080A18B6 - bl _080A236A -_080A18B6: - adds r0, r2, r4 - cmp r0, r1 - blt _080A18BE - b _080A1EBE -_080A18BE: - bl _080A236A -_080A18C2: - movs r0, 0x1 - bl sub_80A8D54 - cmp r0, 0 - bne _080A18D0 - bl _080A236A -_080A18D0: - adds r1, r0, 0 - adds r1, 0x4C - movs r2, 0 - adds r0, 0x55 -_080A18D8: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _080A18D8 - b _080A1EBE -_080A18E2: @ Wigglytuff Guild Opening - movs r0, 0xC @ Wild Plains - bl UnlockFriendArea - movs r0, 0x12 @ Mist-Rise Forest - bl UnlockFriendArea - bl _080A236A -_080A18F2: - ldr r0, _080A1900 - movs r1, 0x3C -_080A18F6: - movs r2, 0xA - bl sub_80A8F50 - bl _080A236A - .align 2, 0 -_080A1900: .4byte gUnknown_2039D98 -_080A1904: - movs r0, 0x51 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl UnlockFriendArea - add r1, sp, 0x4 - ldr r0, _080A1970 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r4,r6} - stm r1!, {r2,r4,r6} - ldm r0!, {r3,r4,r6} - stm r1!, {r3,r4,r6} - ldr r0, [r0] - str r0, [r1] - add r4, sp, 0x2C - adds r0, r4, 0 - add r1, sp, 0x4 - bl sub_808D144 - adds r0, r4, 0 - bl sub_808D1DC - cmp r0, 0 - bne _080A193C - b _080A1EBE -_080A193C: - movs r3, 0 - ldr r1, _080A1974 - mov r8, r1 - lsls r6, r5, 2 - ldr r2, _080A1978 - adds r4, r0, 0 - adds r4, 0x4C - mov r7, r8 -_080A194C: - adds r0, r4, r3 - adds r1, r3, r7 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x9 - ble _080A194C -_080A195A: - adds r0, r6, r5 - lsls r0, 4 - adds r0, r2 - mov r1, r8 - movs r2, 0xA - bl sub_80922B4 -_080A1968: - bl IncrementAdventureNumJoined - bl _080A236A - .align 2, 0 -_080A1970: .4byte gUnknown_8116710 -_080A1974: .4byte gUnknown_2039D98 -_080A1978: .4byte gFormatBuffer_Names -_080A197C: - ldr r0, _080A1984 - movs r1, 0x53 - b _080A18F6 - .align 2, 0 -_080A1984: .4byte gUnknown_2039D98 -_080A1988: - ldr r0, _080A19D4 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl UnlockFriendArea - add r1, sp, 0x84 - adds r2, r1, 0 - ldr r0, _080A19D8 - ldm r0!, {r3-r5} - stm r2!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r0!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldr r0, [r0] - str r0, [r2] - add r4, sp, 0xAC - adds r0, r4, 0 - bl sub_808D144 - adds r0, r4, 0 - bl sub_808D1DC - adds r4, r0, 0 - cmp r4, 0 - bne _080A19C2 - b _080A1EBE -_080A19C2: - bl IncrementAdventureNumJoined - ldrh r1, [r4] - movs r0, 0x2 - orrs r0, r1 - strh r0, [r4] - bl _080A236A - .align 2, 0 -_080A19D4: .4byte 0x00000183 -_080A19D8: .4byte gUnknown_8116738 -_080A19DC: - ldr r0, _080A19F8 - movs r1, 0 - bl sub_808D434 - adds r2, r0, 0 - cmp r2, 0 - bne _080A19EC - b _080A1EBE -_080A19EC: - ldrh r1, [r2] - movs r0, 0x2 - orrs r0, r1 - strh r0, [r2] - bl _080A236A - .align 2, 0 -_080A19F8: .4byte 0x00000183 -_080A19FC: - movs r0, 0x82 - lsls r0, 1 -_080A1A00: - bl sub_808D278 - cmp r0, 0 - bne _080A1A0A - b _080A1EBE -_080A1A0A: - bl _080A236A -_080A1A0E: - ldr r0, _080A1A14 - movs r1, 0x7C - b _080A18F6 - .align 2, 0 -_080A1A14: .4byte gUnknown_2039D98 -_080A1A18: - add r1, sp, 0x108 - adds r2, r1, 0 - ldr r0, _080A1A64 - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldr r0, [r0] - str r0, [r2] - add r4, sp, 0x130 - adds r0, r4, 0 - bl sub_808D144 - adds r0, r4, 0 - bl sub_808D1DC - cmp r0, 0 - bne _080A1A42 - b _080A1EBE -_080A1A42: - movs r3, 0 - ldr r4, _080A1A68 - mov r8, r4 - lsls r6, r5, 2 - ldr r2, _080A1A6C - adds r4, r0, 0 - adds r4, 0x4C - mov r7, r8 -_080A1A52: - adds r0, r4, r3 - adds r1, r3, r7 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x9 - ble _080A1A52 - b _080A195A - .align 2, 0 -_080A1A64: .4byte gUnknown_8116760 -_080A1A68: .4byte gUnknown_2039D98 -_080A1A6C: .4byte gFormatBuffer_Names -_080A1A70: - movs r0, 0x9E - movs r1, 0x1 - bl sub_80026E8 - movs r0, 0x91 - movs r1, 0 - bl sub_808D434 - cmp r0, 0 - bne _080A1A9A - ldr r3, _080A1AEC - str r0, [sp] - movs r0, 0x91 - movs r1, 0 - movs r2, 0 - bl sub_808D2E8 - cmp r0, 0 - beq _080A1A9A - bl IncrementAdventureNumJoined -_080A1A9A: - movs r0, 0x92 - movs r1, 0 - bl sub_808D434 - cmp r0, 0 - bne _080A1ABC - ldr r3, _080A1AF0 - str r0, [sp] - movs r0, 0x92 - movs r1, 0 - movs r2, 0 - bl sub_808D2E8 - cmp r0, 0 - beq _080A1ABC - bl IncrementAdventureNumJoined -_080A1ABC: - movs r0, 0x90 - movs r1, 0 - bl sub_808D434 - cmp r0, 0 - beq _080A1ACC - bl _080A236A -_080A1ACC: - ldr r3, _080A1AF4 - str r0, [sp] - movs r0, 0x90 - movs r1, 0 - movs r2, 0 - bl sub_808D2E8 - cmp r0, 0 - bne _080A1AE2 - bl _080A236A -_080A1AE2: - bl IncrementAdventureNumJoined - bl _080A236A - .align 2, 0 -_080A1AEC: .4byte gUnknown_8116788 -_080A1AF0: .4byte gUnknown_811678C -_080A1AF4: .4byte gUnknown_8116790 -_080A1AF8: - movs r0, 0x90 - bl HasRecruitedMon - lsls r0, 24 - cmp r0, 0 - bne _080A1B08 - bl _080A236A -_080A1B08: - movs r0, 0x91 - bl HasRecruitedMon - lsls r0, 24 - cmp r0, 0 - bne _080A1B18 - bl _080A236A -_080A1B18: - movs r0, 0x92 - bl HasRecruitedMon - b _080A171E -_080A1B20: - bl GetPlayerPokemonStruct - ldrh r0, [r0, 0x8] - subs r0, 0x90 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080A1B32 - b _080A1EBE -_080A1B32: - bl _080A236A -_080A1B36: - bl GetPlayerPokemonStruct - cmp r0, 0 - beq _080A1B4A - movs r5, 0x8 - ldrsh r1, [r0, r5] - ldr r0, _080A1B54 - cmp r1, r0 - bne _080A1B4A - b _080A203C -_080A1B4A: - ldr r0, _080A1B54 - bl sub_8098134 - b _080A171E - .align 2, 0 -_080A1B54: .4byte 0x00000113 -_080A1B58: - ldr r0, _080A1B60 - movs r1, 0x79 - b _080A18F6 - .align 2, 0 -_080A1B60: .4byte gUnknown_2039D98 -_080A1B64: - ldr r4, _080A1BCC - adds r0, r4, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - bne _080A1B88 - adds r0, r4, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl UnlockFriendArea -_080A1B88: - add r1, sp, 0x188 - adds r2, r1, 0 - ldr r0, _080A1BD0 - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r0!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r0!, {r4-r6} - stm r2!, {r4-r6} - ldr r0, [r0] - str r0, [r2] - add r4, sp, 0x1B0 - adds r0, r4, 0 - bl sub_808D144 - adds r0, r4, 0 - bl sub_808D1DC - cmp r0, 0 - bne _080A1BB2 - b _080A1EBE -_080A1BB2: - movs r2, 0 - adds r3, r0, 0 - adds r3, 0x4C - ldr r4, _080A1BD4 -_080A1BBA: - adds r0, r3, r2 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _080A1BBA - b _080A1968 - .align 2, 0 -_080A1BCC: .4byte 0x00000199 -_080A1BD0: .4byte gUnknown_8116794 -_080A1BD4: .4byte gUnknown_2039D98 -_080A1BD8: - ldr r0, _080A1BE0 - movs r1, 0x7A - b _080A18F6 - .align 2, 0 -_080A1BE0: .4byte gUnknown_2039D98 -_080A1BE4: - add r1, sp, 0x208 - adds r2, r1, 0 - ldr r0, _080A1C28 - ldm r0!, {r3-r5} - stm r2!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r0!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldr r0, [r0] - str r0, [r2] - add r4, sp, 0x230 - adds r0, r4, 0 - bl sub_808D144 - adds r0, r4, 0 - bl sub_808D1DC - cmp r0, 0 - bne _080A1C0E - b _080A1EBE -_080A1C0E: - movs r2, 0 - adds r3, r0, 0 - adds r3, 0x4C - ldr r4, _080A1C2C -_080A1C16: - adds r0, r3, r2 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _080A1C16 - b _080A1968 - .align 2, 0 -_080A1C28: .4byte gUnknown_81167BC -_080A1C2C: .4byte gUnknown_2039D98 -_080A1C30: - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _080A1C70 - ldr r0, _080A1C64 - ldrb r4, [r0, 0x2] - adds r0, r4, 0 - bl IsNotMoneyOrUsedTMItem - lsls r0, 24 - cmp r0, 0 - bne _080A1C4A - b _080A236A -_080A1C4A: - ldr r0, _080A1C68 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x50 - adds r1, r0, r1 - ldrh r2, [r1] - ldr r0, _080A1C6C - cmp r2, r0 - bls _080A1C5E - b _080A236A -_080A1C5E: - adds r0, r2, 0x1 - strh r0, [r1] - b _080A236A - .align 2, 0 -_080A1C64: .4byte gUnknown_81167E4 -_080A1C68: .4byte gTeamInventoryRef -_080A1C6C: .4byte 0x000003e6 -_080A1C70: - ldr r0, _080A1C80 - ldrb r0, [r0, 0x2] - movs r1, 0 - bl sub_809124C - bl FillInventoryGaps - b _080A236A - .align 2, 0 -_080A1C80: .4byte gUnknown_81167E4 -_080A1C84: - movs r0, 0xD1 - lsls r0, 1 - bl RandInt - adds r0, 0x1 - lsls r0, 16 - asrs r5, r0, 16 - movs r0, 0x20 - bl RandInt - adds r4, r0, 0 - movs r7, 0xD2 - lsls r7, 1 - movs r6, 0 - ldr r0, _080A1DE0 - mov r8, r0 -_080A1CA4: - adds r0, r5, 0x1 - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, r8 - ble _080A1CB0 - movs r5, 0x1 -_080A1CB0: - subs r7, 0x1 - cmp r7, 0 - bge _080A1CCC - cmp r6, 0 - bne _080A1CBC - b _080A2360 -_080A1CBC: - cmp r4, r6 - blt _080A1CCC - adds r0, r6, 0 - bl RandInt - adds r4, r0, 0 - movs r7, 0xD2 - lsls r7, 1 -_080A1CCC: - adds r0, r5, 0 - subs r0, 0x90 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080A1CA4 - ldr r0, _080A1DE4 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0xB - cmp r5, r0 - beq _080A1CA4 - subs r0, 0xD - cmp r5, r0 - beq _080A1CA4 - subs r0, 0x88 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x67 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x23 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x3 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - cmp r5, r8 - beq _080A1CA4 - cmp r5, 0x96 - beq _080A1CA4 - subs r0, 0x5 - cmp r5, r0 - beq _080A1CA4 - cmp r5, 0x97 - beq _080A1CA4 - subs r0, 0x5 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - subs r0, 0x8C - cmp r5, r0 - beq _080A1CA4 - subs r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x2 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x5 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x82 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - adds r0, 0x1 - cmp r5, r0 - beq _080A1CA4 - subs r0, 0x83 - cmp r5, r0 - beq _080A1CA4 - adds r0, r5, 0 - bl IsExclusivePokemonUnlocked - lsls r0, 24 - cmp r0, 0 - beq _080A1CA4 - adds r0, r5, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - beq _080A1D9E - adds r0, r5, 0 - bl HasRecruitedMon - lsls r0, 24 - cmp r0, 0 - bne _080A1CA4 - adds r0, r5, 0 - bl sub_808D278 - cmp r0, 0 - beq _080A1CA4 -_080A1D9E: - adds r6, 0x1 - subs r4, 0x1 - cmp r4, 0 - blt _080A1DA8 - b _080A1CA4 -_080A1DA8: - movs r0, 0 - movs r1, 0x1F - adds r2, r5, 0 - bl SetScriptVarValue - ldr r4, _080A1DE8 - adds r0, r5, 0 - bl GetFriendArea - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0 - bl WriteFriendAreaName - adds r0, r5, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - bne _080A1EBE - b _080A203C - .align 2, 0 -_080A1DE0: .4byte 0x000001a3 -_080A1DE4: .4byte 0x0000019b -_080A1DE8: .4byte gFormatBuffer_FriendArea -_080A1DEC: - movs r0, 0 - movs r1, 0x1F - bl GetScriptVarValue - lsls r0, 16 - asrs r5, r0, 16 - ldr r4, _080A1E2C - adds r0, r5, 0 - bl GetFriendArea - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0 - bl WriteFriendAreaName - cmp r5, 0 - bne _080A1E14 - b _080A236A -_080A1E14: - adds r0, r5, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - bne _080A1EBE - b _080A203C - .align 2, 0 -_080A1E2C: .4byte gFormatBuffer_FriendArea -_080A1E30: - ldr r0, _080A1E38 - movs r1, 0x20 - b _080A18F6 - .align 2, 0 -_080A1E38: .4byte gUnknown_2039D98 -_080A1E3C: - cmp r5, 0 - bne _080A1E42 - b _080A2360 -_080A1E42: - movs r0, 0 - movs r1, 0x1F - bl GetScriptVarValue - lsls r0, 16 - asrs r5, r0, 16 - adds r6, r5, 0 - ldr r4, _080A1EC4 - adds r0, r5, 0 - bl GetFriendArea - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0 - bl WriteFriendAreaName - cmp r5, 0 - bne _080A1E6C - b _080A236A -_080A1E6C: - adds r0, r5, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl GetFriendAreaStatus - lsls r0, 24 - cmp r0, 0 - bne _080A1E8E - adds r0, r5, 0 - bl GetFriendArea - lsls r0, 24 - lsrs r0, 24 - bl UnlockFriendArea -_080A1E8E: - ldr r3, _080A1EC8 - movs r0, 0 - str r0, [sp] - adds r0, r6, 0 - movs r1, 0 - movs r2, 0 - bl sub_808D2E8 - cmp r0, 0 - bne _080A1EA4 - b _080A236A -_080A1EA4: - movs r2, 0 - adds r3, r0, 0 - adds r3, 0x4C - ldr r4, _080A1ECC -_080A1EAC: - adds r0, r3, r2 - adds r1, r2, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x9 - ble _080A1EAC - bl IncrementAdventureNumJoined -_080A1EBE: - movs r0, 0x1 - b _080A236C - .align 2, 0 -_080A1EC4: .4byte gFormatBuffer_FriendArea -_080A1EC8: .4byte gUnknown_81167E8 -_080A1ECC: .4byte gUnknown_2039D98 -_080A1ED0: - bl GetPtsToNextRank - b _080A177C -_080A1ED6: - bl GetRescueTeamRank - lsls r0, 24 - lsrs r4, r0, 24 - bl GetPtsToNextRank - cmp r0, 0 - bgt _080A1EE8 - b _080A236A -_080A1EE8: - bl AddToTeamRankPts - bl GetRescueTeamRank - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r4, 0 - bl GetTeamRankString - adds r1, r0, 0 - ldr r4, _080A1F30 - adds r0, r4, 0 - bl strcpy - adds r0, r5, 0 - bl GetTeamRankString - adds r1, r0, 0 - adds r4, 0x50 - adds r0, r4, 0 - bl strcpy - movs r1, 0x1 - negs r1, r1 - ldr r2, _080A1F34 - movs r0, 0 - bl ScriptPrintText - lsls r0, 24 - cmp r0, 0 - bne _080A1EBE -_080A1F28: - ldr r0, _080A1F38 - bl AddToTeamMoney - b _080A236A - .align 2, 0 -_080A1F30: .4byte gFormatBuffer_Items -_080A1F34: .4byte gUnknown_81167EC -_080A1F38: .4byte 0x00002710 -_080A1F3C: - ldr r0, _080A1F40 - b _080A1A00 - .align 2, 0 -_080A1F40: .4byte 0x00000133 -_080A1F44: - ldr r0, _080A1F4C - movs r1, 0x52 - b _080A18F6 - .align 2, 0 -_080A1F4C: .4byte gUnknown_2039D98 -_080A1F50: - add r1, sp, 0x288 - adds r2, r1, 0 - ldr r0, _080A1F7C - ldm r0!, {r3-r5} - stm r2!, {r3-r5} - ldm r0!, {r3,r4,r6} - stm r2!, {r3,r4,r6} - ldm r0!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldr r0, [r0] - str r0, [r2] - add r4, sp, 0x2B0 - adds r0, r4, 0 - bl sub_808D144 - adds r0, r4, 0 - bl sub_808D1DC - cmp r0, 0 - beq _080A1EBE - b _080A1968 - .align 2, 0 -_080A1F7C: .4byte gUnknown_811681C -_080A1F80: - movs r2, 0x1 - negs r2, r2 - movs r0, 0x3 - movs r1, 0x12 - bl ScriptVarScenarioAfter - lsls r0, 24 - cmp r0, 0 - bne _080A1F94 - b _080A236A -_080A1F94: - movs r0, 0 - movs r1, 0xF - bl GetScriptVarValue - cmp r0, 0x4 - bne _080A1FA2 - b _080A236A -_080A1FA2: - movs r0, 0 - movs r1, 0x42 - movs r2, 0 - bl GetScriptVarArrayValue - cmp r0, 0 - ble _080A1FB2 - b _080A236A -_080A1FB2: - movs r0, 0x80 - lsls r0, 1 - bl OtherRandInt - cmp r0, 0 - bne _080A1FCC - movs r0, 0 - movs r1, 0x42 - movs r2, 0 - movs r3, 0x4 - bl SetScriptVarArrayValue - b _080A1EBE -_080A1FCC: - movs r0, 0 - movs r1, 0x42 - movs r2, 0 - movs r3, 0x1 - bl SetScriptVarArrayValue - b _080A236A -_080A1FDA: - ldr r6, _080A200C - ldr r7, _080A2010 - movs r5, 0x2 -_080A1FE0: - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _080A2018 - ldrb r4, [r6, 0x2] - adds r0, r4, 0 - bl IsNotMoneyOrUsedTMItem - lsls r0, 24 - cmp r0, 0 - beq _080A2024 - ldr r0, _080A2014 - ldr r0, [r0] - lsls r1, r4, 1 - adds r0, 0x50 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, r7 - bhi _080A2024 - adds r0, 0x1 - strh r0, [r1] - b _080A2024 - .align 2, 0 -_080A200C: .4byte gUnknown_8116844 -_080A2010: .4byte 0x000003e6 -_080A2014: .4byte gTeamInventoryRef -_080A2018: - ldrb r0, [r6, 0x2] - movs r1, 0 - bl sub_809124C - bl FillInventoryGaps -_080A2024: - subs r5, 0x1 - cmp r5, 0 - bge _080A1FE0 - b _080A236A -_080A202C: - bl GetPlayerPokemonStruct - cmp r0, 0 - beq _080A2040 - movs r4, 0x8 - ldrsh r0, [r0, r4] - cmp r0, 0x71 - bne _080A2040 -_080A203C: - movs r0, 0x2 - b _080A236C -_080A2040: - movs r0, 0x71 - bl sub_8098134 - bl _080A171E -_080A204A: - movs r0, 0 - movs r1, 0x1 - bl sub_80A56A0 - b _080A236A -_080A2054: - add r0, sp, 0x328 - str r5, [r0] - str r7, [r0, 0x4] - bl sub_80A56F0 - b _080A236A -_080A2060: - add r0, sp, 0x330 - str r5, [r0] - str r7, [r0, 0x4] - bl sub_80A5704 - b _080A236A -_080A206C: - lsls r0, r5, 16 - lsrs r0, 16 - bl sub_809C6CC - b _080A236A -_080A2076: - bl sub_809C6EC - b _080A236A -_080A207C: - bl sub_809C760 - b _080A236A -_080A2082: - movs r0, 0 - movs r4, 0x80 - lsls r4, 9 -_080A2088: - movs r1, 0x80 - lsls r1, 15 - bl sub_80A86C8 - adds r0, r4, 0 - movs r5, 0x80 - lsls r5, 9 - adds r4, r5 - asrs r0, 16 - cmp r0, 0x17 - ble _080A2088 - movs r0, 0 - adds r4, r5, 0 -_080A20A2: - movs r1, 0x80 - lsls r1, 15 - bl sub_80AC1B0 - adds r0, r4, 0 - movs r6, 0x80 - lsls r6, 9 - adds r4, r6 - asrs r0, 16 - cmp r0, 0xF - ble _080A20A2 - movs r0, 0 - adds r4, r6, 0 -_080A20BC: - movs r1, 0x80 - lsls r1, 15 - bl sub_80AD0C8 - adds r0, r4, 0 - movs r1, 0x80 - lsls r1, 9 - adds r4, r1 - asrs r0, 16 - cmp r0, 0xF - ble _080A20BC - b _080A236A -_080A20D4: - add r0, sp, 0x338 - str r5, [r0] - adds r4, r0, 0 - str r7, [r4, 0x4] - movs r0, 0x1 - adds r1, r4, 0 - bl sub_80A5984 - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - movs r0, 0 - adds r1, r4, 0 - bl sub_80A59A0 - b _080A236A -_080A20F4: - add r1, sp, 0x308 - movs r2, 0 - movs r0, 0x1 - strb r0, [r1] - strb r2, [r1, 0x1] - strb r0, [r1, 0x2] - strb r0, [r1, 0x3] - str r2, [r1, 0x4] - ldr r0, _080A21D8 - ldr r2, _080A21DC - adds r0, r2 - ldr r0, [r0] - str r0, [r1, 0x8] - movs r0, 0x1 - negs r0, r0 - lsls r2, r5, 16 - asrs r2, 16 - lsls r3, r7, 24 - asrs r3, 24 - bl GroundEffect_Add - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080A2128 - b _080A236A -_080A2128: - bl sub_80AD158 - adds r7, r0, 0 - add r4, sp, 0x340 - add r5, sp, 0x348 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80A579C - ldr r0, [r4, 0x4] - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1 - str r0, [r4, 0x4] - ldr r0, [r5, 0x4] - adds r0, r1 - str r0, [r5, 0x4] - ldr r1, [r6] - ldr r0, [r6, 0x4] - add r6, sp, 0x350 - ldr r2, [r1, 0xC] - adds r1, r6, 0 - bl _call_via_r2 - add r1, sp, 0x350 - ldr r2, [r1] - add r0, sp, 0x340 - ldr r0, [r0] - cmp r2, r0 - blt _080A216E - add r0, sp, 0x348 - ldr r0, [r0] - cmp r2, r0 - blt _080A2170 - subs r0, 0x1 -_080A216E: - str r0, [r1] -_080A2170: - ldr r1, [r6, 0x4] - ldr r0, [r4, 0x4] - cmp r1, r0 - blt _080A2180 - ldr r0, [r5, 0x4] - cmp r1, r0 - blt _080A2182 - subs r0, 0x1 -_080A2180: - str r0, [r6, 0x4] -_080A2182: - add r1, sp, 0x340 - ldr r0, [r1] - ldr r2, _080A21E0 - adds r0, r2 - str r0, [r1] - ldr r0, [r4, 0x4] - adds r0, r2 - str r0, [r4, 0x4] - add r1, sp, 0x348 - ldr r0, [r1] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2 - str r0, [r1] - ldr r0, [r5, 0x4] - adds r0, r2 - str r0, [r5, 0x4] - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r3, [r1, 0x20] - adds r1, r4, 0 - adds r2, r5, 0 - bl _call_via_r3 - ldr r1, [r7] - ldr r0, [r7, 0x4] - ldr r2, [r1, 0x24] - adds r1, r6, 0 - bl _call_via_r2 - movs r0, 0 - movs r1, 0 - add r2, sp, 0x358 - str r0, [r2] - str r1, [r2, 0x4] - ldr r2, [r7] - ldr r0, [r7, 0x4] - add r1, sp, 0x358 - ldr r2, [r2, 0x48] - bl _call_via_r2 - b _080A1EBE - .align 2, 0 -_080A21D8: .4byte gFunctionScriptTable -_080A21DC: .4byte 0x00001310 -_080A21E0: .4byte 0xfffffc00 -_080A21E4: - ldr r0, _080A2288 - ldrh r4, [r0] - ldrh r0, [r0, 0x2] - movs r1, 0xC - ands r0, r1 - cmp r0, 0 - beq _080A21F4 - b _080A236A -_080A21F4: - adds r0, r4, 0 - bl sub_809CFE8 - lsls r0, 24 - asrs r1, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080A2282 - movs r2, 0x80 - lsls r2, 1 - add r0, sp, 0x360 - bl SetVecFromDirectionSpeed - add r0, sp, 0x360 - ldr r1, [r0, 0x4] - ldr r0, [r0] - add r2, sp, 0x368 - str r0, [r2] - str r1, [r2, 0x4] - movs r0, 0x2 - ands r4, r0 - cmp r4, 0 - beq _080A2226 - movs r0, 0x4 -_080A2226: - cmp r0, 0 - beq _080A2282 - movs r3, 0xDA - lsls r3, 2 - add r3, sp - mov r9, r3 - add r7, sp, 0x370 - add r4, sp, 0x378 - mov r8, r0 -_080A2238: - ldr r1, [r6] - ldr r0, [r6, 0x4] - ldr r2, [r1, 0x48] - mov r1, r9 - bl _call_via_r2 - cmp r0, 0 - beq _080A2276 - movs r5, 0 - str r5, [r7] - mov r1, r9 - ldr r0, [r1, 0x4] - str r0, [r7, 0x4] - ldr r1, [r6] - ldr r0, [r6, 0x4] - ldr r2, [r1, 0x48] - adds r1, r7, 0 - bl _call_via_r2 - cmp r0, 0 - beq _080A2276 - mov r2, r9 - ldr r0, [r2] - str r0, [r4] - str r5, [r4, 0x4] - ldr r1, [r6] - ldr r0, [r6, 0x4] - ldr r2, [r1, 0x48] - adds r1, r4, 0 - bl _call_via_r2 -_080A2276: - movs r3, 0x1 - negs r3, r3 - add r8, r3 - mov r5, r8 - cmp r5, 0 - bne _080A2238 -_080A2282: - movs r0, 0x1 - negs r0, r0 - b _080A236C - .align 2, 0 -_080A2288: .4byte gRealInputs -_080A228C: - negs r0, r5 - orrs r0, r5 - lsrs r0, 31 - bl sub_80993C0 - b _080A236A -_080A2298: - movs r0, 0x1 - bl sub_8011C28 -_080A229E: - adds r0, r5, 0 - bl GroundMainGameEndRequest - lsls r0, r5, 16 - lsrs r0, 16 - bl FadeOutAllMusic - b _080A236A -_080A22AE: - bl GetCurrentBGSong - ldr r1, _080A22C4 - strh r0, [r1] - lsls r0, 16 - ldr r1, _080A22C8 - cmp r0, r1 - beq _080A22C0 - b _080A1EBE -_080A22C0: - b _080A236A - .align 2, 0 -_080A22C4: .4byte gUnknown_2039DA8 -_080A22C8: .4byte 0x03e70000 -_080A22CC: - ldr r4, _080A22DC - ldrh r0, [r4] - ldr r5, _080A22E0 - cmp r0, r5 - beq _080A236A - bl xxx_call_start_new_bgm - b _080A2312 - .align 2, 0 -_080A22DC: .4byte gUnknown_2039DA8 -_080A22E0: .4byte 0x000003e7 -_080A22E4: - ldr r4, _080A22FC - ldrh r0, [r4] - ldr r6, _080A2300 - cmp r0, r6 - beq _080A236A - lsls r1, r5, 16 - lsrs r1, 16 - bl xxx_call_fade_in_new_bgm - strh r6, [r4] - b _080A1EBE - .align 2, 0 -_080A22FC: .4byte gUnknown_2039DA8 -_080A2300: .4byte 0x000003e7 -_080A2304: - ldr r4, _080A2318 - ldrh r0, [r4] - ldr r5, _080A231C - cmp r0, r5 - beq _080A236A - bl xxx_call_queue_bgm -_080A2312: - strh r5, [r4] - b _080A1EBE - .align 2, 0 -_080A2318: .4byte gUnknown_2039DA8 -_080A231C: .4byte 0x000003e7 -_080A2320: - lsls r0, r5, 16 - lsrs r0, 16 - lsls r1, r7, 16 - lsrs r1, 16 - bl sub_80997F4 - b _080A236A -_080A232E: - lsls r1, r5, 16 - lsrs r1, 16 - movs r0, 0x1E - bl sub_80997F4 - b _080A236A -_080A233A: - lsls r1, r5, 16 - lsrs r1, 16 - movs r0, 0 - bl GroundSprite_ExtendPaletteAdd - b _080A236A -_080A2346: - movs r0, 0 - bl GroundSprite_ExtendPaletteDelete - b _080A236A -_080A234E: - movs r0, 0 - movs r1, 0x2F - adds r2, r4, 0 - movs r3, 0x1 - bl SetScriptVarArrayValue - adds r0, r5, 0 - subs r0, 0x10 - b _080A236C -_080A2360: - movs r0, 0 - movs r1, 0x1F - movs r2, 0 - bl SetScriptVarValue -_080A236A: - movs r0, 0 -_080A236C: - movs r3, 0xE0 - lsls r3, 2 - add sp, r3 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80A14E8 - - .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index aad75d9ce..26aadc3af 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -316,7 +316,7 @@ SECTIONS { asm/code_809C5C4.o(.text); src/code_809D148.o(.text); src/ground_script.o(.text); - asm/ground_script.o(.text); + src/code_80A14E8.o(.text); src/ground_script_2.o(.text); src/code_80A26CC.o(.text); asm/code_80A26CC_1.o(.text); diff --git a/src/code_80A14E8.c b/src/code_80A14E8.c new file mode 100644 index 000000000..f85709f92 --- /dev/null +++ b/src/code_80A14E8.c @@ -0,0 +1,909 @@ +#include "global.h" +#include "ground_script.h" +#include "constants/friend_area.h" +#include "constants/item.h" +#include "constants/monster.h" +#include "code_80118A4.h" +#include "code_8099360.h" +#include "code_8094F88.h" +#include "code_80958E8.h" +#include "code_80972F4.h" +#include "exclusive_pokemon.h" +#include "friend_area.h" +#include "ground_main.h" +#include "input.h" +#include "items.h" +#include "main_loops.h" +#include "music.h" +#include "other_random.h" +#include "random.h" +#include "string_format.h" +#include "structs/str_wonder_mail.h" +#include "text_util.h" +#include "pokemon.h" + +void sub_8098C58(void); +void sub_8098CC8(void); +bool8 sub_80961D8(void); +void ResetMailbox(void); +void sub_80963FC(void); +void sub_8096488(void); +bool8 sub_80964B4(void); +extern void nullsub_104(void); +s16 sub_80A8C4C(); +s16 sub_80A90C8(); +bool8 sub_8097640(); +u8 sub_80964E4(); +s32 sub_80A8E9C(); +u8 sub_80A8D20(); +bool8 sub_80A87E0(); +s16 sub_80A8BFC(s16); +void sub_80A8F50(const u8 *buffer, s32, s32 size); + +extern const u8 *gFriendAreaDialogue[]; +extern struct unkStruct_808D144 gUnknown_8116710; +extern struct unkStruct_808D144 gUnknown_8116760; +extern struct unkStruct_808D144 gUnknown_8116794; +extern struct unkStruct_808D144 gUnknown_81167BC; +extern struct unkStruct_808D144 gUnknown_8116738; +extern struct unkStruct_808D144 gUnknown_811681C; +extern DungeonLocation gUnknown_81167E8; +extern DungeonLocation gUnknown_8116788; +extern DungeonLocation gUnknown_811678C; +extern DungeonLocation gUnknown_8116790; +extern u16 gUnknown_2039DA8; + +PokemonStruct1 *sub_808D278(s32 species); +PokemonStruct1 *sub_808D2E8(s32 species, u8 *name, u32 _itemID, DungeonLocation *location, u16 *moveID); +bool8 HasRecruitedMon(s32 species); +extern Item gUnknown_8116844; +extern Item gUnknown_81167E4; +bool8 sub_809124C(u8 id, u8 param_3); +extern const u8 gUnknown_81167EC[]; +void sub_80A56A0(s32, s32); +void sub_80A56F0(); +void sub_80A5704(); +void sub_809C760(void); +void sub_809C6EC(void); +void sub_809C6CC(u16 param_1); +void sub_80A86C8(s16, s32); +void sub_80AC1B0(s16, s32); +void sub_80AD0C8(s16, s32); +s32 sub_80A5984(); +void sub_80A59A0(s32, s32 *, u16); +void GroundSprite_ExtendPaletteAdd(u32, u16); +void GroundSprite_ExtendPaletteDelete(u32); +extern void sub_80997F4(u16, u16); +s32 sub_809CFE8(u16 param_1); +extern bool8 sub_80A579C(PixelPos *a0, PixelPos *a1); + +// save.h +void sub_8011C40(s32 x); +s32 sub_8011C34(void); +extern void sub_8011C28(u32); + +bool8 ScriptPrintText(s32, s16, const char*); +extern s16 sub_80A2740(s16); +extern u8 gUnknown_2039D98[POKEMON_NAME_LENGTH]; + +// event_flag +s32 GetScriptVarArrayValue(s32, s32 varID, u16 idx); // sub_8001784 +s32 GetScriptVarValue(u8 *, s32 varID); // sub_8001658(); +void SetScriptVarArrayValue(u8 *localVarBuf, s32 varId, s32 idx, s32 val); +void GetScriptVarScenario(s32 varId,u32 *outMain,u32 *outSub); +bool8 ScriptVarScenarioAfter(s16 varId, u32 main, s32 sub); +void SetScriptVarValue(u8 *localVarBuf, s32 varId, s32 val); +void sub_80026E8(s16 r0, bool8 r1); +bool8 sub_80023E4(u32 param_1); + +PokemonStruct1 *sub_80A8D54(s16); +PokemonStruct1 *sub_808D278(s32 species); +void IncrementAdventureNumJoined(void); // sub_8097848 + +// ground_lives +s16 sub_80A7AE8(s16); +s16 sub_80A8FD8(s32, PixelPos*); + +// resuce_team_info +u8 GetRescueTeamRank(void); +void AddToTeamRankPts(s32); +s32 GetPtsToNextRank(void); +const u8 *GetTeamRankString(s32); + +PixelPos SetVecFromDirectionSpeed(s8 r1, u32 r2); + +s16 GroundEffect_Add(s16 id, GroundEffectData*, s16 group, s8 sector); +extern Action *sub_80AD158(s16); + +s32 sub_80A14E8(Action *r0, u8 r1, u32 r2, s32 r3) +{ + switch(r1) + { + case 1: + sub_8098C58(); + return 0; + case 2: + if(sub_8011C34() == -1) + sub_8011C40(Rand32Bit()); + sub_8011C28(1); + sub_8001064(); + sub_809965C(); + return 0; + case 3: + sub_8098CC8(); + return 0; + case 4: + return sub_80961D8() == 0 ? 0 : 1; + case 5: + ResetMailbox(); + return 0; + case 6: + sub_80963FC(); + return 0; + case 7: + sub_8096488(); + return 0; + case 8: + return sub_80964B4() == 0 ? 0 : 1; + case 9: + { + u8 var; + if (sub_80023E4(8) == 0) { + var = sub_808D4B0(); + } + else { + var = sub_808D500(); + } + nullsub_104(); + return var != 0; + } + break; + case 0xA: + { + s32 ret; + s32 ret2; + if ((r0->unkC).arr[0] == 1) + { + u8 text[0x100]; + DungeonLocation dungLocation; + ret = sub_80A8C4C((r0->unkC).arr[1], &dungLocation); + if(ret != 0) + { + if (dungLocation.id == 0x44 && ret == 0x104) { + return 2; + } + + ret2 = sub_80A90C8((r0->unkC).arr[1]); + InlineStrcpy(text, gFriendAreaDialogue[ret2]); + if (ScriptPrintText(0, 1, text) != 0) + return 1; + } + } + } + return 0; + case 0xB: + return (CountJobsinDungeon(sub_80A2740(GetScriptVarValue(0, 0x14))) > 0); + case 0xC: + { + u8 sp_104; + if(sub_8099394(&sp_104) != 0) + { + unkStruct_203B480 *p = gUnknown_203B480; + p += sp_104; + if(p->rescuesAllowed > 0) + return 1; + } + } + return 0; + case 0xD: + return sub_8097640() ? 1 : 0; + break; + case 0xE: + { + s32 index; + for(index = 0x11; index <= 0x16; index++) + { + if (IsMazeCompleted((s16) index)) { + if (!GetScriptVarArrayValue(0, 0x2F, (u16) index)) { + SetScriptVarArrayValue(0, 0x2F, (u16) index, 1); + return index - 0x10; + } + } + } + return 0; + } + case 0xF: + return sub_80964E4() == 0 ? 0 : 1; + case 0x10: + if(r0->unk8[0] == 1) + if(r0->unk8[1] == 0) + if(r0->unkC.arr[0] == 1) + { + if(sub_80A87E0(r0->unk8[1], sub_80A8E9C(r0->unkC.arr[1])) != 0) + return 1; + } + return 0; + case 0x11: + return sub_80A8D20() == 0 ? 0 : 1; + case 0x12: + { + s32 held = gRealInputs.held; + if((held & (0x300))) + return 1; + else + return 0; + } + + case 0x13: + { + PokemonStruct1 *ptr; + + ptr = sub_80A8D54(r2); + if(ptr) + return PokemonFlag2(ptr); + } + return 0; + case 0x14: + if(r0->unk8[0] == 1) { + if(GetCanMoveFlag(sub_80A8BFC(r0->unk8[1])) != 0) + return 1; + } + return 0; + case 0x15: + { + s32 r4; + PixelPos sp_318; + PixelPos sp_320; + s32 r5 = sub_80A7AE8(r2); + if(r5 >= 0) { + r4 = (r3 << 8); + r0->callbacks->getHitboxCenter(r0->parentObject, &sp_318); + sub_80A8FD8(r5, &sp_320); + + if(sp_318.x - r4 <= sp_320.x + && sp_318.x + r4 >= sp_320.x + && sp_318.y - r4 <= sp_320.y + && sp_318.y + r4 >= sp_320.y) + { + return 1; + } + } + } + return 0; + case 0x16: + { + s32 index; + PokemonStruct1 *ptr; ptr = sub_80A8D54(1); + if(ptr) + { + for(index = 0; index < 10; index++) + { + ptr->name[index] = 0; + } + return 1; + } + } + return 0; + case 0x17: + UnlockFriendArea(WILD_PLAINS); + UnlockFriendArea(MIST_RISE_FOREST); + return 0; + case 0x18: + sub_80A8F50(gUnknown_2039D98, 0x3C, POKEMON_NAME_LENGTH); + return 0; + case 0x19: + { + struct unkStruct_808D144 sp_4; + PokemonStruct1 sp_2c; + PokemonStruct1 *ptr; + s32 index; + + + UnlockFriendArea(GetFriendArea(MONSTER_MAGNEMITE)); + sp_4 = gUnknown_8116710; + sub_808D144(&sp_2c, &sp_4); + ptr = sub_808D1DC(&sp_2c); + if (ptr == 0) return 1; + for(index = 0; index < POKEMON_NAME_LENGTH; index++) + { + ptr->name[index] = gUnknown_2039D98[index]; + } + sub_80922B4(gFormatBuffer_Names[r2], gUnknown_2039D98, POKEMON_NAME_LENGTH); + IncrementAdventureNumJoined(); + return 0; + } + break; + + case 0x1A: + sub_80A8F50(gUnknown_2039D98, 0x53, POKEMON_NAME_LENGTH); + return 0; + + case 0x1B: + { + PokemonStruct1 *pokemon; + struct unkStruct_808D144 sp_84; + PokemonStruct1 sp_ac; + + UnlockFriendArea(GetFriendArea(0x183)); + sp_84 = gUnknown_8116738; + sub_808D144(&sp_ac, &sp_84); + pokemon = sub_808D1DC(&sp_ac); + if(pokemon == 0) return 1; + IncrementAdventureNumJoined(); + pokemon->unk0 |= 2; + return 0; + } + case 0x1C: + { + PokemonStruct1 *pokemon = sub_808D434(0x183, 0); + if(pokemon == 0) return 1; + pokemon->unk0 |= 2; + return 0; + } + case 0x1D: + { + if( sub_808D278(0x104) == 0) + return 1; + else + return 0; + } + case 0x1E: + sub_80A8F50(gUnknown_2039D98, 0x7C, POKEMON_NAME_LENGTH); + return 0; + + case 0x1F: + { + PokemonStruct1 *pokemon; + s32 index; + struct unkStruct_808D144 sp_108; + PokemonStruct1 sp_130; + + sp_108 = gUnknown_8116760; + sub_808D144(&sp_130, &sp_108); + pokemon = sub_808D1DC(&sp_130); + if(!pokemon) return 1; + for(index = 0; index < POKEMON_NAME_LENGTH; index++) + { + pokemon->name[index] = gUnknown_2039D98[index]; + } + sub_80922B4(gFormatBuffer_Names[r2], gUnknown_2039D98, POKEMON_NAME_LENGTH); + IncrementAdventureNumJoined(); + return 0; + + } + break; + + case 0x20: + { + sub_80026E8(0x9E, 0x1); + if(sub_808D434(MONSTER_ZAPDOS, 0) == NULL) + { + if(sub_808D2E8(MONSTER_ZAPDOS, NULL, ITEM_NOTHING, &gUnknown_8116788, NULL)) + IncrementAdventureNumJoined(); + } + if(sub_808D434(MONSTER_MOLTRES, 0) == NULL) + { + if(sub_808D2E8(MONSTER_MOLTRES, NULL, ITEM_NOTHING, &gUnknown_811678C, NULL)) + IncrementAdventureNumJoined(); + } + if(sub_808D434(MONSTER_ARTICUNO, 0) == NULL) + { + if(sub_808D2E8(MONSTER_ARTICUNO, NULL, ITEM_NOTHING, &gUnknown_8116790, NULL)) + IncrementAdventureNumJoined(); + } + return 0; + } + break; + + + case 0x21: + if(HasRecruitedMon(MONSTER_ARTICUNO)) + if(HasRecruitedMon(MONSTER_ZAPDOS)) + if(HasRecruitedMon(MONSTER_MOLTRES)) + return 1; + return 0; + case 0x22: + { + PokemonStruct1 *pokemon = GetPlayerPokemonStruct(); + + if(pokemon->speciesNum != MONSTER_ARTICUNO && pokemon->speciesNum != MONSTER_ZAPDOS && pokemon->speciesNum != MONSTER_MOLTRES) + return 1; + } + return 0; + case 0x23: + { + PokemonStruct1 *pokemon; + pokemon = GetPlayerPokemonStruct(); + if (pokemon != NULL && pokemon->speciesNum == 0x113) + return 2; + else if (sub_8098134(0x113) != 0) + return 1; + } + return 0; + case 0x24: + sub_80A8F50(gUnknown_2039D98, 0x79, POKEMON_NAME_LENGTH); + return 0; + + case 0x25: + { + PokemonStruct1 *pokemon; + s32 index; + struct unkStruct_808D144 sp_188; + PokemonStruct1 sp_1b0; + + if(!GetFriendAreaStatus(GetFriendArea(0x199))) + UnlockFriendArea(GetFriendArea(0x199)); + sp_188 = gUnknown_8116794; + sub_808D144(&sp_1b0, &sp_188); + pokemon = sub_808D1DC(&sp_1b0); + if(pokemon == NULL) return 1; + for(index = 0; index < POKEMON_NAME_LENGTH; index++) + { + pokemon->name[index] = gUnknown_2039D98[index]; + } + IncrementAdventureNumJoined(); + return 0; + } + + break; + case 0x26: + sub_80A8F50(gUnknown_2039D98, 0x7A, POKEMON_NAME_LENGTH); + return 0; + case 0x27: + { + PokemonStruct1 *pokemon; + s32 index; + struct unkStruct_808D144 sp_208; + PokemonStruct1 sp_230; + + sp_208 = gUnknown_81167BC; + sub_808D144(&sp_230, &sp_208); + pokemon = sub_808D1DC(&sp_230); + if(pokemon == NULL) return 1; + for(index = 0; index < POKEMON_NAME_LENGTH; index++) + { + pokemon->name[index] = gUnknown_2039D98[index]; + } + IncrementAdventureNumJoined(); + return 0; + } + break; + + case 0x28: + { + if(GetNumberOfFilledInventorySlots() >= 20) + { + Item *item = &gUnknown_81167E4; + s32 id = item->id; + if(IsNotMoneyOrUsedTMItem(id)) + if(gTeamInventoryRef->teamStorage[id] < 999) + gTeamInventoryRef->teamStorage[id] += 1; + + } + else + { + Item *item = &gUnknown_81167E4; + sub_809124C(item->id, 0); + FillInventoryGaps(); + } + } + return 0; + + case 0x29: + { + s32 index = (s16)(RandInt(0x1A2) + 1); + s32 r4 = RandInt(0x20); + s32 r7 = 0x1A4; + s32 r6 = 0; + + while (1) + { + s16 indexS16; + index = (s16)(index + 1); + if (index >= 0x1a4) { + index = 1; + } + if (--r7 < 0) { + if (r6 == 0) { + SetScriptVarValue(NULL, 0x1F, 0); + return 0; + } + if (r4 >= r6) { + r4 = RandInt(r6); + r7 = 0x1A4; + } + } + // S16 memes AGAIN... + indexS16 = index; + index = indexS16; + if (indexS16 == MONSTER_ARTICUNO || indexS16 == MONSTER_ZAPDOS || indexS16 == MONSTER_MOLTRES + || indexS16 == MONSTER_GROUDON + || indexS16 == MONSTER_RAYQUAZA + || indexS16 == MONSTER_RAYQUAZA_CUTSCENE + || indexS16 == MONSTER_KYOGRE + || indexS16 == MONSTER_LUGIA + || indexS16 == MONSTER_CASTFORM_SNOWY + || indexS16 == MONSTER_CASTFORM_SUNNY + || indexS16 == MONSTER_CASTFORM_RAINY + || indexS16 == MONSTER_DEOXYS_NORMAL + || indexS16 == MONSTER_DEOXYS_ATTACK + || indexS16 == MONSTER_DEOXYS_DEFENSE + || indexS16 == MONSTER_DEOXYS_SPEED + || indexS16 == MONSTER_MEWTWO + || indexS16 == MONSTER_JIRACHI + || indexS16 == MONSTER_MEW + || indexS16 == MONSTER_LATIAS + || indexS16 == MONSTER_LATIOS + || indexS16 == MONSTER_ENTEI + || indexS16 == MONSTER_RAIKOU + || indexS16 == MONSTER_SUICUNE + || indexS16 == MONSTER_HO_OH + || indexS16 == MONSTER_REGIROCK + || indexS16 == MONSTER_REGICE + || indexS16 == MONSTER_REGISTEEL + || indexS16 == MONSTER_CELEBI + ) + continue; + if(!IsExclusivePokemonUnlocked(index)) continue; + if(GetFriendAreaStatus(GetFriendArea(index))) { + if(HasRecruitedMon(index)) continue; + if(sub_808D278(index) == 0) continue; + } + + r6++; + r4--; + if (r4 < 0) + break; + } + + SetScriptVarValue(NULL, 0x1F, index); // NEW_FRIEND_KIND + WriteFriendAreaName(gFormatBuffer_FriendArea, GetFriendArea(index), 0); + if (GetFriendAreaStatus(GetFriendArea(index)) != 0) + return 1; + else + return 2; + } + case 0x2A: + { + s32 id = (s16) GetScriptVarValue(0, 0x1F); // NEW_FRIEND_KIND + WriteFriendAreaName(gFormatBuffer_FriendArea,(GetFriendArea(id)), 0); + if (id == 0) + return 0; + else if(GetFriendAreaStatus(GetFriendArea(id)) != 0) + return 1; + else + return 2; + } + break; + case 0x2B: + sub_80A8F50(gUnknown_2039D98, 0x20, POKEMON_NAME_LENGTH); + return 0; + case 0x2C: + { + PokemonStruct1 *pokemon; + s32 index; + if(r2 != 0) + { + s32 id = (s16) GetScriptVarValue(0, 0x1F); // NEW_FRIEND_KIND + s32 matchMe = id; + WriteFriendAreaName(gFormatBuffer_FriendArea,(GetFriendArea((s16) id)), 0); + if(id == 0) + return 0; + + if(!GetFriendAreaStatus(GetFriendArea(id))) + UnlockFriendArea(GetFriendArea(id)); + pokemon = sub_808D2E8(matchMe, 0 ,0, &gUnknown_81167E8, 0); + if(pokemon == NULL) + return 0; + + for(index = 0; index < POKEMON_NAME_LENGTH; index++) + pokemon->name[index] = gUnknown_2039D98[index]; + IncrementAdventureNumJoined(); + return 1; + } + else + { + SetScriptVarValue(0, 0x1F, 0); // NEW_FRIEND_KIND + return 0; + } + } + + case 0x2D: + if(GetPtsToNextRank() > 0) + return 1; + else + return 0; + case 0x2E: + { + s32 rankBefore = GetRescueTeamRank(); + s32 points = GetPtsToNextRank(); + if(points > 0) { + s32 rankAfter; + AddToTeamRankPts(points); + rankAfter = GetRescueTeamRank(); + InlineStrcpy(gFormatBuffer_Items[0], GetTeamRankString(rankBefore)); + InlineStrcpy(gFormatBuffer_Items[1], GetTeamRankString(rankAfter)); + if(ScriptPrintText(0, -1, gUnknown_81167EC) != 0) + return 1; + } + else { + return 0; + } + } + // breakthrough + case 0x2F: + AddToTeamMoney(0x2710); + return 0; + case 0x30: + { + if(sub_808D278(0x133) == 0) + return 1; + else + return 0; + } + break; + case 0x31: + sub_80A8F50(gUnknown_2039D98, 0x52, POKEMON_NAME_LENGTH); + return 0; + + case 0x32: + { + struct unkStruct_808D144 sp_288; + PokemonStruct1 sp_2b0; + sp_288 = gUnknown_811681C; + sub_808D144(&sp_2b0, &sp_288); + if(sub_808D1DC(&sp_2b0) == 0) { + return 1; + } + else { + IncrementAdventureNumJoined(); + return 0; + } + } + case 0x33: + if(ScriptVarScenarioAfter(3, 0x12, -1)) + { + if(GetScriptVarValue(0, 0xF) != 4) + { + if (GetScriptVarArrayValue(0, 0x42, 0) <= 0) + { + if(OtherRandInt(0x100) == 0) + { + SetScriptVarArrayValue(0, 0x42, 0, 4); + return 1; + } + else + SetScriptVarArrayValue(0, 0x42, 0, 1); + } + } + } + return 0; + + case 0x34: + { + s32 index; + s32 id; + Item *item = &gUnknown_8116844; + for(index = 0; index < 3; index++) + { + if(GetNumberOfFilledInventorySlots() > 0x13) + { + id = item->id; + if(IsNotMoneyOrUsedTMItem(id)) + if(gTeamInventoryRef->teamStorage[id] < 999) + gTeamInventoryRef->teamStorage[id] += 1; + + } + else + { + sub_809124C(item->id, 0); + FillInventoryGaps(); + } + } + } + return 0; + case 0x35: + { + PokemonStruct1 *pokemon = GetPlayerPokemonStruct(); + if(pokemon != NULL && pokemon->speciesNum == 0x71) + return 2; + else + if(sub_8098134(0x71) != 0) + return 1; + else + return 0; + } + break; + + case 0x38: + sub_80A56A0(0, 1); + return 0; + case 0x36: { + s32 sp_328[2]; + sp_328[0] = r2; + sp_328[1] = r3; + sub_80A56F0(sp_328); + return 0; + } + case 0x37: { + s32 sp_330[2]; + sp_330[0] = r2; + sp_330[1] = r3; + sub_80A5704(sp_330); + return 0; + } + case 0x39: + sub_809C6CC(r2); + return 0; + case 0x3A: + sub_809C6EC(); + return 0; + case 0x3B: + sub_809C760(); + return 0; + case 0x3C: + { + s32 index; + index = 0; + for(index = 0; index < 0x18; index = (s16)(index + 1)) + { + sub_80A86C8(index, 0x400000); + } + for (index = 0; index < 0x10; index = (s16)(index + 1)) + { + sub_80AC1B0(index, 0x400000); + } + for (index = 0; index < 0x10; index = (s16)(index + 1)) + { + sub_80AD0C8(index, 0x400000); + } + } + return 0; + case 0x3D: { + s32 sp_338[2]; + sp_338[0] = r2; + sp_338[1] = r3; + sub_80A59A0(0, sp_338, sub_80A5984(1, sp_338)); + return 0; + } + case 0x3E: + { + s32 ret; + Action *r7; + GroundEffectData sp_308; + PixelPos sp_340; + PixelPos sp_348; + PixelPos sp_350; + PixelPos sp_358; + + sp_308.kind = 1; + sp_308.unk1 = 0; + sp_308.width = 1; + sp_308.height = 1; + sp_308.pos = (CompactPos) {0}; + sp_308.script = gFunctionScriptTable[0x196].script; + ret = GroundEffect_Add(-1, &sp_308, r2, r3); + if(ret < 0) break; + r7 = sub_80AD158(ret); + sub_80A579C(&sp_340, &sp_348); + sp_340.y += 0xC00; + sp_348.y += 0xC00; + r0->callbacks->getHitboxCenter(r0->parentObject, &sp_350); + if(sp_350.x < sp_340.x) + sp_350.x = sp_340.x; + else if (sp_350.x >= sp_348.x) + sp_350.x = sp_348.x - 1; + if(sp_350.y < sp_340.y) + sp_350.y = sp_340.y; + else if (sp_350.y >= sp_348.y) + sp_350.y = sp_348.y - 1; + + sp_340.x -= 1024; + sp_340.y -= 1024; + sp_348.x += (0x80 << 3); + sp_348.y += (0x80 << 3); + + r7->callbacks->setPositionBounds(r7->parentObject, &sp_340, &sp_348); + r7->callbacks->moveReal(r7->parentObject, &sp_350); + sp_358 = (PixelPos) {0}; + r7->callbacks->moveRelative(r7->parentObject, &sp_358); + return 1; + } + break; + + case 0x3F: + { + s32 index; + s32 ret; + s32 held = gRealInputs.held; + s32 pressed = gRealInputs.pressed; + if(!(pressed & 0xC)) + { + PixelPos sp_368; + ret = sub_809CFE8(held); + if((s8)ret != -1) + { + s32 to; + sp_368 = SetVecFromDirectionSpeed(ret,0x100); + + to = 2; + if(held & 2) { + to = 4; + } + + for(index = 0; index < to; index++) + { + if(r0->callbacks->moveRelative(r0->parentObject, &sp_368) != 0) + { + PixelPos pixelPos = {0, sp_368.y}; + if(r0->callbacks->moveRelative(r0->parentObject, &pixelPos) != 0) + { + PixelPos pixelPos = {sp_368.x, 0}; + r0->callbacks->moveRelative(r0->parentObject, &pixelPos); + } + } + } + } + return -1; + } + } + break; + + case 0x40: + sub_80993C0(r2 == 0 ? 0 : 1); + return 0; + case 0x42: + sub_8011C28(1); + GroundMainGameEndRequest(r2); + FadeOutAllMusic(r2); + return 0; + case 0x41: + GroundMainGameEndRequest(r2); + FadeOutAllMusic(r2); + return 0; + case 0x43: + gUnknown_2039DA8 = GetCurrentBGSong(); + if(gUnknown_2039DA8 != 999) + return 1; + return 0; + case 0x44: + if (gUnknown_2039DA8 != 999) + { + xxx_call_start_new_bgm(gUnknown_2039DA8); + gUnknown_2039DA8 = 999; + return 1; + } + return 0; + case 0x45: + if (gUnknown_2039DA8 != 999) + { + xxx_call_fade_in_new_bgm(gUnknown_2039DA8, r2); + gUnknown_2039DA8 = 999; + return 1; + } + return 0; + case 0x46: + if (gUnknown_2039DA8 != 999) + { + xxx_call_queue_bgm(gUnknown_2039DA8); + gUnknown_2039DA8 = 999; + return 1; + } + return 0; + case 0x47: + sub_80997F4(r2, r3); + return 0; + case 0x48: + sub_80997F4(0x1E, r2); + return 0; + case 0x49: + GroundSprite_ExtendPaletteAdd(0, r2); + return 0; + case 0x4A: + GroundSprite_ExtendPaletteDelete(0); + return 0; + } + + return 0; +} + diff --git a/src/ground_script.c b/src/ground_script.c index 61dca0cd5..04bc28f8f 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -143,7 +143,7 @@ s32 GroundLink_GetPos(s32 _arg0, PixelPos *pos); void sub_80999FC(s32); bool8 sub_809B1C0(s32, s32, char[12]); bool8 sub_80023E4(u32 param_1); // some kind of helper for predefined scenario checks -s32 sub_80A14E8(Action *, u8, s32, s32); +s32 sub_80A14E8(Action *, u8, u32, s32); void sub_80A87AC(s32, s32); const ScriptCommand *FindLabel(Action *action, s32 r1); void SetRescueTeamName(u8 *buffer); @@ -154,8 +154,6 @@ void SetScriptVarArrayValue(u8 *localVarBuf, s32 varId, s32 idx, s32 val); unkStruct_203B480 * GetMailatIndex(u8 index); u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s32 param_2); -s32 sub_80A14E8(Action *, u8, s32, s32); - extern s16 gCurrentMap; extern s16 gUnknown_2039A32; extern s16 gUnknown_2039A34; @@ -196,9 +194,9 @@ extern u8 GroundObjectsCancellAll(void); extern u8 GroundEffectsCancelAll(void); extern u8 GroundLivesCancelAll(void); extern u8 IsTextboxOpen_809A750(void); -extern s32 sub_80A882C(s16); -extern s32 sub_80AC240(s16); -extern s32 sub_80AD158(s16); +extern Action *sub_80A882C(s16); +extern Action *sub_80AC240(s16); +extern Action *sub_80AD158(s16); EWRAM_INIT static int sNumChoices = 0; @@ -210,7 +208,7 @@ void sub_809D520(void *a0) *ptr = v; } -s32 sub_809D52C(void *a0) +Action *sub_809D52C(void *a0) { s16 *ptr = a0; @@ -3048,3 +3046,4 @@ UNUSED bool8 GroundScript_ExecuteTrigger(s16 r0) else return FALSE; } +