#include "asm/constants/gba_constants.inc" #include "asm/macros.inc" .syntax unified .text thumb_func_start sub_80ACB90 sub_80ACB90: push {r4,r5,lr} ldr r4, _080ACBCC movs r0, 0xE2 lsls r0, 5 movs r1, 0x6 bl MemoryAlloc str r0, [r4] adds r1, r0, 0 ldr r0, _080ACBD0 adds r5, r0, 0 movs r4, 0xE2 lsls r4, 1 movs r2, 0x80 lsls r2, 9 adds r3, r2, 0 _080ACBB0: ldrh r0, [r1, 0x6] orrs r0, r5 strh r0, [r1, 0x6] adds r0, r2, 0 adds r2, r3 asrs r0, 16 adds r1, r4 cmp r0, 0xF ble _080ACBB0 bl sub_80ACBD4 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080ACBCC: .4byte gUnknown_3001B8C _080ACBD0: .4byte 0x0000ffff thumb_func_end sub_80ACB90 thumb_func_start sub_80ACBD4 sub_80ACBD4: push {r4-r6,lr} ldr r0, _080ACC0C ldr r4, [r0] movs r1, 0 movs r6, 0x1 negs r6, r6 movs r5, 0x80 lsls r5, 9 _080ACBE4: movs r2, 0x6 ldrsh r0, [r4, r2] cmp r0, r6 beq _080ACBF2 adds r0, r1, 0 bl GroundEffect_Delete _080ACBF2: adds r0, r5, 0 movs r1, 0x80 lsls r1, 9 adds r5, r1 asrs r1, r0, 16 movs r2, 0xE2 lsls r2, 1 adds r4, r2 cmp r1, 0xF ble _080ACBE4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080ACC0C: .4byte gUnknown_3001B8C thumb_func_end sub_80ACBD4 thumb_func_start sub_80ACC10 sub_80ACC10: push {r4,lr} bl sub_80ACBD4 ldr r4, _080ACC28 ldr r0, [r4] bl MemoryFree movs r0, 0 str r0, [r4] pop {r4} pop {r0} bx r0 .align 2, 0 _080ACC28: .4byte gUnknown_3001B8C thumb_func_end sub_80ACC10 thumb_func_start GroundEffect_Select GroundEffect_Select: push {r4-r7,lr} sub sp, 0x4 adds r4, r0, 0 lsls r4, 16 asrs r4, 16 lsls r1, 16 asrs r7, r1, 16 lsls r2, 24 asrs r6, r2, 24 ldr r1, _080ACC90 adds r0, r4, 0 bl sub_80A77D0 adds r5, r0, 0 ldr r1, _080ACC94 str r6, [sp] movs r0, 0 adds r2, r4, 0 adds r3, r7, 0 bl Log lsls r1, r7, 3 ldr r0, [r5, 0x4] adds r0, r1 lsls r1, r6, 2 adds r1, r6 lsls r1, 3 ldr r0, [r0, 0x4] adds r0, r1 ldr r5, [r0, 0x14] ldr r0, [r0, 0x10] cmp r0, 0 ble _080ACC86 adds r4, r0, 0 _080ACC70: movs r0, 0x1 negs r0, r0 adds r1, r5, 0 adds r2, r7, 0 adds r3, r6, 0 bl GroundEffect_Add subs r4, 0x1 adds r5, 0xC cmp r4, 0 bne _080ACC70 _080ACC86: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080ACC90: .4byte gUnknown_8118610 _080ACC94: .4byte gUnknown_811861C thumb_func_end GroundEffect_Select thumb_func_start GroundEffect_Cancel GroundEffect_Cancel: push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 16 asrs r7, r0, 16 lsls r1, 24 asrs r5, r1, 24 ldr r1, _080ACD00 movs r0, 0 adds r2, r7, 0 bl Log movs r1, 0 ldr r0, _080ACD04 ldr r4, [r0] movs r0, 0x1 negs r0, r0 mov r8, r0 movs r6, 0x80 lsls r6, 9 _080ACCC0: movs r2, 0x6 ldrsh r0, [r4, r2] cmp r0, r8 beq _080ACCE2 movs r2, 0x8 ldrsh r0, [r4, r2] cmp r0, r7 bne _080ACCE2 cmp r5, 0 blt _080ACCDC movs r0, 0xA ldrsb r0, [r4, r0] cmp r0, r5 bne _080ACCE2 _080ACCDC: adds r0, r1, 0 bl GroundEffect_Delete _080ACCE2: adds r0, r6, 0 movs r1, 0x80 lsls r1, 9 adds r6, r1 asrs r1, r0, 16 movs r2, 0xE2 lsls r2, 1 adds r4, r2 cmp r1, 0xF ble _080ACCC0 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080ACD00: .4byte gUnknown_8118640 _080ACD04: .4byte gUnknown_3001B8C thumb_func_end GroundEffect_Cancel thumb_func_start GroundEffect_CancelBlank GroundEffect_CancelBlank: push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x8 ldr r1, _080ACD7C movs r0, 0 bl Log movs r6, 0 ldr r0, _080ACD80 ldr r4, [r0] movs r0, 0x1 negs r0, r0 mov r8, r0 movs r1, 0x92 lsls r1, 1 adds r5, r4, r1 mov r7, sp _080ACD2C: movs r1, 0x6 ldrsh r0, [r4, r1] cmp r0, r8 beq _080ACD5C ldr r0, [r5] ldr r1, [r4, 0x14] adds r0, r1 str r0, [sp] ldr r0, [r5, 0x4] ldr r1, [r4, 0x18] adds r0, r1 str r0, [r7, 0x4] movs r1, 0xA2 lsls r1, 1 adds r0, r4, r1 mov r1, sp bl sub_80A675C lsls r0, 24 cmp r0, 0 bne _080ACD5C adds r0, r6, 0 bl GroundEffect_Delete _080ACD5C: adds r0, r6, 0x1 lsls r0, 16 asrs r6, r0, 16 movs r0, 0xE2 lsls r0, 1 adds r5, r0 adds r4, r0 cmp r6, 0xF ble _080ACD2C add sp, 0x8 pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080ACD7C: .4byte gUnknown_8118658 _080ACD80: .4byte gUnknown_3001B8C thumb_func_end GroundEffect_CancelBlank thumb_func_start sub_80ACD84 sub_80ACD84: push {r4-r7,lr} lsls r0, 16 asrs r4, r0, 16 movs r3, 0 ldr r0, _080ACDA8 ldr r1, [r0] movs r6, 0xE2 lsls r6, 1 movs r2, 0x80 lsls r2, 9 adds r5, r2, 0 _080ACD9A: movs r7, 0x6 ldrsh r0, [r1, r7] cmp r0, r4 bne _080ACDAC adds r0, r3, 0 b _080ACDBC .align 2, 0 _080ACDA8: .4byte gUnknown_3001B8C _080ACDAC: adds r0, r2, 0 adds r2, r5 asrs r3, r0, 16 adds r1, r6 cmp r3, 0xF ble _080ACD9A movs r0, 0x1 negs r0, r0 _080ACDBC: pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80ACD84 thumb_func_start GroundEffect_Add GroundEffect_Add: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x10 adds r7, r1, 0 lsls r0, 16 asrs r6, r0, 16 lsls r2, 16 asrs r2, 16 mov r10, r2 lsls r3, 24 asrs r3, 24 mov r9, r3 ldrb r0, [r7] lsls r0, 2 ldr r1, _080ACE08 adds r0, r1 mov r8, r0 ldr r3, _080ACE0C cmp r6, 0 bge _080ACE38 movs r2, 0 ldr r5, [r3] movs r0, 0x6 ldrsh r1, [r5, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080ACE10 movs r6, 0 b _080ACE38 .align 2, 0 _080ACE08: .4byte gFunctionScriptData _080ACE0C: .4byte gUnknown_3001B8C _080ACE10: adds r0, r2, 0x1 lsls r0, 16 asrs r2, r0, 16 movs r1, 0xE2 lsls r1, 1 adds r5, r1 cmp r2, 0xF bgt _080ACE2E movs r4, 0x6 ldrsh r1, [r5, r4] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080ACE10 adds r6, r2, 0 _080ACE2E: cmp r6, 0 bge _080ACE38 movs r0, 0x1 negs r0, r0 b _080AD062 _080ACE38: lsls r0, r6, 3 subs r0, r6 lsls r0, 4 adds r0, r6 lsls r0, 2 ldr r1, [r3] adds r5, r1, r0 ldr r1, _080ACE9C ldrb r3, [r7] mov r2, r8 movs r4, 0 ldrsh r0, [r2, r4] str r0, [sp] mov r0, r10 str r0, [sp, 0x4] mov r2, r9 str r2, [sp, 0x8] movs r0, 0 adds r2, r6, 0 bl Log movs r2, 0 movs r3, 0x6 ldrsh r1, [r5, r3] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080ACE72 movs r2, 0x1 _080ACE72: str r2, [sp, 0xC] strh r6, [r5, 0x4] ldrb r0, [r7] strh r0, [r5, 0x6] mov r4, r10 strh r4, [r5, 0x8] mov r0, r9 strb r0, [r5, 0xA] mov r1, r8 ldrh r0, [r1] subs r0, 0x1 lsls r0, 16 asrs r0, 16 cmp r0, 0x4 bhi _080ACEEC lsls r0, 2 ldr r1, _080ACEA0 adds r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _080ACE9C: .4byte gUnknown_8118674 _080ACEA0: .4byte _080ACEA4 .align 2, 0 _080ACEA4: .4byte _080ACEB8 .4byte _080ACEEC .4byte _080ACEC4 .4byte _080ACED0 .4byte _080ACEDC _080ACEB8: movs r2, 0x8E lsls r2, 1 adds r1, r5, r2 movs r0, 0x81 lsls r0, 22 b _080ACEF4 _080ACEC4: movs r4, 0x8E lsls r4, 1 adds r1, r5, r4 movs r0, 0x83 lsls r0, 18 b _080ACEF4 _080ACED0: movs r0, 0x8E lsls r0, 1 adds r1, r5, r0 movs r0, 0x88 lsls r0, 22 b _080ACEF4 _080ACEDC: movs r2, 0x8E lsls r2, 1 adds r1, r5, r2 ldr r0, _080ACEE8 b _080ACEF4 .align 2, 0 _080ACEE8: .4byte 0x22020000 _080ACEEC: movs r3, 0x8E lsls r3, 1 adds r1, r5, r3 ldr r0, _080ACF08 _080ACEF4: str r0, [r1] mov r4, r8 ldrb r0, [r4, 0x2] cmp r0, 0 bne _080ACF0C ldrb r0, [r7, 0x2] lsls r0, 11 str r0, [r5, 0xC] ldrb r0, [r7, 0x3] b _080ACF16 .align 2, 0 _080ACF08: .4byte 0x220c0000 _080ACF0C: mov r1, r8 ldrb r0, [r1, 0x2] lsls r0, 11 str r0, [r5, 0xC] ldrb r0, [r1, 0x3] _080ACF16: lsls r0, 11 str r0, [r5, 0x10] ldr r0, [r5, 0xC] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 str r0, [r5, 0x14] ldr r0, [r5, 0x10] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 str r0, [r5, 0x18] ldrb r0, [r7, 0x1] strb r0, [r5, 0x1C] adds r2, r7, 0x4 adds r4, r5, 0 adds r4, 0x20 ldrb r1, [r2, 0x2] movs r0, 0x4 ands r0, r1 cmp r0, 0 bne _080ACF5A ldrb r0, [r7, 0x4] lsls r3, r0, 11 str r3, [r5, 0x20] ldrb r1, [r2, 0x2] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080ACF5A movs r1, 0x80 lsls r1, 3 adds r0, r3, r1 str r0, [r5, 0x20] _080ACF5A: ldrb r1, [r2, 0x3] movs r0, 0x4 ands r0, r1 cmp r0, 0 bne _080ACF7C ldrb r0, [r2, 0x1] lsls r3, r0, 11 str r3, [r4, 0x4] ldrb r1, [r2, 0x3] movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _080ACF7C movs r2, 0x80 lsls r2, 3 adds r0, r3, r2 str r0, [r4, 0x4] _080ACF7C: ldr r3, [sp, 0xC] cmp r3, 0 beq _080ACFD2 ldrb r1, [r5, 0x1C] movs r4, 0x90 lsls r4, 1 adds r0, r5, r4 movs r3, 0 strb r1, [r0] movs r0, 0x92 lsls r0, 1 adds r2, r5, r0 ldr r0, [r5, 0x20] ldr r1, [r5, 0x14] subs r0, r1 str r0, [r2] movs r1, 0x96 lsls r1, 1 adds r2, r5, r1 ldr r0, [r5, 0x20] ldr r1, [r5, 0x14] adds r0, r1 str r0, [r2] adds r4, 0x8 adds r2, r5, r4 ldr r0, [r5, 0x24] ldr r1, [r5, 0x18] subs r0, r1 str r0, [r2] movs r0, 0x98 lsls r0, 1 adds r2, r5, r0 ldr r0, [r5, 0x24] ldr r1, [r5, 0x18] adds r0, r1 str r0, [r2] movs r2, 0x9A lsls r2, 1 adds r1, r5, r2 adds r4, 0x10 adds r0, r5, r4 str r3, [r0] str r3, [r1] _080ACFD2: adds r0, r5, 0 adds r0, 0x28 adds r1, r5, 0 adds r1, 0x30 bl sub_80A5778 ldr r0, [sp, 0xC] cmp r0, 0 beq _080AD01A movs r2, 0x9F lsls r2, 1 adds r1, r5, r2 movs r2, 0 movs r0, 0x80 lsls r0, 4 strh r0, [r1] movs r3, 0x9E lsls r3, 1 adds r1, r5, r3 movs r0, 0x1 strb r0, [r1] movs r4, 0xA0 lsls r4, 1 adds r0, r5, r4 strh r2, [r0] movs r1, 0xA2 lsls r1, 1 adds r0, r5, r1 movs r3, 0x6 ldrsh r2, [r5, r3] subs r4, 0x24 adds r1, r5, r4 ldr r3, [r1] adds r1, r6, 0 bl sub_80A7688 _080AD01A: adds r4, r5, 0 adds r4, 0x38 ldr r1, _080AD074 mov r0, r9 str r0, [sp] adds r0, r4, 0 adds r2, r5, 0 mov r3, r10 bl sub_809D600 ldr r2, [r7, 0x8] cmp r2, 0 bne _080AD04C mov r1, r8 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0x1 bne _080AD048 ldr r0, _080AD078 movs r1, 0xB0 lsls r1, 2 adds r0, r1 ldr r2, [r0] _080AD048: cmp r2, 0 beq _080AD060 _080AD04C: adds r0, r4, 0 movs r1, 0 bl sub_809D6D8 ldr r3, _080AD07C adds r0, r4, 0 movs r1, 0 movs r2, 0 bl sub_809D8C0 _080AD060: adds r0, r6, 0 _080AD062: add sp, 0x10 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080AD074: .4byte gUnknown_8118544 _080AD078: .4byte gFunctionScriptTable _080AD07C: .4byte gUnknown_81186CC thumb_func_end GroundEffect_Add thumb_func_start GroundEffect_Delete GroundEffect_Delete: push {r4,lr} adds r2, r0, 0 lsls r2, 16 asrs r2, 16 ldr r1, _080AD0BC lsls r0, r2, 3 subs r0, r2 lsls r0, 4 adds r0, r2 lsls r0, 2 ldr r1, [r1] adds r4, r1, r0 ldr r1, _080AD0C0 movs r0, 0 bl Log movs r1, 0xA2 lsls r1, 1 adds r0, r4, r1 bl sub_80A7714 adds r0, r4, 0 adds r0, 0x38 bl sub_809D648 ldr r0, _080AD0C4 strh r0, [r4, 0x6] pop {r4} pop {r0} bx r0 .align 2, 0 _080AD0BC: .4byte gUnknown_3001B8C _080AD0C0: .4byte gUnknown_81186D8 _080AD0C4: .4byte 0x0000ffff thumb_func_end GroundEffect_Delete thumb_func_start sub_80AD0C8 sub_80AD0C8: push {lr} adds r3, r1, 0 lsls r0, 16 asrs r0, 16 ldr r2, _080AD108 lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r2, r0, r1 movs r0, 0x6 ldrsh r1, [r2, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _080AD102 movs r1, 0x8E lsls r1, 1 adds r0, r2, r1 ldr r1, [r0] orrs r1, r3 str r1, [r0] movs r3, 0xA2 lsls r3, 1 adds r0, r2, r3 bl sub_80A6688 _080AD102: pop {r0} bx r0 .align 2, 0 _080AD108: .4byte gUnknown_3001B8C thumb_func_end sub_80AD0C8 thumb_func_start sub_80AD10C sub_80AD10C: push {r4,lr} adds r4, r1, 0 lsls r0, 16 asrs r0, 16 ldr r2, _080AD150 lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r3, r0, r1 movs r0, 0x6 ldrsh r1, [r3, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _080AD14A movs r0, 0x8E lsls r0, 1 adds r2, r3, r0 ldr r0, _080AD154 eors r0, r4 ldr r1, [r2] ands r1, r0 str r1, [r2] movs r2, 0xA2 lsls r2, 1 adds r0, r3, r2 bl sub_80A6688 _080AD14A: pop {r4} pop {r0} bx r0 .align 2, 0 _080AD150: .4byte gUnknown_3001B8C _080AD154: .4byte 0x337fffff thumb_func_end sub_80AD10C thumb_func_start sub_80AD158 sub_80AD158: push {lr} lsls r0, 16 asrs r0, 16 ldr r2, _080AD180 lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r2, r0, r1 movs r0, 0x6 ldrsh r1, [r2, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080AD184 movs r0, 0 b _080AD188 .align 2, 0 _080AD180: .4byte gUnknown_3001B8C _080AD184: adds r0, r2, 0 adds r0, 0x38 _080AD188: pop {r1} bx r1 thumb_func_end sub_80AD158 thumb_func_start sub_80AD18C sub_80AD18C: push {r4,lr} adds r4, r1, 0 lsls r0, 16 asrs r0, 16 lsls r2, 16 asrs r3, r2, 16 ldr r2, _080AD1B8 lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r2, r0, r1 movs r0, 0x6 ldrsh r1, [r2, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080AD1BC movs r0, 0 b _080AD1CC .align 2, 0 _080AD1B8: .4byte gUnknown_3001B8C _080AD1BC: adds r0, r2, 0 adds r0, 0x38 adds r1, r4, 0 adds r2, r3, 0 bl sub_809D6E4 lsls r0, 24 lsrs r0, 24 _080AD1CC: pop {r4} pop {r1} bx r1 thumb_func_end sub_80AD18C thumb_func_start GroundEffect_ExecuteScript GroundEffect_ExecuteScript: push {r4-r6,lr} adds r3, r0, 0 adds r5, r1, 0 adds r6, r2, 0 lsls r3, 16 asrs r3, 16 ldr r1, _080AD20C lsls r0, r3, 3 subs r0, r3 lsls r0, 4 adds r0, r3 lsls r0, 2 ldr r1, [r1] adds r4, r1, r0 ldr r1, _080AD210 movs r0, 0 adds r2, r3, 0 bl Log movs r0, 0x6 ldrsh r1, [r4, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080AD214 movs r0, 0 b _080AD22C .align 2, 0 _080AD20C: .4byte gUnknown_3001B8C _080AD210: .4byte gUnknown_81186F4 _080AD214: adds r0, r4, 0 adds r0, 0x38 ldr r3, _080AD234 adds r1, r5, 0 adds r2, r6, 0 bl GroundScript_ExecutePP movs r0, 0x9E lsls r0, 1 adds r1, r4, r0 movs r0, 0x1 strb r0, [r1] _080AD22C: pop {r4-r6} pop {r1} bx r1 .align 2, 0 _080AD234: .4byte gUnknown_811872C thumb_func_end GroundEffect_ExecuteScript thumb_func_start sub_80AD238 sub_80AD238: push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 16 asrs r7, r0, 16 ldr r0, _080AD28C ldr r4, [r0] movs r5, 0 movs r0, 0x1 negs r0, r0 mov r8, r0 movs r6, 0x80 lsls r6, 9 _080AD252: movs r1, 0x6 ldrsh r0, [r4, r1] cmp r0, r8 beq _080AD26A adds r0, r4, 0 adds r0, 0x38 adds r1, r7, 0 bl sub_809D968 orrs r5, r0 lsls r0, r5, 24 lsrs r5, r0, 24 _080AD26A: adds r0, r6, 0 movs r1, 0x80 lsls r1, 9 adds r6, r1 asrs r0, 16 movs r1, 0xE2 lsls r1, 1 adds r4, r1 cmp r0, 0xF ble _080AD252 adds r0, r5, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080AD28C: .4byte gUnknown_3001B8C thumb_func_end sub_80AD238 thumb_func_start sub_80AD290 sub_80AD290: push {r4-r7,lr} ldr r0, _080AD2D4 ldr r4, [r0] movs r5, 0 movs r7, 0x1 negs r7, r7 movs r6, 0x80 lsls r6, 9 _080AD2A0: movs r1, 0x6 ldrsh r0, [r4, r1] cmp r0, r7 beq _080AD2B6 adds r0, r4, 0 adds r0, 0x38 bl sub_809D92C orrs r5, r0 lsls r0, r5, 24 lsrs r5, r0, 24 _080AD2B6: adds r0, r6, 0 movs r1, 0x80 lsls r1, 9 adds r6, r1 asrs r0, 16 movs r1, 0xE2 lsls r1, 1 adds r4, r1 cmp r0, 0xF ble _080AD2A0 adds r0, r5, 0 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080AD2D4: .4byte gUnknown_3001B8C thumb_func_end sub_80AD290 thumb_func_start sub_80AD2D8 sub_80AD2D8: lsls r0, 16 asrs r0, 16 ldr r2, _080AD2F4 lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r0, r1 movs r1, 0x6 ldrsh r0, [r0, r1] bx lr .align 2, 0 _080AD2F4: .4byte gUnknown_3001B8C thumb_func_end sub_80AD2D8 thumb_func_start sub_80AD2F8 sub_80AD2F8: lsls r0, 16 asrs r0, 16 ldr r3, _080AD31C lsls r2, r0, 3 subs r2, r0 lsls r2, 4 adds r2, r0 lsls r2, 2 ldr r0, [r3] adds r0, r2 movs r3, 0x8E lsls r3, 1 adds r2, r0, r3 ldr r2, [r2] str r2, [r1] movs r1, 0x6 ldrsh r0, [r0, r1] bx lr .align 2, 0 _080AD31C: .4byte gUnknown_3001B8C thumb_func_end sub_80AD2F8 thumb_func_start sub_80AD320 sub_80AD320: push {lr} adds r3, r1, 0 lsls r0, 16 asrs r0, 16 ldr r2, _080AD34C lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r2, r0, r1 movs r0, 0x6 ldrsh r1, [r2, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080AD350 movs r0, 0 str r0, [r3] str r0, [r3, 0x4] b _080AD358 .align 2, 0 _080AD34C: .4byte gUnknown_3001B8C _080AD350: ldr r0, [r2, 0xC] ldr r1, [r2, 0x10] str r0, [r3] str r1, [r3, 0x4] _080AD358: movs r1, 0x6 ldrsh r0, [r2, r1] pop {r1} bx r1 thumb_func_end sub_80AD320 thumb_func_start sub_80AD360 sub_80AD360: push {lr} adds r3, r1, 0 lsls r0, 16 asrs r0, 16 ldr r2, _080AD38C lsls r1, r0, 3 subs r1, r0 lsls r1, 4 adds r1, r0 lsls r1, 2 ldr r0, [r2] adds r2, r0, r1 movs r0, 0x6 ldrsh r1, [r2, r0] movs r0, 0x1 negs r0, r0 cmp r1, r0 bne _080AD390 movs r0, 0 str r0, [r3] b _080AD3AA .align 2, 0 _080AD38C: .4byte gUnknown_3001B8C _080AD390: movs r1, 0x92 lsls r1, 1 adds r0, r2, r1 ldr r0, [r0] ldr r1, [r2, 0x14] adds r0, r1 str r0, [r3] movs r1, 0x94 lsls r1, 1 adds r0, r2, r1 ldr r0, [r0] ldr r1, [r2, 0x18] adds r0, r1 _080AD3AA: str r0, [r3, 0x4] movs r1, 0x6 ldrsh r0, [r2, r1] pop {r1} bx r1 thumb_func_end sub_80AD360 thumb_func_start sub_80AD3B4 sub_80AD3B4: push {r4,lr} lsls r0, 16 asrs r0, 16 ldr r3, _080AD3DC lsls r2, r0, 3 subs r2, r0 lsls r2, 4 adds r2, r0 lsls r2, 2 ldr r4, [r3] adds r4, r2 adds r0, r4, 0 bl sub_80AD3E0 movs r1, 0x6 ldrsh r0, [r4, r1] pop {r4} pop {r1} bx r1 .align 2, 0 _080AD3DC: .4byte gUnknown_3001B8C thumb_func_end sub_80AD3B4 thumb_func_start sub_80AD3E0 sub_80AD3E0: push {r4-r7,lr} mov r12, r0 ldr r3, [r1] ldr r2, [r0, 0x14] subs r6, r3, r2 ldr r1, [r1, 0x4] ldr r0, [r0, 0x18] subs r7, r1, r0 adds r4, r3, r2 adds r5, r1, r0 mov r1, r12 ldr r0, [r1, 0x28] cmp r6, r0 blt _080AD40E ldr r0, [r1, 0x30] cmp r4, r0 bge _080AD40E ldr r0, [r1, 0x2C] cmp r7, r0 blt _080AD40E ldr r0, [r1, 0x34] cmp r5, r0 blt _080AD412 _080AD40E: movs r0, 0x1 b _080AD428 _080AD412: movs r0, 0x92 lsls r0, 1 add r0, r12 str r6, [r0] str r7, [r0, 0x4] movs r0, 0x96 lsls r0, 1 add r0, r12 str r4, [r0] str r5, [r0, 0x4] movs r0, 0 _080AD428: pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_80AD3E0 thumb_func_start sub_80AD430 sub_80AD430: push {r4-r6,lr} mov r12, r0 movs r0, 0x92 lsls r0, 1 add r0, r12 ldr r0, [r0] ldr r2, [r1] adds r5, r0, r2 movs r0, 0x94 lsls r0, 1 add r0, r12 ldr r0, [r0] ldr r1, [r1, 0x4] adds r6, r0, r1 movs r0, 0x96 lsls r0, 1 add r0, r12 ldr r0, [r0] adds r3, r0, r2 movs r0, 0x98 lsls r0, 1 add r0, r12 ldr r0, [r0] adds r4, r0, r1 mov r0, r12 ldr r1, [r0, 0x28] cmp r5, r1 bge _080AD470 adds r5, r1, 0 ldr r0, [r0, 0xC] adds r3, r1, r0 b _080AD47E _080AD470: mov r2, r12 ldr r1, [r2, 0x30] cmp r3, r1 blt _080AD47E ldr r0, [r2, 0xC] subs r5, r1, r0 adds r3, r1, 0 _080AD47E: mov r0, r12 ldr r1, [r0, 0x2C] cmp r6, r1 bge _080AD48E adds r6, r1, 0 ldr r0, [r0, 0x10] adds r4, r1, r0 b _080AD49C _080AD48E: mov r2, r12 ldr r1, [r2, 0x34] cmp r4, r1 blt _080AD49C ldr r0, [r2, 0x10] subs r6, r1, r0 adds r4, r1, 0 _080AD49C: movs r0, 0x92 lsls r0, 1 add r0, r12 str r5, [r0] str r6, [r0, 0x4] movs r0, 0x96 lsls r0, 1 add r0, r12 str r3, [r0] str r4, [r0, 0x4] movs r0, 0 pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_80AD430 thumb_func_start sub_80AD4B8 sub_80AD4B8: movs r1, 0x4 ldrsh r0, [r0, r1] bx lr thumb_func_end sub_80AD4B8 thumb_func_start sub_80AD4C0 sub_80AD4C0: ldr r2, [r0, 0xC] ldr r3, [r0, 0x10] str r2, [r1] str r3, [r1, 0x4] bx lr thumb_func_end sub_80AD4C0 thumb_func_start sub_80AD4CC sub_80AD4CC: push {r4,lr} adds r3, r0, 0 adds r4, r1, 0 cmp r4, 0 beq _080AD50C movs r0, 0x92 lsls r0, 1 adds r2, r3, r0 ldr r1, [r4] ldr r0, [r3, 0x14] subs r0, r1, r0 str r0, [r2] movs r0, 0x96 lsls r0, 1 adds r2, r3, r0 ldr r0, [r3, 0x14] adds r1, r0 str r1, [r2] movs r0, 0x94 lsls r0, 1 adds r2, r3, r0 ldr r1, [r4, 0x4] ldr r0, [r3, 0x18] subs r0, r1, r0 str r0, [r2] movs r0, 0x98 lsls r0, 1 adds r2, r3, r0 ldr r0, [r3, 0x18] adds r1, r0 str r1, [r2] b _080AD572 _080AD50C: movs r0, 0x92 lsls r0, 1 adds r2, r3, r0 ldr r0, [r3, 0x20] ldr r1, [r3, 0x14] subs r0, r1 str r0, [r2] movs r0, 0x96 lsls r0, 1 adds r2, r3, r0 ldr r0, [r3, 0x20] ldr r1, [r3, 0x14] adds r0, r1 str r0, [r2] movs r0, 0x94 lsls r0, 1 adds r2, r3, r0 ldr r0, [r3, 0x24] ldr r1, [r3, 0x18] subs r0, r1 str r0, [r2] movs r0, 0x98 lsls r0, 1 adds r2, r3, r0 ldr r0, [r3, 0x24] ldr r1, [r3, 0x18] adds r0, r1 str r0, [r2] movs r2, 0x9A lsls r2, 1 adds r1, r3, r2 adds r2, 0x4 adds r0, r3, r2 str r4, [r0] str r4, [r1] movs r0, 0x90 lsls r0, 1 adds r2, r3, r0 movs r1, 0 ldrsb r1, [r2, r1] movs r0, 0x1C ldrsb r0, [r3, r0] cmp r1, r0 beq _080AD56E movs r0, 0x9E lsls r0, 1 adds r1, r3, r0 movs r0, 0x1 strb r0, [r1] _080AD56E: ldrb r0, [r3, 0x1C] strb r0, [r2] _080AD572: pop {r4} pop {r0} bx r0 thumb_func_end sub_80AD4CC thumb_func_start sub_80AD578 sub_80AD578: push {r4,lr} ldr r3, [r1] ldr r4, [r1, 0x4] str r3, [r0, 0x28] str r4, [r0, 0x2C] ldr r1, [r2] ldr r2, [r2, 0x4] str r1, [r0, 0x30] str r2, [r0, 0x34] pop {r4} pop {r0} bx r0 thumb_func_end sub_80AD578 thumb_func_start sub_80AD590 sub_80AD590: adds r3, r0, 0 movs r2, 0x92 lsls r2, 1 adds r0, r3, r2 ldr r0, [r0] ldr r2, [r3, 0x14] adds r0, r2 str r0, [r1] movs r2, 0x94 lsls r2, 1 adds r0, r3, r2 ldr r0, [r0] ldr r2, [r3, 0x18] adds r0, r2 str r0, [r1, 0x4] bx lr thumb_func_end sub_80AD590 thumb_func_start sub_80AD5B0 sub_80AD5B0: push {lr} bl sub_80AD3E0 pop {r1} bx r1 thumb_func_end sub_80AD5B0 thumb_func_start sub_80AD5BC sub_80AD5BC: push {r4,lr} adds r3, r0, 0 movs r4, 0x9A lsls r4, 1 adds r0, r3, r4 ldr r0, [r0] str r0, [r1] movs r1, 0x9C lsls r1, 1 adds r0, r3, r1 ldr r0, [r0] str r0, [r2] pop {r4} pop {r0} bx r0 thumb_func_end sub_80AD5BC thumb_func_start sub_80AD5DC sub_80AD5DC: movs r2, 0x9A lsls r2, 1 adds r0, r2 str r1, [r0] bx lr thumb_func_end sub_80AD5DC thumb_func_start sub_80AD5E8 sub_80AD5E8: movs r2, 0x90 lsls r2, 1 adds r0, r2 ldrb r0, [r0] strb r0, [r1] bx lr thumb_func_end sub_80AD5E8 thumb_func_start sub_80AD5F4 sub_80AD5F4: push {lr} adds r2, r0, 0 lsls r1, 24 asrs r1, 24 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _080AD60C movs r3, 0x90 lsls r3, 1 adds r0, r2, r3 strb r1, [r0] _080AD60C: pop {r0} bx r0 thumb_func_end sub_80AD5F4 thumb_func_start sub_80AD610 sub_80AD610: push {r4,r5,lr} lsls r1, 16 adds r3, r0, 0 movs r0, 0xFF lsls r0, 16 ands r0, r1 lsrs r0, 16 cmp r0, 0 beq _080AD630 ldr r1, _080AD62C lsls r0, 1 adds r0, r1 b _080AD636 .align 2, 0 _080AD62C: .4byte gUnknown_81185F2 _080AD630: movs r5, 0x9F lsls r5, 1 adds r0, r3, r5 _080AD636: movs r1, 0 ldrsh r2, [r0, r1] movs r5, 0x9F lsls r5, 1 adds r1, r3, r5 ldrh r4, [r1] movs r5, 0 ldrsh r0, [r1, r5] cmp r0, r2 beq _080AD654 strh r2, [r1] movs r0, 0x9E lsls r0, 1 adds r1, r3, r0 b _080AD664 _080AD654: movs r0, 0x80 lsls r0, 5 ands r0, r4 cmp r0, 0 beq _080AD668 movs r5, 0x9E lsls r5, 1 adds r1, r3, r5 _080AD664: movs r0, 0x1 strb r0, [r1] _080AD668: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_80AD610 thumb_func_start sub_80AD670 sub_80AD670: push {lr} lsls r1, 16 asrs r1, 16 adds r2, r1, 0 cmp r1, 0 bne _080AD682 movs r1, 0xE0 lsls r1, 1 adds r2, r1, 0 _080AD682: movs r1, 0xA0 lsls r1, 1 adds r0, r1 strh r2, [r0] pop {r0} bx r0 thumb_func_end sub_80AD670 thumb_func_start sub_80AD690 sub_80AD690: push {lr} adds r1, r0, 0 movs r2, 0x9E lsls r2, 1 adds r0, r1, r2 ldrb r0, [r0] cmp r0, 0 bne _080AD6AE adds r2, 0x8 adds r0, r1, r2 bl sub_80A66F8 lsls r0, 24 lsrs r0, 24 b _080AD6B0 _080AD6AE: movs r0, 0x1 _080AD6B0: pop {r1} bx r1 thumb_func_end sub_80AD690 thumb_func_start sub_80AD6B4 sub_80AD6B4: push {lr} adds r1, r0, 0 movs r2, 0xA0 lsls r2, 1 adds r0, r1, r2 movs r2, 0 ldrsh r0, [r0, r2] cmp r0, 0 bne _080AD6D6 movs r2, 0xA2 lsls r2, 1 adds r0, r1, r2 bl sub_80A671C lsls r0, 24 lsrs r0, 24 b _080AD6D8 _080AD6D6: movs r0, 0x1 _080AD6D8: pop {r1} bx r1 thumb_func_end sub_80AD6B4 thumb_func_start sub_80AD6DC sub_80AD6DC: movs r2, 0x8E lsls r2, 1 adds r0, r2 ldr r0, [r0] str r0, [r1] bx lr thumb_func_end sub_80AD6DC thumb_func_start sub_80AD6E8 sub_80AD6E8: push {lr} movs r2, 0x4 ldrsh r0, [r0, r2] bl sub_80AD0C8 pop {r0} bx r0 thumb_func_end sub_80AD6E8 thumb_func_start sub_80AD6F8 sub_80AD6F8: push {lr} movs r2, 0x4 ldrsh r0, [r0, r2] bl sub_80AD10C pop {r0} bx r0 thumb_func_end sub_80AD6F8 thumb_func_start sub_80AD708 sub_80AD708: push {lr} bl sub_80AD430 pop {r1} bx r1 thumb_func_end sub_80AD708 thumb_func_start GroundEffect_Action GroundEffect_Action: push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, _080AD754 ldr r5, [r0] movs r7, 0 movs r0, 0x1 negs r0, r0 mov r8, r0 movs r1, 0x9E lsls r1, 1 adds r6, r5, r1 _080AD72C: movs r3, 0x6 ldrsh r0, [r5, r3] cmp r0, r8 beq _080AD78A adds r4, r5, 0 adds r4, 0x38 adds r0, r4, 0 ldr r1, _080AD758 bl HandleAction lsls r0, 16 asrs r0, 16 cmp r0, 0 beq _080AD75C cmp r0, 0x4 bne _080AD768 adds r0, r7, 0 bl GroundEffect_Delete b _080AD78A .align 2, 0 _080AD754: .4byte gUnknown_3001B8C _080AD758: .4byte gUnknown_811874C _080AD75C: adds r0, r4, 0 movs r1, 0 movs r2, 0x1 ldr r3, _080AD7A8 bl sub_809D8C0 _080AD768: ldrb r0, [r6] cmp r0, 0 beq _080AD78A movs r0, 0 strb r0, [r6] movs r1, 0xA2 lsls r1, 1 adds r0, r5, r1 ldrh r2, [r6, 0x2] movs r3, 0xF8 lsls r3, 5 adds r1, r3, 0 ands r1, r2 lsls r2, 24 asrs r2, 24 bl sub_80A6EFC _080AD78A: adds r0, r7, 0x1 lsls r0, 16 asrs r7, r0, 16 movs r0, 0xE2 lsls r0, 1 adds r6, r0 adds r5, r0 cmp r7, 0xF ble _080AD72C pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080AD7A8: .4byte gUnknown_8118758 thumb_func_end GroundEffect_Action thumb_func_start sub_80AD7AC sub_80AD7AC: push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x8 ldr r0, _080AD864 ldr r6, [r0] movs r0, 0 mov r8, r0 movs r1, 0x1 negs r1, r1 mov r9, r1 movs r2, 0x90 lsls r2, 1 adds r4, r6, r2 _080AD7CA: movs r0, 0x6 ldrsh r1, [r6, r0] mov r2, r9 lsls r0, r2, 16 asrs r0, 16 cmp r1, r0 beq _080AD83C ldr r0, [r4, 0x4] ldr r1, [r6, 0x14] adds r0, r1 str r0, [sp] ldr r0, [r4, 0x8] ldr r1, [r6, 0x18] adds r0, r1 str r0, [sp, 0x4] ldr r1, [r4, 0x14] ldr r0, [r4, 0x18] adds r7, r1, r0 movs r0, 0xA2 lsls r0, 1 adds r5, r6, r0 adds r0, r5, 0 bl sub_80A66D4 lsls r0, 24 cmp r0, 0 beq _080AD818 movs r0, 0 strb r0, [r4, 0x1C] ldrh r2, [r4, 0x1E] movs r0, 0xF8 lsls r0, 5 adds r1, r0, 0 ands r1, r2 lsls r2, 24 asrs r2, 24 adds r0, r5, 0 bl sub_80A6EFC _080AD818: movs r1, 0x20 ldrsh r0, [r4, r1] cmp r0, 0 beq _080AD832 adds r1, r0, 0 movs r2, 0 ldrsb r2, [r4, r2] adds r0, r5, 0 movs r3, 0 bl sub_80A7040 movs r0, 0 strh r0, [r4, 0x20] _080AD832: adds r0, r5, 0 mov r1, sp adds r2, r7, 0 bl sub_80A7720 _080AD83C: mov r0, r8 adds r0, 0x1 lsls r0, 16 asrs r0, 16 mov r8, r0 movs r0, 0xE2 lsls r0, 1 adds r4, r0 adds r6, r0 mov r1, r8 cmp r1, 0xF ble _080AD7CA add sp, 0x8 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080AD864: .4byte gUnknown_3001B8C thumb_func_end sub_80AD7AC .align 2,0