#include "asm/constants/gba_constants.inc" #include "asm/macros.inc" .syntax unified .text thumb_func_start HandlePokemonTrap HandlePokemonTrap: push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x30 str r0, [sp, 0x14] adds r5, r1, 0 movs r0, 0 str r0, [sp, 0x20] ldr r6, _080808D0 ldr r0, [r6] ldr r1, _080808D4 adds r0, r1 ldrb r4, [r0] bl IsBossFight lsls r0, 24 cmp r0, 0 beq _080808DC ldr r0, _080808D8 b _08080A2E .align 2, 0 _080808D0: .4byte gDungeon _080808D4: .4byte 0x00018209 _080808D8: .4byte gUnknown_80FED08 _080808DC: cmp r4, 0 bne _080808E2 movs r4, 0x2 _080808E2: movs r2, 0 ldrsh r0, [r5, r2] movs r3, 0x2 ldrsh r1, [r5, r3] bl GetTile ldrb r1, [r0, 0x9] cmp r1, 0xFF bne _0808090A movs r0, 0 ldrsh r1, [r5, r0] subs r2, r1, r4 str r2, [sp, 0x18] movs r3, 0x2 ldrsh r0, [r5, r3] subs r2, r0, r4 adds r1, r4 mov r10, r1 adds r0, r4 b _08080934 _0808090A: lsls r0, r1, 3 subs r0, r1 lsls r0, 2 ldr r1, _08080994 adds r0, r1 ldr r1, [r6] adds r1, r0 movs r2, 0x2 ldrsh r0, [r1, r2] subs r0, 0x1 str r0, [sp, 0x18] movs r3, 0x4 ldrsh r0, [r1, r3] subs r2, r0, 0x1 movs r3, 0x6 ldrsh r0, [r1, r3] adds r0, 0x1 mov r10, r0 movs r3, 0x8 ldrsh r0, [r1, r3] adds r0, 0x1 _08080934: str r0, [sp, 0x1C] adds r7, r2, 0 ldr r0, [sp, 0x1C] cmp r7, r0 bgt _08080A26 _0808093E: ldr r6, [sp, 0x18] adds r1, r7, 0x1 str r1, [sp, 0x24] cmp r6, r10 bgt _08080A1E mov r5, sp _0808094A: adds r0, r6, 0 adds r1, r7, 0 bl GetTile adds r4, r0, 0 ldr r0, [r4, 0x14] adds r2, r6, 0x1 mov r9, r2 cmp r0, 0 beq _08080A18 bl GetEntityType cmp r0, 0x3 bne _08080A18 ldr r0, [r4, 0x14] bl GetItemData ldrb r1, [r0] movs r0, 0x2 ands r0, r1 cmp r0, 0 bne _08080A18 movs r0, 0xBE lsls r0, 1 strh r0, [r5] movs r2, 0 mov r4, sp _08080980: ldr r0, _08080998 ldr r0, [r0] ldr r3, _0808099C adds r0, r3 ldrb r0, [r0] cmp r0, 0 beq _080809A0 movs r0, 0xBE lsls r0, 1 b _080809AE .align 2, 0 _08080994: .4byte 0x000104c4 _08080998: .4byte gDungeon _0808099C: .4byte 0x0000066e _080809A0: movs r0, 0 str r2, [sp, 0x28] bl sub_803D970 lsls r0, 16 asrs r0, 16 ldr r2, [sp, 0x28] _080809AE: movs r1, 0 mov r8, r1 movs r3, 0 strh r0, [r4] movs r1, 0 ldrsh r0, [r4, r1] movs r1, 0 str r2, [sp, 0x28] str r3, [sp, 0x2C] bl sub_806AA0C lsls r0, 24 ldr r2, [sp, 0x28] ldr r3, [sp, 0x2C] cmp r0, 0 bne _080809D4 adds r2, 0x1 cmp r2, 0x63 ble _08080980 _080809D4: movs r2, 0 ldrsh r0, [r5, r2] movs r1, 0 str r3, [sp, 0x2C] bl sub_806AA0C lsls r0, 24 ldr r3, [sp, 0x2C] cmp r0, 0 beq _08080A10 strh r3, [r5, 0x8] mov r0, r8 strb r0, [r5, 0x2] strh r6, [r5, 0xC] strh r7, [r5, 0xE] str r3, [sp, 0x4] strb r0, [r5, 0x10] mov r0, sp movs r1, 0x1 bl sub_806B7F8 cmp r0, 0 beq _08080A10 add r0, sp, 0xC movs r1, 0 bl sub_80461C8 ldr r1, [sp, 0x20] adds r1, 0x1 str r1, [sp, 0x20] _08080A10: adds r0, r6, 0 adds r1, r7, 0 bl sub_80402AC _08080A18: mov r6, r9 cmp r6, r10 ble _0808094A _08080A1E: ldr r7, [sp, 0x24] ldr r2, [sp, 0x1C] cmp r7, r2 ble _0808093E _08080A26: ldr r3, [sp, 0x20] cmp r3, 0 beq _08080A3C ldr r0, _08080A38 _08080A2E: ldr r1, [r0] ldr r0, [sp, 0x14] bl TryDisplayDungeonLoggableMessage b _08080A46 .align 2, 0 _08080A38: .4byte gUnknown_80FDACC _08080A3C: ldr r0, _08080A58 ldr r1, [r0] ldr r0, [sp, 0x14] bl TryDisplayDungeonLoggableMessage _08080A46: add sp, 0x30 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08080A58: .4byte gUnknown_80FDAE4 thumb_func_end HandlePokemonTrap .align 2, 0