summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/non_matching/PutItemOnSlot.inc73
-rw-r--r--src/code_0805436C.c13
2 files changed, 6 insertions, 80 deletions
diff --git a/asm/non_matching/PutItemOnSlot.inc b/asm/non_matching/PutItemOnSlot.inc
deleted file mode 100644
index af483e7b..00000000
--- a/asm/non_matching/PutItemOnSlot.inc
+++ /dev/null
@@ -1,73 +0,0 @@
- .syntax unified
-
- .text
-
- push {r4, r5, lr}
- adds r5, r0, #0
- cmp r5, #0x46
- bhi _080543A8
- movs r0, #0
- movs r1, #1
- bl sub_0807CAA0
-_080543A8:
- subs r0, r5, #1
- cmp r0, #0x1e
- bhi _08054410
- movs r1, #2
- ldr r2, _080543C0 @ =gSave
- adds r0, r2, #0
- adds r0, #0xb4
- ldrb r0, [r0]
- cmp r0, #0
- bne _080543C4
- movs r1, #0
- b _080543D0
- .align 2, 0
-_080543C0: .4byte gSave
-_080543C4:
- adds r0, r2, #0
- adds r0, #0xb5
- ldrb r0, [r0]
- cmp r0, #0
- bne _080543D0
- movs r1, #1
-_080543D0:
- cmp r1, #2
- bne _0805440A
- ldr r3, _080543F0 @ =gUnk_080FD5B4
- lsls r0, r5, #3
- adds r0, r0, r3
- ldrb r4, [r0]
- adds r0, r2, #0
- adds r0, #0xb4
- ldrb r0, [r0]
- lsls r0, r0, #3
- adds r0, r0, r3
- ldrb r0, [r0]
- cmp r4, r0
- bne _080543F4
- movs r1, #0
- b _08054406
- .align 2, 0
-_080543F0: .4byte gUnk_080FD5B4
-_080543F4:
- adds r0, r2, #0
- adds r0, #0xb5
- ldrb r0, [r0]
- lsls r0, r0, #3
- adds r0, r0, r3
- ldrb r0, [r0]
- cmp r4, r0
- bne _08054406
- movs r1, #1
-_08054406:
- cmp r1, #2
- beq _08054410
-_0805440A:
- adds r0, r5, #0
- bl ForceEquipItem
-_08054410:
- pop {r4, r5, pc}
- .align 2, 0
-
- .syntax divided
diff --git a/src/code_0805436C.c b/src/code_0805436C.c
index a2352185..f463aabb 100644
--- a/src/code_0805436C.c
+++ b/src/code_0805436C.c
@@ -44,13 +44,13 @@ u32 IsItemEquipped(u32 itemID) {
return itemSlot;
}
-NONMATCH("asm/non_matching/PutItemOnSlot.inc", void PutItemOnSlot(u32 itemID)) {
- // reg-alloc
+void PutItemOnSlot(u32 itemID) {
u32 itemSlot;
- if (itemID < 0x47) {
+ register u32 itemID2 asm ("r5") = itemID;
+ if (itemID2 < 0x47) {
sub_0807CAA0(0, 1);
}
- if (itemID - 1 < 0x1f) {
+ if (itemID2 - 1 < 0x1f) {
itemSlot = 2;
if (gSave.stats.itemOnA == 0) {
itemSlot = 0;
@@ -58,7 +58,7 @@ NONMATCH("asm/non_matching/PutItemOnSlot.inc", void PutItemOnSlot(u32 itemID)) {
itemSlot = 1;
}
if (itemSlot == 2) {
- u8 temp = gUnk_080FD5B4[itemID].unk;
+ u8 temp = gUnk_080FD5B4[itemID2].unk;
if (temp == gUnk_080FD5B4[gSave.stats.itemOnA].unk) {
itemSlot = 0;
} else {
@@ -70,10 +70,9 @@ NONMATCH("asm/non_matching/PutItemOnSlot.inc", void PutItemOnSlot(u32 itemID)) {
return;
}
}
- ForceEquipItem(itemID, itemSlot);
+ ForceEquipItem(itemID2, itemSlot);
}
}
-END_NONMATCH
ASM_FUNC("asm/non_matching/ForceEquipItem.inc", void ForceEquipItem(u32 itemID, u8 itemSlot))