From d01fcb4b9c4b4dfc0def71aa5ecb468ba45ab210 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 12 Mar 2025 09:49:31 +0100 Subject: [PATCH] code_8045A00 decompiled --- asm/code_8045A00.s | 705 -------------------------------------------- ld_script.txt | 1 - src/code_8045A00.c | 172 +++++++++++ src/dungeon_items.c | 8 +- 4 files changed, 174 insertions(+), 712 deletions(-) delete mode 100644 asm/code_8045A00.s diff --git a/asm/code_8045A00.s b/asm/code_8045A00.s deleted file mode 100644 index a64771021..000000000 --- a/asm/code_8045A00.s +++ /dev/null @@ -1,705 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - - - thumb_func_start sub_8046734 -sub_8046734: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - mov r8, r0 - ldr r0, _08046858 - ldr r0, [r0] - ldr r2, _0804685C - adds r0, r2 - ldrb r0, [r0] - str r0, [sp, 0xC] - movs r0, 0 - ldrsh r2, [r1, r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r0, 0x4 - lsls r4, r0, 8 - movs r2, 0x2 - ldrsh r1, [r1, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x4 - lsls r5, r0, 8 - mov r1, r8 - ldr r0, [r1, 0xC] - subs r0, r4 - cmp r0, 0 - bge _08046776 - negs r0, r0 -_08046776: - mov r2, r8 - ldr r2, [r2, 0x10] - mov r9, r2 - cmp r0, 0xB - bgt _0804678C - subs r0, r2, r5 - cmp r0, 0 - bge _08046788 - negs r0, r0 -_08046788: - cmp r0, 0xB - ble _08046822 -_0804678C: - movs r0, 0 - mov r10, r0 - movs r1, 0 - str r1, [sp, 0x10] - mov r2, r8 - ldr r0, [r2, 0xC] - str r0, [sp, 0x4] - mov r1, r9 - str r1, [sp, 0x8] - subs r0, r4, r0 - movs r1, 0x18 - bl __divsi3 - adds r6, r0, 0 - mov r2, r9 - subs r0, r5, r2 - movs r1, 0x18 - bl __divsi3 - adds r7, r0, 0 - movs r0, 0 - mov r9, r0 - mov r1, sp - adds r1, 0x4 - str r1, [sp, 0x14] -_080467BE: - ldr r0, [sp, 0x4] - adds r0, r6 - str r0, [sp, 0x4] - ldr r2, [sp, 0x14] - ldr r0, [r2, 0x4] - adds r0, r7 - str r0, [r2, 0x4] - ldr r0, [sp, 0x10] - bl sin_4096 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - mov r0, r8 - str r1, [r0, 0x1C] - add r1, sp, 0x4 - bl sub_804535C - mov r1, r10 - lsls r3, r1, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - mov r0, r8 - ldr r1, [sp, 0xC] - movs r2, 0 - bl sub_80462AC - movs r0, 0x13 - bl DungeonRunFrameActions - ldr r2, [sp, 0x10] - adds r2, 0x55 - str r2, [sp, 0x10] - movs r0, 0x3 - mov r1, r9 - ands r0, r1 - cmp r0, 0 - bne _08046810 - movs r2, 0x1 - add r10, r2 -_08046810: - movs r0, 0x7 - mov r1, r10 - ands r1, r0 - mov r10, r1 - movs r2, 0x1 - add r9, r2 - mov r0, r9 - cmp r0, 0x17 - ble _080467BE -_08046822: - mov r0, r8 - adds r1, r4, 0 - adds r2, r5, 0 - bl SetEntityPixelPos - movs r0, 0 - mov r1, r8 - str r0, [r1, 0x1C] - str r0, [sp] - mov r0, r8 - ldr r1, [sp, 0xC] - movs r2, 0x1 - movs r3, 0xFF - bl sub_80462AC - movs r0, 0x13 - bl DungeonRunFrameActions - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08046858: .4byte gDungeon -_0804685C: .4byte 0x00018210 - thumb_func_end sub_8046734 - - thumb_func_start sub_8046860 -sub_8046860: - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r1, 0 - adds r5, r2, 0 - str r3, [sp] - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_804687C - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8046860 - - thumb_func_start sub_804687C -sub_804687C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08046970 - add sp, r4 - ldr r5, _08046974 - add r5, sp - str r0, [r5] - movs r0, 0xA5 - lsls r0, 3 - add r0, sp - str r1, [r0] - mov r8, r2 - ldr r1, _08046978 - add r1, sp - str r3, [r1] - movs r1, 0 - movs r7, 0x1D - ldr r0, _0804697C - add r0, sp -_080468A8: - strb r1, [r0] - subs r0, 0x1 - subs r7, 0x1 - cmp r7, 0 - bge _080468A8 - movs r7, 0 - movs r2, 0xAD - lsls r2, 3 - add r2, sp - ldr r2, [r2] - cmp r7, r2 - blt _080468C2 - b _080469DE -_080468C2: - ldr r3, _08046980 - mov r9, r3 - ldr r5, _08046984 - movs r0, 0 - ldrsh r5, [r5, r0] - ldr r0, _08046988 - add r0, sp - str r5, [r0] -_080468D2: - mov r1, r8 - ldrh r0, [r1] - ldr r1, _0804698C - ands r4, r1 - orrs r4, r0 - mov r2, r8 - ldrh r0, [r2, 0x2] - lsls r0, 16 - mov r3, r9 - ands r4, r3 - orrs r4, r0 - movs r5, 0 - adds r0, r7, 0x1 - mov r10, r0 - ldr r1, _08046984 - ldr r2, _08046988 - add r2, sp - ldr r2, [r2] - cmp r2, 0x63 - beq _080469B0 - ldr r3, _08046990 - add r3, sp - ldr r0, _08046994 - add r0, sp - str r3, [r0] -_08046904: - ldr r0, _08046998 - add r0, sp - adds r6, r0, r5 - ldrb r0, [r6] - cmp r0, 0 - bne _0804699C - lsls r2, r5, 2 - adds r2, r1 - ldrh r0, [r2] - mov r1, r8 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _0804698C - ands r4, r1 - orrs r4, r0 - ldrh r0, [r2, 0x2] - mov r2, r8 - ldrh r2, [r2, 0x2] - adds r0, r2 - lsls r0, 16 - mov r3, r9 - ands r4, r3 - orrs r4, r0 - lsls r0, r4, 16 - asrs r0, 16 - asrs r1, r4, 16 - bl GetTile - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0804699C - movs r3, 0x80 - lsls r3, 2 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0804699C - ldr r0, [r2, 0x14] - cmp r0, 0 - bne _0804699C - lsls r0, r7, 2 - ldr r5, _08046994 - add r5, sp - ldr r5, [r5] - adds r0, r5, r0 - str r4, [r0] - movs r0, 0x1 - strb r0, [r6] - b _080469CE - .align 2, 0 -_08046970: .4byte 0xfffffab8 -_08046974: .4byte 0x00000524 -_08046978: .4byte 0x0000052c -_0804697C: .4byte 0x00000521 -_08046980: .4byte 0x0000ffff -_08046984: .4byte gUnknown_80F4468 -_08046988: .4byte 0x00000534 -_0804698C: .4byte 0xffff0000 -_08046990: .4byte 0x0000048c -_08046994: .4byte 0x00000544 -_08046998: .4byte 0x00000504 -_0804699C: - adds r5, 0x1 - cmp r5, 0x1D - bgt _080469B0 - lsls r0, r5, 2 - ldr r1, _08046A18 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x63 - bne _08046904 -_080469B0: - movs r3, 0 - cmp r3, 0 - bne _080469CE - ldr r1, _08046A1C - add r1, sp - lsls r0, r7, 2 - adds r1, r0 - ldrh r2, [r1] - mov r0, r9 - orrs r0, r2 - strh r0, [r1] - ldrh r2, [r1, 0x2] - mov r0, r9 - orrs r0, r2 - strh r0, [r1, 0x2] -_080469CE: - mov r7, r10 - movs r5, 0xAD - lsls r5, 3 - add r5, sp - ldr r5, [r5] - cmp r7, r5 - bge _080469DE - b _080468D2 -_080469DE: - movs r1, 0 - mov r9, r1 - movs r7, 0 - movs r0, 0xAD - lsls r0, 3 - add r0, sp - ldr r0, [r0] - cmp r7, r0 - blt _080469F2 - b _08046B0A -_080469F2: - movs r2, 0 - mov r8, r2 -_080469F6: - ldr r0, _08046A1C - add r0, sp - lsls r2, r7, 2 - adds r3, r0, r2 - movs r4, 0 - ldrsh r0, [r3, r4] - cmp r0, 0 - bge _08046A20 - movs r0, 0x74 - muls r0, r7 - add r0, sp - adds r0, 0x4 - mov r5, r8 - str r5, [r0] - movs r0, 0x1 - mov r9, r0 - b _08046AFA - .align 2, 0 -_08046A18: .4byte gUnknown_80F4468 -_08046A1C: .4byte 0x0000048c -_08046A20: - movs r0, 0x74 - adds r6, r7, 0 - muls r6, r0 - mov r4, sp - adds r4, r6 - adds r4, 0x4 - movs r0, 0x3 - str r0, [r4] - adds r0, r4, 0 - adds r0, 0x24 - mov r1, r8 - strb r1, [r0] - adds r1, r4, 0 - adds r1, 0x20 - movs r0, 0x1 - strb r0, [r1] - adds r0, r4, 0 - adds r0, 0x22 - mov r5, r8 - strb r5, [r0] - add r0, sp, 0x74 - adds r0, r6 - ldr r1, _08046B2C - add r1, sp - ldr r1, [r1] - adds r2, r1, r2 - str r2, [r0] - add r0, sp, 0x8 - adds r0, r6 - ldr r1, [r3] - str r1, [r0] - movs r2, 0xA5 - lsls r2, 3 - add r2, sp - ldr r2, [r2] - movs r5, 0 - ldrsh r0, [r2, r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, 0x4 - lsls r1, 8 - movs r5, 0x2 - ldrsh r0, [r2, r5] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 3 - adds r2, 0x4 - lsls r2, 8 - adds r0, r4, 0 - movs r5, 0xA8 - lsls r5, 3 - add r5, sp - str r3, [r5] - bl SetEntityPixelPos - mov r0, r8 - strh r0, [r4, 0x26] - ldr r4, _08046B30 - add r4, sp - lsls r5, r7, 3 - adds r4, r5 - movs r1, 0xA8 - lsls r1, 3 - add r1, sp - ldr r3, [r1] - movs r2, 0 - ldrsh r1, [r3, r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x4 - lsls r0, 8 - add r1, sp, 0x10 - adds r1, r6 - ldr r1, [r1] - subs r0, r1 - movs r1, 0x18 - movs r2, 0xA8 - lsls r2, 3 - add r2, sp - str r3, [r2] - bl __divsi3 - str r0, [r4] - movs r4, 0x97 - lsls r4, 3 - add r4, sp - adds r4, r5 - movs r5, 0xA8 - lsls r5, 3 - add r5, sp - ldr r3, [r5] - movs r0, 0x2 - ldrsh r1, [r3, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r0, 0x4 - lsls r0, 8 - add r1, sp, 0x14 - adds r1, r6 - ldr r1, [r1] - subs r0, r1 - movs r1, 0x18 - bl __divsi3 - str r0, [r4] - movs r1, 0x1 -_08046AFA: - adds r7, 0x1 - movs r2, 0xAD - lsls r2, 3 - add r2, sp - ldr r2, [r2] - cmp r7, r2 - bge _08046B0A - b _080469F6 -_08046B0A: - cmp r1, 0 - bne _08046B54 - movs r3, 0xAD - lsls r3, 3 - add r3, sp - ldr r3, [r3] - cmp r3, 0x1 - ble _08046B3C - ldr r0, _08046B34 - ldr r1, [r0] - ldr r4, _08046B38 - add r4, sp - ldr r0, [r4] - bl LogMessageByIdWithPopupCheckUser - b _08046C7C - .align 2, 0 -_08046B2C: .4byte 0x0000052c -_08046B30: .4byte 0x000004b4 -_08046B34: .4byte gAllItemsLost -_08046B38: .4byte 0x00000524 -_08046B3C: - ldr r0, _08046B4C - ldr r1, [r0] - ldr r5, _08046B50 - add r5, sp - ldr r0, [r5] - bl LogMessageByIdWithPopupCheckUser - b _08046C7C - .align 2, 0 -_08046B4C: .4byte gItemLost -_08046B50: .4byte 0x00000524 -_08046B54: - mov r0, r9 - cmp r0, 0 - beq _08046B68 - ldr r0, _08046C90 - ldr r1, [r0] - ldr r2, _08046C94 - add r2, sp - ldr r0, [r2] - bl LogMessageByIdWithPopupCheckUser -_08046B68: - movs r3, 0 - mov r9, r3 - ldr r0, _08046C98 - ldr r0, [r0] - ldr r4, _08046C9C - adds r0, r4 - ldrb r0, [r0] - movs r5, 0xA6 - lsls r5, 3 - add r5, sp - str r0, [r5] - mov r10, r3 - movs r6, 0 -_08046B82: - movs r7, 0 - mov r0, r10 - adds r0, 0x55 - movs r1, 0xA7 - lsls r1, 3 - add r1, sp - str r0, [r1] - adds r2, r6, 0x1 - ldr r3, _08046CA0 - add r3, sp - str r2, [r3] - movs r4, 0xAD - lsls r4, 3 - add r4, sp - ldr r4, [r4] - cmp r7, r4 - bge _08046C14 - mov r5, r9 - lsls r5, 24 - mov r8, r5 -_08046BAA: - movs r0, 0x74 - adds r5, r7, 0 - muls r5, r0 - mov r4, sp - adds r4, r5 - adds r4, 0x4 - adds r0, r4, 0 - bl EntityIsValid - lsls r0, 24 - cmp r0, 0 - beq _08046C06 - ldr r0, _08046CA4 - add r0, sp - lsls r2, r7, 3 - adds r0, r2 - ldr r1, [r0] - movs r0, 0x97 - lsls r0, 3 - add r0, sp - adds r0, r2 - ldr r2, [r0] - adds r0, r4, 0 - bl IncreaseEntityPixelPos - mov r0, r10 - bl sin_4096 - add r2, sp, 0x20 - adds r2, r5 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - str r1, [r2] - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0xA6 - lsls r2, 3 - add r2, sp - ldr r1, [r2] - movs r2, 0x1 - mov r4, r8 - lsrs r3, r4, 24 - bl sub_80462AC -_08046C06: - adds r7, 0x1 - movs r5, 0xAD - lsls r5, 3 - add r5, sp - ldr r5, [r5] - cmp r7, r5 - blt _08046BAA -_08046C14: - movs r0, 0x13 - bl DungeonRunFrameActions - movs r0, 0xA7 - lsls r0, 3 - add r0, sp - ldr r0, [r0] - mov r10, r0 - movs r0, 0x3 - ands r0, r6 - cmp r0, 0 - bne _08046C30 - movs r1, 0x1 - add r9, r1 -_08046C30: - movs r0, 0x7 - mov r2, r9 - ands r2, r0 - mov r9, r2 - ldr r3, _08046CA0 - add r3, sp - ldr r6, [r3] - cmp r6, 0x17 - ble _08046B82 - movs r4, 0xAD - lsls r4, 3 - add r4, sp - ldr r4, [r4] - cmp r4, 0 - ble _08046C7C - ldr r0, _08046CA8 - add r0, sp - ldr r5, [r0] - ldr r4, _08046CAC - add r4, sp - movs r1, 0xAD - lsls r1, 3 - add r1, sp - ldr r7, [r1] -_08046C60: - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - blt _08046C72 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80460F8 -_08046C72: - adds r5, 0x4 - adds r4, 0x4 - subs r7, 0x1 - cmp r7, 0 - bne _08046C60 -_08046C7C: - movs r3, 0xA9 - lsls r3, 3 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08046C90: .4byte gSeveralItemsLost -_08046C94: .4byte 0x00000524 -_08046C98: .4byte gDungeon -_08046C9C: .4byte 0x00018210 -_08046CA0: .4byte 0x0000053c -_08046CA4: .4byte 0x000004b4 -_08046CA8: .4byte 0x0000052c -_08046CAC: .4byte 0x0000048c - thumb_func_end sub_804687C - - .align 2, 0 diff --git a/ld_script.txt b/ld_script.txt index 2ae9cabea..e1d58f851 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -210,7 +210,6 @@ SECTIONS { src/code_80450F8.o(.text); src/dungeon_visibility.o(.text); src/code_8045A00.o(.text); - asm/code_8045A00.o(.text); src/dungeon_items.o(.text); asm/code_8046CE4.o(.text); src/code_8048480.o(.text); diff --git a/src/code_8045A00.c b/src/code_8045A00.c index c84ea6c05..497396ad6 100644 --- a/src/code_8045A00.c +++ b/src/code_8045A00.c @@ -16,7 +16,9 @@ #include "structs/map.h" #include "structs/str_dungeon.h" #include "trap.h" +#include "math.h" #include "code_80450F8.h" +#include "dungeon_util.h" #include "structs/str_item_text.h" extern u8 *gUnknown_80FE6F4[]; @@ -605,4 +607,174 @@ void sub_804652C(Entity *entity1, Entity *entity2, Item *item, bool8 a3, Dungeon } } +extern void DungeonRunFrameActions(u32); + +void sub_8046734(Entity *entity, DungeonPos *pos) +{ + PixelPos posPixel; + PixelPos calcPixelPos; + bool8 hallucinating = gDungeon->unk181e8.hallucinating; + + posPixel.x = ((pos->x * 24) + 4) << 8; + posPixel.y = ((pos->y * 24) + 4) << 8; + if (abs(entity->pixelPos.x - posPixel.x) > 11 || abs(entity->pixelPos.y - posPixel.y) > 11) { + s32 i; + PixelPos add; + s32 unk = 0; // Direction? + s32 sinVal = 0; + + calcPixelPos.x = entity->pixelPos.x; + calcPixelPos.y = entity->pixelPos.y; + + add.x = (posPixel.x - calcPixelPos.x) / 24; + add.y = (posPixel.y - calcPixelPos.y) / 24; + for (i = 0; i < 24; i++) { + calcPixelPos.x += add.x; + calcPixelPos.y += add.y; + entity->unk1C.raw = sin_4096(sinVal) * 12; + sub_804535C(entity, &calcPixelPos); + sub_80462AC(entity, hallucinating, 0, unk, 0); + DungeonRunFrameActions(0x13); + sinVal += 85; + if ((i & 3) == 0) { + unk++; + } + unk &= 7; + } + } + + SetEntityPixelPos(entity, posPixel.x, posPixel.y); + entity->unk1C.raw = 0; + sub_80462AC(entity, hallucinating, 1, 0xFF, 0); + DungeonRunFrameActions(0x13); +} + +extern void sub_804687C(Entity *entity, DungeonPos *pos1, DungeonPos *pos2, Item *item, s32 a4); + +void sub_8046860(Entity *entity, DungeonPos *pos, Item *item, s32 a4) +{ + sub_804687C(entity, pos, pos, item, a4); +} + +extern const u8 *gSeveralItemsLost; +extern const u8 *gItemLost; +extern const u8 *gAllItemsLost; + +void sub_804687C(Entity *entity, DungeonPos *pos1, DungeonPos *pos2, Item *item, s32 count) +{ + Entity itemEntities[10]; + DungeonPos targetTilePos[10]; + PixelPos itemVelocity[10]; + u8 targetTileUsed[30]; + s32 sinVal; + s32 i; + bool8 r1, r9; + + for (i = 0; i < 30; i++) { + targetTileUsed[i] = 0; + } + + for (i = 0; i < count; i++) { + s32 j; + bool8 foundTile = FALSE; + DungeonPos pos; + + pos.x = pos2->x; + pos.y = pos2->y; + + for (j = 0; j < 30; j++) { + if (gUnknown_80F4468[j].x == 99) + break; + if (!targetTileUsed[j]) { + const Tile *tile; + + pos.x = pos2->x + gUnknown_80F4468[j].x; + pos.y = pos2->y + gUnknown_80F4468[j].y; + + tile = GetTile(pos.x, pos.y); + if (GetTerrainType(tile) != TERRAIN_TYPE_WALL && !(tile->terrainType & TERRAIN_TYPE_STAIRS) && tile->object == NULL) { + targetTilePos[i] = pos; + targetTileUsed[j] = TRUE; + foundTile = TRUE; + break; + } + } + } + + if (!foundTile) { + targetTilePos[i].x = -1; + targetTilePos[i].y = -1; + } + } + + r1 = FALSE; + r9 = FALSE; + for (i = 0; i < count; i++) { + if (targetTilePos[i].x < 0) { + itemEntities[i].type = ENTITY_NOTHING; + r9 = TRUE; + } + else { + s32 x, y; + + itemEntities[i].type = ENTITY_ITEM; + itemEntities[i].unk24 = 0; + itemEntities[i].isVisible = TRUE; + itemEntities[i].unk22 = 0; + itemEntities[i].axObj.info.item = &item[i]; + itemEntities[i].pos = targetTilePos[i]; + x = ((pos1->x * 24) + 4) << 8; + y = ((pos1->y * 24) + 4) << 8; + SetEntityPixelPos(&itemEntities[i], x, y); + itemEntities[i].spawnGenID = 0; + itemVelocity[i].x = ((((targetTilePos[i].x * 24) + 4) << 8) - (itemEntities[i].pixelPos.x)) / 24; + itemVelocity[i].y = ((((targetTilePos[i].y * 24) + 4) << 8) - (itemEntities[i].pixelPos.y)) / 24; + r1 = TRUE; + } + } + + if (!r1) { + if (count > 1) { + LogMessageByIdWithPopupCheckUser(entity, gAllItemsLost); + } + else { + LogMessageByIdWithPopupCheckUser(entity, gItemLost); + } + } + else { + s32 counter; + s32 dirMaybe; + bool8 hallucinating; + + if (r9) { + LogMessageByIdWithPopupCheckUser(entity, gSeveralItemsLost); + } + + dirMaybe = 0; + hallucinating = gDungeon->unk181e8.hallucinating; + sinVal = 0; + for (counter = 0; counter < 24; counter++) { + for (i = 0; i < count; i++) { + if (EntityIsValid(&itemEntities[i])) { + IncreaseEntityPixelPos(&itemEntities[i], itemVelocity[i].x, itemVelocity[i].y); + itemEntities[i].unk1C.raw = sin_4096(sinVal) * 12; + sub_80462AC(&itemEntities[i], hallucinating, 1, dirMaybe, 0); + } + } + DungeonRunFrameActions(0x13); + sinVal += 85; + if ((counter & 3) == 0) { + dirMaybe++; + } + dirMaybe &= 7; + } + + for (i = 0; i < count; i++) { + if (targetTilePos[i].x >= 0) { + sub_80460F8(&targetTilePos[i], &item[i], TRUE); + } + } + } +} + // diff --git a/src/dungeon_items.c b/src/dungeon_items.c index 1d894a191..d9bcbddf8 100644 --- a/src/dungeon_items.c +++ b/src/dungeon_items.c @@ -292,15 +292,11 @@ void sub_8047104(void) if(item->id == ITEM_POKE) { AddToTeamMoney(GetMoneyValue(item)); - item->id = 0; - item->quantity = 0; - item->flags = 0; + ZeroOutItem(item); } if(item->flags & ITEM_FLAG_IN_SHOP) { - item->id = 0; - item->quantity = 0; - item->flags = 0; + ZeroOutItem(item); } } }