From 0ab53a2adf0c5b97acb742f9ee4bec00c207ada8 Mon Sep 17 00:00:00 2001 From: Aetias Date: Sun, 31 Dec 2023 14:26:42 +0100 Subject: [PATCH] 93% match `Inventory::Load` --- asm/global.inc | 4 +- asm/main.s | 4 +- asm/ov00/include/ov00_02079d28.inc | 2 +- asm/ov00/include/ov00_020a03e4.inc | 2 +- asm/ov00/include/ov00_020b4940.inc | 26 +-- asm/ov00/include/ov00_020c9a68.inc | 2 +- asm/ov00/inventory/Inventory_Load.inc | 240 +++++++++++++++++++++++ asm/ov00/inventory/inventory.s | 264 +------------------------- asm/ov00/ov00_02079d28.s | 2 +- asm/ov00/ov00_020a03e4.s | 2 +- asm/ov00/ov00_020b4940.s | 26 +-- asm/ov00/ov00_020c9a68.s | 2 +- asm/ov02.s | 56 +++--- asm/ov03.s | 26 +-- asm/ov04.s | 2 +- asm/ov05.s | 8 +- asm/ov14.s | 28 +-- asm/ov15.s | 58 +++--- asm/ov21.s | 6 +- asm/ov26.s | 10 +- asm/ov28.s | 2 +- asm/ov30.s | 2 +- asm/ov31.s | 14 +- asm/ov40.s | 6 +- asm/ov41.s | 2 +- asm/ov49.s | 2 +- docs/inline_assembler.md | 4 +- include/Inventory.hpp | 6 + include/global.h | 2 + src/Inventory.cpp | 75 ++++++++ 30 files changed, 480 insertions(+), 405 deletions(-) create mode 100644 asm/ov00/inventory/Inventory_Load.inc diff --git a/asm/global.inc b/asm/global.inc index 37a2819b..09579525 100644 --- a/asm/global.inc +++ b/asm/global.inc @@ -264294,7 +264294,7 @@ .extern func_ov00_020ad1c6 .extern func_ov00_020ad1e4 .extern func_ov00_020ad23c -.extern func_ov00_020ad244 +.extern _ZN9Inventory4LoadEPK13SaveInventory .extern func_ov00_020ad274 .extern func_ov00_020ad276 .extern func_ov00_020ad282 @@ -264364,7 +264364,7 @@ .extern func_ov00_020ad9e8 .extern func_ov00_020ada24 .extern func_ov00_020ada48 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ada98 .extern func_ov00_020adabc .extern func_ov00_020adadc diff --git a/asm/main.s b/asm/main.s index 0a429da4..13a1eafb 100644 --- a/asm/main.s +++ b/asm/main.s @@ -75866,7 +75866,7 @@ _02037d64: ldr r0, _02037f50 ; =gInventory ldr r0, [r0] add r1, r1, #0x60 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #0 moveq r0, #1 @@ -75953,7 +75953,7 @@ _02037eac: ldr r0, _02037f50 ; =gInventory ldrh r1, [r4, #4] ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #0 moveq r0, #1 diff --git a/asm/ov00/include/ov00_02079d28.inc b/asm/ov00/include/ov00_02079d28.inc index f843871b..653435e4 100644 --- a/asm/ov00/include/ov00_02079d28.inc +++ b/asm/ov00/include/ov00_02079d28.inc @@ -171,7 +171,7 @@ .extern func_ov00_020a5e9c .extern func_ov00_020a5e9c .extern func_ov00_0209d738 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov26_02173b7c .extern func_ov00_020a5e9c .extern func_ov00_020a5e9c diff --git a/asm/ov00/include/ov00_020a03e4.inc b/asm/ov00/include/ov00_020a03e4.inc index d376fa45..215d92c5 100644 --- a/asm/ov00/include/ov00_020a03e4.inc +++ b/asm/ov00/include/ov00_020a03e4.inc @@ -988,7 +988,7 @@ .extern func_ov00_020b7e6c .extern func_ov00_020b7e6c .extern func_ov05_021113c4 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_02097760 .extern func_ov00_0209779c .extern data_027e0e58 diff --git a/asm/ov00/include/ov00_020b4940.inc b/asm/ov00/include/ov00_020b4940.inc index e00d5c0e..9099c36a 100644 --- a/asm/ov00/include/ov00_020b4940.inc +++ b/asm/ov00/include/ov00_020b4940.inc @@ -232,9 +232,9 @@ .extern func_ov00_020c45b0 .extern data_027e0fec .extern func_ov00_020b1d3c -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern gInventory -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern gInventory .extern func_020193f0 .extern func_020193f0 @@ -319,24 +319,24 @@ .extern data_027e0fac .extern func_0202af4c .extern data_027e0fac -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020ad428 .extern gInventory .extern func_ov00_02097bbc @@ -767,7 +767,7 @@ .extern data_027e0e58 .extern func_ov00_020d7cd4 .extern func_ov00_020d7a84 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov00_020d7a84 .extern func_ov00_020d7a84 .extern func_01ffbf5c @@ -799,7 +799,7 @@ .extern func_01ff9158 .extern func_02018450 .extern func_01ff9158 -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_020197fc .extern func_020197fc .extern func_ov00_020b41c4 @@ -827,7 +827,7 @@ .extern func_ov00_020ad9e8 .extern gInventory .extern func_0202e58c -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_01ffa9fc .extern func_01ffa9fc .extern func_01ff8230 diff --git a/asm/ov00/include/ov00_020c9a68.inc b/asm/ov00/include/ov00_020c9a68.inc index 9115f441..81743eb4 100644 --- a/asm/ov00/include/ov00_020c9a68.inc +++ b/asm/ov00/include/ov00_020c9a68.inc @@ -399,7 +399,7 @@ .extern data_027e077c .extern data_02056be4 .extern data_027e103c -.extern func_ov00_020ada78 +.extern _ZN9Inventory7HasItemEj .extern func_ov14_02152220 .extern gInventory .extern data_027e0618 diff --git a/asm/ov00/inventory/Inventory_Load.inc b/asm/ov00/inventory/Inventory_Load.inc new file mode 100644 index 00000000..e9e72fa5 --- /dev/null +++ b/asm/ov00/inventory/Inventory_Load.inc @@ -0,0 +1,240 @@ + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + mov r0, #0x4a + add r6, r1, #0 + lsl r0, r0, #2 + add r3, r6, #0 + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #0 + add r0, #0x8e + ldrh r0, [r0] + strh r0, [r4, #0x22] + add r0, r6, #0 + add r0, #0x80 + ldrh r1, [r0] + ldconst r0, #0x000005dc + cmp r1, r0 + bhi _020ad274 + mov r0, #0x3c + mul r0, r1 + b _020ad276 +_020ad274: + ldconst r0, #0x00015f90 +_020ad276: + mov r2, #0 + mov r7, #0x4a + str r0, [r4, #0xc] + add r3, r2, #0 + mov r0, #1 + lsl r7, r7, #2 +_020ad282: + mov r1, #0x1f + add r5, r2, #0 + and r5, r1 + add r1, r0, #0 + lsl r1, r5 + lsr r5, r2, #5 + lsl r5, r5, #2 + add r5, r4, r5 + ldr r5, [r5, r7] + tst r1, r5 + beq _020ad2a0 + add r1, r4, #0 + add r1, #0xb0 + ldr r1, [r1, #0] + strh r0, [r1, r3] +_020ad2a0: + add r2, r2, #1 + add r3, r3, #2 + cmp r2, #0xb + blt _020ad282 + add r0, r6, #0 + add r0, #0x93 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0, #0] + mov r2, #0 + strh r1, [r0, #8] + add r0, r6, #0 + add r0, #0x94 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0, #0] + strh r1, [r0, #0xe] + add r0, r6, #0 + add r0, #0x95 + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0, #0] + strh r1, [r0, #0xa] +_020ad2d4: + add r0, r6, r2 + add r0, #0x97 + ldrb r1, [r0] + add r0, r4, r2 + add r0, #0xbc + add r2, r2, #1 + strb r1, [r0] + cmp r2, #2 + blt _020ad2d4 + mov r0, #0x96 + ldrsb r1, [r6, r0] + add r0, #0xa2 + mov r2, #0 + str r1, [r4] + ldr r1, [r6, #0x10] + str r1, [r4, r0] +_020ad2f4: + add r0, r6, r2 + add r0, #0x99 + ldrb r1, [r0] + add r0, r4, r2 + add r0, #0x24 + add r2, r2, #1 + strb r1, [r0] + cmp r2, #3 + blt _020ad2f4 + mov r0, #0 + mov ip, r0 + str r4, [sp] + add r3, r6, #0 + add r5, r4, #0 + mov r7, #0x2c +_020ad312: + mov r0, ip + add r0, r6, r0 + add r0, #0x24 + ldrb r1, [r0] + ldr r0, [sp] + mov r2, #0 + str r1, [r0, #0x28] +_020ad320: + add r0, r3, r2 + ldrsb r1, [r0, r7] + add r0, r5, r2 + add r0, #0x48 + add r2, r2, #1 + strb r1, [r0] + cmp r2, #9 + blt _020ad320 + ldr r0, [sp] + add r3, #9 + add r0, r0, #4 + str r0, [sp] + mov r0, ip + add r0, r0, #1 + add r5, #9 + mov ip, r0 + cmp r0, #8 + blt _020ad312 + add r3, r6, #0 + mov r0, #0x4f + lsl r0, r0, #2 + add r3, #0x14 + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3, #0] + mov r3, #0 + str r0, [r2] + mov r0, #0x74 +_020ad35a: + add r1, r6, r3 + ldrsb r2, [r1, r0] + add r1, r4, r3 + add r1, #0x90 + add r3, r3, #1 + strb r2, [r1] + cmp r3, #8 + blt _020ad35a + mov r0, #0x52 + ldr r1, [r6, #0x20] + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0 + add r1, r6, #0 + add r2, r4, #0 +_020ad378: + add r3, r6, r0 + add r3, #0x9f + ldrb r5, [r3] + add r3, r4, r0 + add r3, #0x98 + strb r5, [r3] + add r3, r1, #0 + add r3, #0x82 + ldrh r5, [r3] + add r3, r2, #0 + add r3, #0x9e + add r0, r0, #1 + strh r5, [r3] + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #6 + blt _020ad378 + add r0, r6, #0 + add r0, #0x9c + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xb4 + strh r1, [r0] + add r0, r6, #0 + add r0, #0x9d + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xb6 + strh r1, [r0] + add r0, r6, #0 + add r0, #0x9e + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0xb8 + add r6, #0xa5 + strh r1, [r0] + ldrb r0, [r6] + str r0, [r4, #0x10] + cmp r0, #3 + blt _020ad3ce + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x10] +_020ad3ce: + ldr r1, [r4, #0] + add r0, r1, #0 + sub r0, #9 + cmp r0, #1 + bhi _020ad3f2 + add r0, r4, #0 + mov r1, #2 + bl _ZN9Inventory7HasItemEj + cmp r0, #0 + beq _020ad3ea + mov r0, #2 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_020ad3ea: + mov r0, #0 + mvn r0, r0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_020ad3f2: + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _020ad40a + add r0, r4, #0 + mov r1, #2 + bl _ZN9Inventory7HasItemEj + cmp r0, #0 + beq _020ad40a + mov r0, #2 + str r0, [r4] +_020ad40a: + pop {r3, r4, r5, r6, r7, pc} diff --git a/asm/ov00/inventory/inventory.s b/asm/ov00/inventory/inventory.s index 88ea8ab8..b2e408ec 100644 --- a/asm/ov00/inventory/inventory.s +++ b/asm/ov00/inventory/inventory.s @@ -3,254 +3,6 @@ .text - .global func_ov00_020ad244 - thumb_func_start func_ov00_020ad244 -func_ov00_020ad244: ; 0x020ad244 - push {r3, r4, r5, r6, r7, lr} - add r4, r0, #0 - mov r0, #0x4a - add r6, r1, #0 - lsl r0, r0, #2 - add r3, r6, #0 - add r2, r4, r0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - add r0, r6, #0 - add r0, #0x8e - ldrh r0, [r0] - strh r0, [r4, #0x22] - add r0, r6, #0 - add r0, #0x80 - ldrh r1, [r0] - ldr r0, _020ad40c ; =0x000005dc - cmp r1, r0 - bhi _020ad274 - mov r0, #0x3c - mul r0, r1 - b _020ad276 -_020ad274: - ldr r0, _020ad410 ; =0x00015f90 -_020ad276: - mov r2, #0 - mov r7, #0x4a - str r0, [r4, #0xc] - add r3, r2, #0 - mov r0, #1 - lsl r7, r7, #2 -_020ad282: - mov r1, #0x1f - add r5, r2, #0 - and r5, r1 - add r1, r0, #0 - lsl r1, r5 - lsr r5, r2, #5 - lsl r5, r5, #2 - add r5, r4, r5 - ldr r5, [r5, r7] - tst r1, r5 - beq _020ad2a0 - add r1, r4, #0 - add r1, #0xb0 - ldr r1, [r1] - strh r0, [r1, r3] -_020ad2a0: - add r2, r2, #1 - add r3, r3, #2 - cmp r2, #0xb - blt _020ad282 - add r0, r6, #0 - add r0, #0x93 - ldrb r1, [r0] - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #0 - strh r1, [r0, #8] - add r0, r6, #0 - add r0, #0x94 - ldrb r1, [r0] - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - strh r1, [r0, #0xe] - add r0, r6, #0 - add r0, #0x95 - ldrb r1, [r0] - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - strh r1, [r0, #0xa] -_020ad2d4: - add r0, r6, r2 - add r0, #0x97 - ldrb r1, [r0] - add r0, r4, r2 - add r0, #0xbc - add r2, r2, #1 - strb r1, [r0] - cmp r2, #2 - blt _020ad2d4 - mov r0, #0x96 - ldrsb r1, [r6, r0] - add r0, #0xa2 - mov r2, #0 - str r1, [r4] - ldr r1, [r6, #0x10] - str r1, [r4, r0] -_020ad2f4: - add r0, r6, r2 - add r0, #0x99 - ldrb r1, [r0] - add r0, r4, r2 - add r0, #0x24 - add r2, r2, #1 - strb r1, [r0] - cmp r2, #3 - blt _020ad2f4 - mov r0, #0 - mov ip, r0 - str r4, [sp] - add r3, r6, #0 - add r5, r4, #0 - mov r7, #0x2c -_020ad312: - mov r0, ip - add r0, r6, r0 - add r0, #0x24 - ldrb r1, [r0] - ldr r0, [sp] - mov r2, #0 - str r1, [r0, #0x28] -_020ad320: - add r0, r3, r2 - ldrsb r1, [r0, r7] - add r0, r5, r2 - add r0, #0x48 - add r2, r2, #1 - strb r1, [r0] - cmp r2, #9 - blt _020ad320 - ldr r0, [sp] - add r3, #9 - add r0, r0, #4 - str r0, [sp] - mov r0, ip - add r0, r0, #1 - add r5, #9 - mov ip, r0 - cmp r0, #8 - blt _020ad312 - add r3, r6, #0 - mov r0, #0x4f - lsl r0, r0, #2 - add r3, #0x14 - add r2, r4, r0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3] - mov r3, #0 - str r0, [r2] - mov r0, #0x74 -_020ad35a: - add r1, r6, r3 - ldrsb r2, [r1, r0] - add r1, r4, r3 - add r1, #0x90 - add r3, r3, #1 - strb r2, [r1] - cmp r3, #8 - blt _020ad35a - mov r0, #0x52 - ldr r1, [r6, #0x20] - lsl r0, r0, #2 - str r1, [r4, r0] - mov r0, #0 - add r1, r6, #0 - add r2, r4, #0 -_020ad378: - add r3, r6, r0 - add r3, #0x9f - ldrb r5, [r3] - add r3, r4, r0 - add r3, #0x98 - strb r5, [r3] - add r3, r1, #0 - add r3, #0x82 - ldrh r5, [r3] - add r3, r2, #0 - add r3, #0x9e - add r0, r0, #1 - strh r5, [r3] - add r1, r1, #2 - add r2, r2, #2 - cmp r0, #6 - blt _020ad378 - add r0, r6, #0 - add r0, #0x9c - ldrb r1, [r0] - add r0, r4, #0 - add r0, #0xb4 - strh r1, [r0] - add r0, r6, #0 - add r0, #0x9d - ldrb r1, [r0] - add r0, r4, #0 - add r0, #0xb6 - strh r1, [r0] - add r0, r6, #0 - add r0, #0x9e - ldrb r1, [r0] - add r0, r4, #0 - add r0, #0xb8 - add r6, #0xa5 - strh r1, [r0] - ldrb r0, [r6] - str r0, [r4, #0x10] - cmp r0, #3 - blt _020ad3ce - mov r0, #0 - mvn r0, r0 - str r0, [r4, #0x10] -_020ad3ce: - ldr r1, [r4] - add r0, r1, #0 - sub r0, #9 - cmp r0, #1 - bhi _020ad3f2 - add r0, r4, #0 - mov r1, #2 - blx func_ov00_020ada78 - cmp r0, #0 - beq _020ad3ea - mov r0, #2 - str r0, [r4] - pop {r3, r4, r5, r6, r7, pc} -_020ad3ea: - mov r0, #0 - mvn r0, r0 - str r0, [r4] - pop {r3, r4, r5, r6, r7, pc} -_020ad3f2: - mov r0, #0 - mvn r0, r0 - cmp r1, r0 - bne _020ad40a - add r0, r4, #0 - mov r1, #2 - blx func_ov00_020ada78 - cmp r0, #0 - beq _020ad40a - mov r0, #2 - str r0, [r4] -_020ad40a: - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 - thumb_func_end func_ov00_020ad244 -_020ad40c: .word 0x000005dc -_020ad410: .word 0x00015f90 - .global func_ov00_020ad414 arm_func_start func_ov00_020ad414 func_ov00_020ad414: ; 0x020ad414 @@ -629,7 +381,7 @@ _020ad840: _020ad860: ldr r1, [r6] mov r0, r6 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 ldrne r4, [r6] _020ad874: @@ -904,19 +656,19 @@ func_ov00_020ada48: ; 0x020ada48 mov r4, r1 add r1, r4, #0x1a mov r5, r0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #2 ldmneia sp!, {r3, r4, r5, pc} mov r0, r5 add r1, r4, #0x17 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r3, r4, r5, pc} arm_func_end func_ov00_020ada48 - .global func_ov00_020ada78 - arm_func_start func_ov00_020ada78 -func_ov00_020ada78: ; 0x020ada78 + .global _ZN9Inventory7HasItemEj + arm_func_start _ZN9Inventory7HasItemEj +_ZN9Inventory7HasItemEj: ; 0x020ada78 mov r2, r1, lsr #0x5 add r0, r0, r2, lsl #2 ldr r2, [r0, #0x128] @@ -925,7 +677,7 @@ func_ov00_020ada78: ; 0x020ada78 tst r2, r0, lsl r1 moveq r0, #0 bx lr - arm_func_end func_ov00_020ada78 + arm_func_end _ZN9Inventory7HasItemEj .global func_ov00_020ada98 thumb_func_start func_ov00_020ada98 @@ -2190,7 +1942,7 @@ func_ov00_020ae3c0: ; 0x020ae3c0 bx ip .align 2, 0 arm_func_end func_ov00_020ae3c0 -_020ae3cc: .word func_ov00_020ae3a8 - 1 +_020ae3cc: .word func_ov00_020ae3a8 .global func_ov00_020ae3d0 thumb_func_start func_ov00_020ae3d0 diff --git a/asm/ov00/ov00_02079d28.s b/asm/ov00/ov00_02079d28.s index 901a6fe2..60286e9a 100644 --- a/asm/ov00/ov00_02079d28.s +++ b/asm/ov00/ov00_02079d28.s @@ -2910,7 +2910,7 @@ _0207b688: ldr r0, _0207b818 ; =gInventory mov r1, #0x20 ldr r0, [r0] - blx func_ov00_020ada78 + blx _ZN9Inventory7HasItemEj cmp r0, #0 beq _0207b6cc ldrb r0, [r4, #0x12] diff --git a/asm/ov00/ov00_020a03e4.s b/asm/ov00/ov00_020a03e4.s index 7bce8013..f40feabb 100644 --- a/asm/ov00/ov00_020a03e4.s +++ b/asm/ov00/ov00_020a03e4.s @@ -16262,7 +16262,7 @@ _020ac930: ldr r0, _020ac9dc ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020ac9bc ldr r0, _020ac9e0 ; =data_027e0f74 diff --git a/asm/ov00/ov00_020b4940.s b/asm/ov00/ov00_020b4940.s index 1d299e16..0741c509 100644 --- a/asm/ov00/ov00_020b4940.s +++ b/asm/ov00/ov00_020b4940.s @@ -4887,7 +4887,7 @@ func_ov00_020b8790: ; 0x020b8790 ldr r0, _020b87c4 ; =gInventory mov r1, #0x14 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r4, #3 _020b87b4: @@ -4909,7 +4909,7 @@ func_ov00_020b87cc: ; 0x020b87cc ldr r0, _020b8800 ; =gInventory mov r1, #0x14 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r4, #3 _020b87f0: @@ -7170,7 +7170,7 @@ _020ba618: ldr r0, _020ba870 ; =gInventory mov r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba650 ldr r0, _020ba870 ; =gInventory @@ -7185,7 +7185,7 @@ _020ba650: ldr r0, _020ba870 ; =gInventory mov r1, #0x16 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba688 ldr r0, _020ba870 ; =gInventory @@ -7211,7 +7211,7 @@ _020ba6b0: ldr r0, _020ba870 ; =gInventory mov r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba6e8 ldr r0, _020ba870 ; =gInventory @@ -7229,7 +7229,7 @@ _020ba6f0: ldr r0, _020ba870 ; =gInventory mov r1, #0x16 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba728 ldr r0, _020ba870 ; =gInventory @@ -7247,7 +7247,7 @@ _020ba730: ldr r0, _020ba870 ; =gInventory mov r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba768 ldr r0, _020ba870 ; =gInventory @@ -7273,7 +7273,7 @@ _020ba790: ldr r0, _020ba870 ; =gInventory mov r1, #0x16 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba7c8 ldr r0, _020ba870 ; =gInventory @@ -7299,7 +7299,7 @@ _020ba7f0: ldr r0, _020ba870 ; =gInventory mov r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba828 ldr r0, _020ba870 ; =gInventory @@ -7314,7 +7314,7 @@ _020ba828: ldr r0, _020ba870 ; =gInventory mov r1, #0x16 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ba860 ldr r0, _020ba870 ; =gInventory @@ -13866,7 +13866,7 @@ _020bf6d4: ldr r0, _020bff38 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 add r2, sp, #0xe4 beq _020bf700 @@ -14498,7 +14498,7 @@ func_ov00_020bff94: ; 0x020bff94 ldr r0, _020c01d4 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 ldrsh r5, [r4, #0x5c] beq _020c0064 @@ -15164,7 +15164,7 @@ func_ov00_020c086c: ; 0x020c086c ldr r0, _020c0a70 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 ldrneb r0, [r4, #0xd] cmpne r0, #0 diff --git a/asm/ov00/ov00_020c9a68.s b/asm/ov00/ov00_020c9a68.s index 8322c5dc..e0f56c24 100644 --- a/asm/ov00/ov00_020c9a68.s +++ b/asm/ov00/ov00_020c9a68.s @@ -7647,7 +7647,7 @@ func_ov00_020cf750: ; 0x020cf750 mov r4, r0 ldr r0, [r1] mov r1, #0x21 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} diff --git a/asm/ov02.s b/asm/ov02.s index 76db11a6..b2daa7d9 100644 --- a/asm/ov02.s +++ b/asm/ov02.s @@ -286,7 +286,7 @@ _020ef0c0: _020ef0d0: ldr r0, [r6] mov r1, r7 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 ldrne r0, [r5, #0xd04] add r7, r7, #1 @@ -395,7 +395,7 @@ _020ef270: ldr r0, _020ef998 ; =gInventory mov r1, #0x2a ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef2c0 mov r2, #0x28 @@ -416,7 +416,7 @@ _020ef2c0: ldr r0, _020ef998 ; =gInventory mov r1, #0x26 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef310 mov r2, #0x26 @@ -437,7 +437,7 @@ _020ef310: ldr r0, _020ef998 ; =gInventory mov r1, #0x2b ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef360 mov r2, #0x27 @@ -620,7 +620,7 @@ _020ef5c8: ldr r0, _020ef998 ; =gInventory mov r1, #0x20 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef614 add r3, r4, #0x2b @@ -640,13 +640,13 @@ _020ef614: ldr r0, _020ef998 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef67c ldr r0, _020ef998 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r6, #0x13 moveq r6, #0x12 @@ -667,7 +667,7 @@ _020ef67c: ldr r0, _020ef998 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef6d0 mvn r3, #0 @@ -780,7 +780,7 @@ _020ef82c: ldr r0, _020ef998 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef87c mov r2, #0x1b @@ -801,7 +801,7 @@ _020ef87c: ldr r0, _020ef998 ; =gInventory mov r1, #5 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef8cc mov r2, #0x1d @@ -822,7 +822,7 @@ _020ef8cc: ldr r0, _020ef998 ; =gInventory mov r1, #4 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef91c mov r2, #0x22 @@ -843,7 +843,7 @@ _020ef91c: ldr r0, _020ef998 ; =gInventory mov r1, #7 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020ef96c mov r2, #0x27 @@ -1376,7 +1376,7 @@ _020f0000: ldr r0, _020f0720 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f008c ldr r0, _020f0724 ; =data_027e0f74 @@ -1427,7 +1427,7 @@ _020f008c: ldr r0, _020f0720 ; =gInventory mov r1, #0x20 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f01e4 mov r2, r4 @@ -1487,7 +1487,7 @@ _020f01e4: ldr r0, _020f0720 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f02e8 add r6, sp, #0x28 @@ -1559,7 +1559,7 @@ _020f02e8: str r6, [sp, #0x2c] str r3, [sp, #4] str r2, [sp, #0xc] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f035c add r6, sp, #0x28 @@ -1583,7 +1583,7 @@ _020f035c: ldr r0, _020f0720 ; =gInventory mov r1, #4 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f03b8 add r6, sp, #0x28 @@ -1607,7 +1607,7 @@ _020f03b8: ldr r0, _020f0720 ; =gInventory mov r1, #7 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f0414 add r6, sp, #0x28 @@ -1869,7 +1869,7 @@ _020f0774: ldr r0, _020f08a8 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f07a4 ldr r1, _020f08ac ; =0x0012009a @@ -1882,7 +1882,7 @@ _020f07a4: ldr r0, _020f08a8 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f07d4 ldr r1, _020f08b0 ; =0x0012009b @@ -2082,13 +2082,13 @@ func_ov02_020f0a54: ; 0x020f0a54 ldr r0, _020f0ae0 ; =gInventory mov r1, #0x14 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f0aa0 ldr r0, _020f0ae0 ; =gInventory mov r1, #0x1d ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f0aa8 _020f0aa0: @@ -2101,13 +2101,13 @@ _020f0ab0: ldr r0, _020f0ae0 ; =gInventory mov r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r3, pc} _020f0ac4: ldr r0, _020f0ae0 ; =gInventory mov r1, #0x16 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r3, pc} _020f0ad8: mov r0, #0 @@ -2156,7 +2156,7 @@ func_ov02_020f0b3c: ; 0x020f0b3c mov r1, #0x2d ldr r0, [r0] mvn r4, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r4, #0x2f bne _020f0bcc @@ -2500,7 +2500,7 @@ func_ov02_020f0f14: ; 0x020f0f14 ldr r0, _020f0fd4 ; =gInventory mov r1, #0x14 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #4 streqb r0, [r4, #0xec] @@ -2623,7 +2623,7 @@ func_ov02_020f10f8: ; 0x020f10f8 ldr r0, _020f114c ; =gInventory mov r1, #0x14 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 ldmeqia sp!, {r3, r4, r5, pc} _020f1128: @@ -6496,7 +6496,7 @@ _020f40fc: ldr r0, _020f41ec ; =gInventory mov r1, #0x2f ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 addeq sp, sp, #0x6c ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} diff --git a/asm/ov03.s b/asm/ov03.s index 52697b9a..df595924 100644 --- a/asm/ov03.s +++ b/asm/ov03.s @@ -5781,7 +5781,7 @@ _020f23e8: ldr r0, _020f2518 ; =gInventory mov r1, #0x21 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 addeq sp, sp, #0x18 moveq r0, #1 @@ -16311,28 +16311,28 @@ _020f8fec: ; jump table _020f8ffc: ldr r0, [sl] mov r1, #0x21 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f9058 b _020f91c0 _020f9014: ldr r0, [sl] mov r1, #0x23 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f9058 b _020f91c0 _020f902c: ldr r0, [sl] mov r1, #0x22 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f9058 b _020f91c0 _020f9044: ldr r0, [sl] mov r1, #0x24 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f91c0 _020f9058: @@ -16457,7 +16457,7 @@ _020f91f4: ; jump table _020f9204: ldr r0, [r4] mov r1, #0x21 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f92c8 ldr r0, [sl] @@ -16474,21 +16474,21 @@ _020f9204: _020f9244: ldr r0, [r4] mov r1, #0x23 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f9288 b _020f92c8 _020f925c: ldr r0, [r4] mov r1, #0x22 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _020f9288 b _020f92c8 _020f9274: ldr r0, [r4] mov r1, #0x24 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _020f92c8 _020f9288: @@ -16880,22 +16880,22 @@ _020f97b4: ldr r0, _020f9a74 ; =gInventory mov r1, #0x21 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _020f9a74 ; =gInventory strb r0, [sp, #0x44] ldr r0, [r1] mov r1, #0x22 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _020f9a74 ; =gInventory strb r0, [sp, #0x45] ldr r0, [r1] mov r1, #0x23 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _020f9a74 ; =gInventory strb r0, [sp, #0x46] ldr r0, [r1] mov r1, #0x24 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj strb r0, [sp, #0x47] ldr r0, [sp, #0x10] mov r5, #4 diff --git a/asm/ov04.s b/asm/ov04.s index 9085e99f..e8d7eec6 100644 --- a/asm/ov04.s +++ b/asm/ov04.s @@ -14958,7 +14958,7 @@ func_ov04_02107e9c: ; 0x02107e9c ldr r0, _02107f2c ; =gInventory ldr r1, _02107f30 ; =data_ov00_020e9e18 ldr r0, [r0] - bl func_ov00_020ad244 + bl _ZN9Inventory4LoadEPK13SaveInventory _02107ef6: ldr r0, _02107f34 ; =data_027e0fb8 ldr r0, [r0] diff --git a/asm/ov05.s b/asm/ov05.s index 04657434..772d15c5 100644 --- a/asm/ov05.s +++ b/asm/ov05.s @@ -4639,7 +4639,7 @@ _02104694: beq _0210471c ldr r0, [r6] add r1, sb, #0x60 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0210471c ldr r0, [r6] @@ -4772,7 +4772,7 @@ _0210485c: ldr r0, _02104a38 ; =gInventory mov r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _021048a8 mov r2, #0 @@ -4832,7 +4832,7 @@ _0210493c: ldr r0, _02104a38 ; =gInventory mov r1, #0x16 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 addne sp, sp, #0x34 ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} @@ -7074,7 +7074,7 @@ _02106810: ldr r0, _02106890 ; =gInventory mov r1, #0x2d ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _02106874 ldr r0, [r6, #0x1c] diff --git a/asm/ov14.s b/asm/ov14.s index 069fa81c..01f564e2 100644 --- a/asm/ov14.s +++ b/asm/ov14.s @@ -26490,7 +26490,7 @@ _02134fd4: blx r2 mov r1, r0 mov r0, r5 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, pc} @@ -30499,7 +30499,7 @@ func_ov14_021383e0: ; 0x021383e0 ldr r0, _02138418 ; =gInventory add r1, r1, #0x15 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r3, pc} _0213840c: mov r1, #1 @@ -35286,7 +35286,7 @@ _0213c004: ldr r0, _0213c0f4 ; =gInventory mov r1, sb ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 addeq sp, sp, #0x14 ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} @@ -35360,7 +35360,7 @@ func_ov14_0213c0fc: ; 0x0213c0fc ldr r1, [r8, #0x18] mov r6, r2 mov r5, r3 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0213c208 ldr r0, _0213c218 ; =data_027e0c38 @@ -35444,7 +35444,7 @@ func_ov14_0213c220: ; 0x0213c220 ldr r1, [r7, #0x18] mov r5, r2 mov r4, r3 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0213c34c ldr r1, [r7, #0x18] @@ -40148,7 +40148,7 @@ _0213f874: str r1, [r5, #0x70] ldr r0, [r0] mov r1, #0x20 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _0213f8c0 ldr r4, [r5, #0x70] @@ -42287,13 +42287,13 @@ _021412a8: mov r1, #0x25 ldrsh fp, [r3, r5] ldrsh r5, [r3, r2] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj mov r7, #0 ldr r1, _021415bc ; =gInventory mov r6, r0 ldr r0, [r1] mov r1, r7 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _02141308 cmp r6, #0 @@ -53562,7 +53562,7 @@ _02149fc8: ldr r1, _0214a05c ; =data_ov14_02153f1c ldr r0, [r0] ldr r1, [r1, r2, lsl #2] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0214a040 ldr r0, [r4, #0x74] @@ -53863,14 +53863,14 @@ func_ov14_0214a3dc: ; 0x0214a3dc ldr r3, [r0, #0x74] ldr r2, _0214a3fc ; =data_ov14_02153f1c ldr r0, [r1] - ldr ip, _0214a400 ; =func_ov00_020ada78 + ldr ip, _0214a400 ; =_ZN9Inventory7HasItemEj ldr r1, [r2, r3, lsl #2] bx ip .align 2, 0 arm_func_end func_ov14_0214a3dc _0214a3f8: .word gInventory _0214a3fc: .word data_ov14_02153f1c -_0214a400: .word func_ov00_020ada78 +_0214a400: .word _ZN9Inventory7HasItemEj .global func_ov14_0214a404 arm_func_start func_ov14_0214a404 @@ -53894,7 +53894,7 @@ func_ov14_0214a404: ; 0x0214a404 mov r5, r0 ldr r0, [r1] ldr r1, [r2, r3, lsl #2] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0214a480 ldr r0, _0214a4b4 ; =0x00003555 @@ -63317,7 +63317,7 @@ _021519d0: bne _021519ec ldr r0, [r4] mov r1, r6 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _02151a08 _021519ec: @@ -65920,7 +65920,7 @@ func_ov14_02153924: ; 0x02153924 ldr r0, _02153a3c ; =gInventory mov r1, r5 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r4, #1 _02153964: diff --git a/asm/ov15.s b/asm/ov15.s index dffdba5f..17c5be5a 100644 --- a/asm/ov15.s +++ b/asm/ov15.s @@ -2296,22 +2296,22 @@ _02121550: ldr r0, _021216f8 ; =gInventory mov r1, #0x21 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _021216f8 ; =gInventory str r0, [sp, #0x10] ldr r0, [r1] mov r1, #0x23 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _021216f8 ; =gInventory mov fp, r0 ldr r0, [r1] mov r1, #0x22 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _021216f8 ; =gInventory mov sl, r0 ldr r0, [r1] mov r1, #0x24 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj mov r5, #0 ldr r1, _021216fc ; =data_027e0e60 mov r4, r0 @@ -12152,25 +12152,25 @@ _02129714: ldr r0, _02129770 ; =gInventory mov r1, #0x21 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r4, pc} _02129728: ldr r0, _02129770 ; =gInventory mov r1, #0x22 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r4, pc} _0212973c: ldr r0, _02129770 ; =gInventory mov r1, #0x23 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r4, pc} _02129750: ldr r0, _02129770 ; =gInventory mov r1, #0x24 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldmia sp!, {r4, pc} _02129764: mov r0, #1 @@ -41551,7 +41551,7 @@ func_ov15_021428f0: ; 0x021428f0 mov r4, r0 ldr r0, [r1] mov r1, #0x2c - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, pc} @@ -45645,7 +45645,7 @@ func_ov15_021461b0: ; 0x021461b0 ldrh r1, [r5, r4] ldr r0, [r0] add r1, r1, #0x60 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 addeq sp, sp, #0x18 moveq r0, #0 @@ -51996,12 +51996,12 @@ func_ov15_0214b86c: ; 0x0214b86c ldr r0, _0214bb88 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _0214bb88 ; =gInventory mov r7, r0 ldr r0, [r1] mov r1, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0214b8c8 cmp r7, #0 @@ -60050,7 +60050,7 @@ func_ov15_02152358: ; 0x02152358 mov r4, r0 ldr r0, [r1] mov r1, #0x28 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, r7, r8, pc} @@ -60395,7 +60395,7 @@ func_ov15_021527d4: ; 0x021527d4 ldr r0, _021529c0 ; =gInventory mov r1, #0x2f ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr ip, _021529c4 ; =data_027e0764 cmp r0, #0 ldr r2, [ip] @@ -92740,12 +92740,12 @@ func_ov15_0216e534: ; 0x0216e534 str r1, [ip] ldr r0, [r0] mov r1, #0x25 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj mov r7, r0 ldr r0, _0216e694 ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0216e5a4 cmp r7, #0 @@ -110851,7 +110851,7 @@ _0217dfa8: bne _0217dfc4 ldr r0, [r4] mov r1, r6 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0217dfe0 _0217dfc4: @@ -110931,7 +110931,7 @@ _0217e0ac: ldr r0, _0217e1c4 ; =gInventory mov r1, #0x2c ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0217e1a4 ldr r0, _0217e1b8 ; =data_ov00_020eec9c @@ -110959,7 +110959,7 @@ _0217e114: ldr r0, _0217e1c4 ; =gInventory mov r1, #0x28 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0217e1a4 ldr r0, _0217e1b8 ; =data_ov00_020eec9c @@ -110986,7 +110986,7 @@ _0217e178: ldr r0, _0217e1c4 ; =gInventory mov r1, #0x2e ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0217e1a4 ldr r0, _0217e1b8 ; =data_ov00_020eec9c @@ -111028,7 +111028,7 @@ _0217e1fc: mov r1, #0x2c ldr r0, [r0] mvn r7, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r7, #4 beq _0217e228 @@ -111055,7 +111055,7 @@ _0217e260: mov r1, #0x28 ldr r0, [r0] mvn r7, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r7, #4 beq _0217e28c @@ -111082,7 +111082,7 @@ _0217e2c4: mov r1, #0x2e ldr r0, [r0] mvn r7, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r7, #4 beq _0217e2f0 @@ -111200,7 +111200,7 @@ _0217e42c: ldr r0, _0217e4c0 ; =gInventory mov r1, #0x2e ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r5, #0 _0217e460: @@ -112435,28 +112435,28 @@ _0217f564: ldr r0, _0217f5fc ; =gInventory mov r1, #0x21 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj add sp, sp, #0x18 ldmia sp!, {r3, r4, r5, r6, r7, pc} _0217f57c: ldr r0, _0217f5fc ; =gInventory mov r1, #0x22 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj add sp, sp, #0x18 ldmia sp!, {r3, r4, r5, r6, r7, pc} _0217f594: ldr r0, _0217f5fc ; =gInventory mov r1, #0x23 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj add sp, sp, #0x18 ldmia sp!, {r3, r4, r5, r6, r7, pc} _0217f5ac: ldr r0, _0217f5fc ; =gInventory mov r1, #0x24 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj add sp, sp, #0x18 ldmia sp!, {r3, r4, r5, r6, r7, pc} _0217f5c4: @@ -117665,7 +117665,7 @@ func_ov15_02183cb4: ; 0x02183cb4 mov r4, r0 ldr r0, [r1] mov r1, #0x28 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r3, r4, r5, r6, r7, pc} diff --git a/asm/ov21.s b/asm/ov21.s index a83b0b2d..a42f4d6a 100644 --- a/asm/ov21.s +++ b/asm/ov21.s @@ -93,7 +93,7 @@ func_ov21_0216d784: ; 0x0216d784 ldr r1, _0216d7c0 ; =data_ov21_02170bd4 ldr r0, [r0] ldr r1, [r1, r2, lsl #2] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #5 moveq r0, #0xc @@ -151,14 +151,14 @@ func_ov21_0216d830: ; 0x0216d830 ldr r3, [r0, #0xb4] ldr r2, _0216d850 ; =data_ov21_02170bd4 ldr r0, [r1] - ldr ip, _0216d854 ; =func_ov00_020ada78 + ldr ip, _0216d854 ; =_ZN9Inventory7HasItemEj ldr r1, [r2, r3, lsl #2] bx ip .align 2, 0 arm_func_end func_ov21_0216d830 _0216d84c: .word gInventory _0216d850: .word data_ov21_02170bd4 -_0216d854: .word func_ov00_020ada78 +_0216d854: .word _ZN9Inventory7HasItemEj .global func_ov21_0216d858 arm_func_start func_ov21_0216d858 diff --git a/asm/ov26.s b/asm/ov26.s index 124c8be2..828dfc2a 100644 --- a/asm/ov26.s +++ b/asm/ov26.s @@ -1420,7 +1420,7 @@ func_ov26_0216e5b4: ; 0x0216e5b4 ldr r0, _0216e628 ; =gInventory mov r1, #0x20 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0216e620 ldr r0, _0216e62c ; =data_027e077c @@ -1693,7 +1693,7 @@ func_ov26_0216e8b8: ; 0x0216e8b8 ldr r0, _0216e9b8 ; =gInventory mov r1, #0x20 ldr r0, [r0] - blx func_ov00_020ada78 + blx _ZN9Inventory7HasItemEj cmp r0, #0 beq _0216e986 ldr r0, _0216e9b8 ; =gInventory @@ -1785,7 +1785,7 @@ func_ov26_0216e9d0: ; 0x0216e9d0 mov r1, #0x20 ldr r0, [r0] mov r5, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0216ea08 ldrb r0, [r6, #0xc2] @@ -4151,7 +4151,7 @@ func_ov26_02170894: ; 0x02170894 ldr r0, _02170934 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _021708dc ldr r0, _02170934 ; =gInventory @@ -5599,7 +5599,7 @@ _02171cec: ldr r1, _02171d24 ; =data_ov26_02179434 ldr r0, [r0] ldr r1, [r1, r2, lsl #2] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #5 moveq r0, #0xc diff --git a/asm/ov28.s b/asm/ov28.s index 269d1791..7889d6c7 100644 --- a/asm/ov28.s +++ b/asm/ov28.s @@ -11391,7 +11391,7 @@ func_ov28_021768dc: ; 0x021768dc ldr r0, _021769e4 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #0 strneb r0, [r4, #0x7ad] diff --git a/asm/ov30.s b/asm/ov30.s index 04d0592b..77f5c2a1 100644 --- a/asm/ov30.s +++ b/asm/ov30.s @@ -6964,7 +6964,7 @@ _021813d0: ldr r0, _02181804 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0218146c mov r2, #2 diff --git a/asm/ov31.s b/asm/ov31.s index 0ce5a373..614e8811 100644 --- a/asm/ov31.s +++ b/asm/ov31.s @@ -1115,7 +1115,7 @@ _0217cbd8: ldr r0, _0217cd00 ; =gInventory mov r1, #4 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _0217cc80 ldr r1, _0217cd04 ; =0x00140054 @@ -1126,7 +1126,7 @@ _0217cc00: ldr r0, _0217cd00 ; =gInventory mov r1, #5 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _0217cc80 ldr r1, _0217cd08 ; =0x00140053 @@ -1137,7 +1137,7 @@ _0217cc28: ldr r0, _0217cd00 ; =gInventory mov r1, #7 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 bne _0217cc80 ldr r1, _0217cd0c ; =0x00140055 @@ -1592,21 +1592,21 @@ _0217d1a4: _0217d1b4: ldr r0, [fp] mov r1, #4 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r8, r4 b _0217d25c _0217d1cc: ldr r0, [fp] mov r1, #5 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r8, r4 b _0217d25c _0217d1e4: ldr r0, [fp] mov r1, #7 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r8, r4 b _0217d25c @@ -6459,7 +6459,7 @@ _02180930: ldr r0, _0218095c ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 movne r0, #0x10 moveq r0, #0xe diff --git a/asm/ov40.s b/asm/ov40.s index 05b20c0f..554c3943 100644 --- a/asm/ov40.s +++ b/asm/ov40.s @@ -388,7 +388,7 @@ func_ov40_0217c2b8: ; 0x0217c2b8 ldr r0, _0217c470 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 moveq r0, #0 streqb r0, [r6, #0x1c4] @@ -10151,12 +10151,12 @@ _02183ba8: ldr r0, _02183d04 ; =gInventory mov r1, #0x25 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj ldr r1, _02183d04 ; =gInventory mov r6, r0 ldr r0, [r1] mov r1, #0 - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _02183bdc cmp r6, #0 diff --git a/asm/ov41.s b/asm/ov41.s index bc33a771..27dde080 100644 --- a/asm/ov41.s +++ b/asm/ov41.s @@ -2888,7 +2888,7 @@ _0218b9b4: ldr r0, _0218be0c ; =gInventory mov r1, #0 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0218ba48 ldr r0, _0218be10 ; =data_027e0f74 diff --git a/asm/ov49.s b/asm/ov49.s index 79ead3a7..8100cb8b 100644 --- a/asm/ov49.s +++ b/asm/ov49.s @@ -856,7 +856,7 @@ func_ov49_02196008: ; 0x02196008 ldr r0, _021960f0 ; =gInventory mov r1, #1 ldr r0, [r0] - bl func_ov00_020ada78 + bl _ZN9Inventory7HasItemEj cmp r0, #0 beq _0219605c ldr r0, _021960f0 ; =gInventory diff --git a/docs/inline_assembler.md b/docs/inline_assembler.md index 62e792c2..80957121 100644 --- a/docs/inline_assembler.md +++ b/docs/inline_assembler.md @@ -18,11 +18,11 @@ dcd 0x1234 This can also be written as: ```asm -lda 0x1234 +ldconst 0x1234 bx lr ``` -The built-in `lda` instruction will be replaced by an ARM load instruction and also append a pool constant to the function. +The built-in `ldconst` instruction will be replaced by an ARM load instruction and also append a pool constant to the function. ### Data sections Directives such as `.section`, `.data` and `.bss` are not supported in the inline assembler. There might be a way to change diff --git a/include/Inventory.hpp b/include/Inventory.hpp index 93eef4a8..ada64b78 100644 --- a/include/Inventory.hpp +++ b/include/Inventory.hpp @@ -5,12 +5,15 @@ #include "Player/EquipItem.hpp" #include "Actors/Navi/Navi.hpp" +#define MAX_HOURGLASS_SECONDS 1500 // 25 minutes + typedef u32 FairyId; enum FairyId_ { FairyId_None = -1, FairyId_Courage = 0, FairyId_Power = 1, FairyId_Wisdom = 2, + FairyId_COUNT = 3, }; enum Gem { @@ -213,6 +216,9 @@ public: void ClearPrevEquippedItem(); void Save(SaveInventory *save); + void Load(const SaveInventory *save); + + bool HasItem(ItemFlag item); }; extern Inventory *gInventory; diff --git a/include/global.h b/include/global.h index 3201cd25..871800de 100644 --- a/include/global.h +++ b/include/global.h @@ -1,6 +1,8 @@ #ifndef PH_GLOBAL_H #define PH_GLOBAL_H +#define GET_FLAG(arr, pos) (((1 << ((pos) & 0x1f)) & (arr)[pos >> 5]) != 0) + #ifdef NONMATCHING #define NONMATCH #else diff --git a/src/Inventory.cpp b/src/Inventory.cpp index f0c01724..ad6622af 100644 --- a/src/Inventory.cpp +++ b/src/Inventory.cpp @@ -65,4 +65,79 @@ NONMATCH void Inventory::Save(SaveInventory *save) { save->equippedFairy = (u8) this->mEquippedFairy; #endif } + +extern "C" bool _ZN9Inventory7HasItemEj(); +NONMATCH void Inventory::Load(const SaveInventory *save) { + #ifndef NONMATCHING + #include "../asm/ov00/inventory/Inventory_Load.inc" + #else + this->mItemFlags = save->itemFlags; + this->mNumRupees = save->numRupees; + this->mHourglassSandFrames = save->hourglassSeconds <= MAX_HOURGLASS_SECONDS + ? save->hourglassSeconds * 60 + : MAX_HOURGLASS_SECONDS * 60; + for (s32 i = ItemFlag_EQUIP_START; i < ItemFlag_EQUIP_END; ++i) { + if (GET_FLAG(this->mItemFlags.flags, (u32) i)) { + (*this->mAmmo)[i] = 1; + } + } + (*this->mAmmo)[ItemFlag_BombBag] = save->numBombs; + (*this->mAmmo)[ItemFlag_BombchuBag] = save->numBombchus; + (*this->mAmmo)[ItemFlag_Bow] = save->numArrows; + for (s32 i = 0; i < NUM_POTIONS; ++i) { + this->mPotions[i] = save->potions[i]; + } + this->mEquippedItem = save->equippedItem; + this->mSalvagedTreasureFlags = save->salvagedTreasureFlags; + for (s32 i = 0; i < Gem_COUNT; ++i) { + this->mNumGems[i] = save->numGems[i]; + } + + s32 i = 0; // ip (r0) + Inventory *this2 = this; // sp+0 + const SaveInventory *save2 = save; // r3 + Inventory *this3 = this; // r5 + ShipParts (SaveInventory::*shipParts)[ShipPart_COUNT] = &SaveInventory::shipParts; // r7 + do { + this2->mEquippedShipParts[0] = save->equippedShipParts[i]; + for (s32 j = 0; j < ShipType_COUNT; ++j) { + u8 partCount = (((const SaveInventory*) ((u32)save2 + j))->*shipParts)[0].parts[0]; + ((Inventory*) ((u32)this3 + j))->mShipParts[0].parts[0] = partCount; + } + save2 = (const SaveInventory*) ((u32)save2 + sizeof(save->shipParts[0])); + this2 = (Inventory*) ((u32)this2 + sizeof(this->mEquippedShipParts[0])); + ++i; + this3 = (Inventory*) ((u32)this3 + sizeof(this->mShipParts[0])); + } + while(i < ShipPart_COUNT); + + this->mShipPartPricesShown = save->shipPartPricesShown; + for (s32 i = 0; i < Treasure_COUNT; ++i) { + this->mTreasure[i] = save->treasure[i]; + } + this->mTreasurePriceShownFlags[0] = save->treasurePriceShownFlags[0]; + for (s32 i = 0; i < 6; ++i) { + this->mUnk_098[i] = save->unk_9f[i]; + this->mUnk_09e[i] = save->unk_82[i]; + } + this->mQuiverSize = save->quiverSize; + this->mBombBagSize = save->bombBagSize; + this->mBombchuBagSize = save->bombchuBagSize; + this->mEquippedFairy = save->equippedFairy; + if (this->mEquippedFairy >= FairyId_COUNT) { + this->mEquippedFairy = FairyId_None; + } + if (this->mEquippedItem - 9 <= 1) { + if (this->HasItem(ItemFlag_Boomerang)) { + this->mEquippedItem = ItemFlag_Boomerang; + } else { + this->mEquippedItem = ItemFlag_None; + } + } else if (this->mEquippedItem == ItemFlag_None) { + if (this->HasItem(ItemFlag_Boomerang)) { + this->mEquippedItem = ItemFlag_Boomerang; + } + } + #endif +} #pragma thumb off