From a929271ae0ccee4e7b8d944a489753e0a72bea13 Mon Sep 17 00:00:00 2001 From: Zur3l <90565581+Zur3l@users.noreply.github.com> Date: Sat, 11 Jul 2026 16:00:10 -0400 Subject: [PATCH] Decomp AreItemsEquivalent --- .../{main_0200D834.inc => main_0200D894.inc} | 0 asm/{main_0200D834.s => main_0200D894.s} | 30 +------------------ include/main_0200D81C.h | 1 + main.lsf | 2 +- src/main_0200D81C.c | 17 +++++++++++ 5 files changed, 20 insertions(+), 30 deletions(-) rename asm/include/{main_0200D834.inc => main_0200D894.inc} (100%) rename asm/{main_0200D834.s => main_0200D894.s} (97%) diff --git a/asm/include/main_0200D834.inc b/asm/include/main_0200D894.inc similarity index 100% rename from asm/include/main_0200D834.inc rename to asm/include/main_0200D894.inc diff --git a/asm/main_0200D834.s b/asm/main_0200D894.s similarity index 97% rename from asm/main_0200D834.s rename to asm/main_0200D894.s index 28d05ccb..022c3712 100644 --- a/asm/main_0200D834.s +++ b/asm/main_0200D894.s @@ -1,36 +1,8 @@ .include "asm/macros.inc" - .include "main_0200D834.inc" + .include "main_0200D894.inc" .text - arm_func_start AreItemsEquivalent -AreItemsEquivalent: ; 0x0200D834 - ldrb ip, [r0] - ldrb r3, [r1] - and ip, ip, r2 - and r2, r3, r2 - cmp ip, r2 - movne r0, #0 - bxne lr - ldrb r3, [r0, #1] - ldrb r2, [r1, #1] - cmp r3, r2 - movne r0, #0 - bxne lr - ldrh r3, [r0, #2] - ldrh r2, [r1, #2] - cmp r3, r2 - movne r0, #0 - bxne lr - ldrsh r2, [r0, #4] - ldrsh r0, [r1, #4] - cmp r2, r0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end AreItemsEquivalent - arm_func_start sub_0200D894 sub_0200D894: ; 0x0200D894 mov r1, #0 diff --git a/include/main_0200D81C.h b/include/main_0200D81C.h index 17291544..8b118dcf 100644 --- a/include/main_0200D81C.h +++ b/include/main_0200D81C.h @@ -4,5 +4,6 @@ #include "item.h" void ItemZInit(struct item* item); +bool8 AreItemsEquivalent(struct item* item1, struct item* item2, s32 bitmask); #endif //PMDSKY_MAIN_0200D81C_H diff --git a/main.lsf b/main.lsf index ab8437ec..0f3c3e80 100644 --- a/main.lsf +++ b/main.lsf @@ -60,7 +60,7 @@ Static main Object src/item_util_4.o Object asm/main_0200D1F0.o Object src/main_0200D81C.o - Object asm/main_0200D834.o + Object asm/main_0200D894.o Object src/item_util_1.o Object asm/main_0200EB30.o Object src/main_0200ECFC.o diff --git a/src/main_0200D81C.c b/src/main_0200D81C.c index d967f1ef..1537cfec 100644 --- a/src/main_0200D81C.c +++ b/src/main_0200D81C.c @@ -7,3 +7,20 @@ void ItemZInit(struct item* item) item->flags = 0; item->held_by = 0; } + +bool8 AreItemsEquivalent(struct item* item1, struct item* item2, s32 bitmask) +{ + if ((item1->flags & bitmask) != (item2->flags & bitmask)) { + return FALSE; + } + if (item1->held_by != item2->held_by) { + return FALSE; + } + if (item1->quantity != item2->quantity) { + return FALSE; + } + if (item1->id != item2->id) { + return FALSE; + } + return TRUE; +}