diff --git a/asm/dtcm.s b/asm/dtcm.s index d3b1bcb1..92fc93a3 100644 --- a/asm/dtcm.s +++ b/asm/dtcm.s @@ -4001,8 +4001,8 @@ gItemManager: .global data_027e0fb8 data_027e0fb8: .space 0x4 - .global data_027e0fbc -data_027e0fbc: + .global gHealthManager +gHealthManager: .space 0x4 .global data_027e0fc0 data_027e0fc0: diff --git a/asm/main/main_02000000.inc b/asm/main/main_02000000.inc index 7913f1d0..f9d8e1ce 100644 --- a/asm/main/main_02000000.inc +++ b/asm/main/main_02000000.inc @@ -4,7 +4,7 @@ .extern _ZN10MapManager18func_ov00_020838e8EjPi .extern _ZN10MapManager18func_ov00_02084740Ev .extern _ZN10MapManager18func_ov00_02086044Eiii -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager7AddItemEi .extern _ZN11ItemManager8GiveKeysEj .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j diff --git a/asm/main/main_02000000.s b/asm/main/main_02000000.s index 13217fb4..c514ec88 100644 --- a/asm/main/main_02000000.s +++ b/asm/main/main_02000000.s @@ -76814,7 +76814,7 @@ _0203826c: ldr r1, [r4, #4] ldr r0, [r0] mov r2, #1 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb add sp, sp, #0x18 mov r0, #2 ldmia sp!, {r3, r4, r5, pc} diff --git a/asm/ov00/Item/ItemManager.inc b/asm/ov00/Item/ItemManager.inc deleted file mode 100644 index 89530a89..00000000 --- a/asm/ov00/Item/ItemManager.inc +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once -.extern LoadTreasureItemFanfare -.extern _ZN10MapManager10GetNumKeysEv -.extern _ZN10MapManager10SetNumKeysEi -.extern _ZN11ItemManager12GetEquipItemEi -.extern _ZN14AdventureFlags3GetEj -.extern _ZN14AdventureFlags3SetEjb -.extern _ZNK11ItemManager10GetMaxAmmoEi -.extern gMapManager -.extern data_027e0f78 -.extern data_027e0fbc -.extern data_027e103c -.extern data_027e1058 -.extern data_027e105c -.extern data_ov00_020eec68 -.extern func_020196bc -.extern func_020196fc -.extern func_ov00_02079ffc -.extern func_ov00_020cf374 -.extern func_ov00_020d73bc -.extern func_ov05_02104004 -.extern func_ov09_0211c700 -.extern func_ov09_0211ca20 -.extern gAdventureFlags -.extern gItemManager -.extern strcat diff --git a/asm/ov00/Item/ItemManager.s b/asm/ov00/Item/ItemManager.s deleted file mode 100644 index 30d80c1f..00000000 --- a/asm/ov00/Item/ItemManager.s +++ /dev/null @@ -1,2316 +0,0 @@ - .include "macros/function.inc" - .include "ov00/Item/ItemManager.inc" - - .text - - .global _ZN11ItemManager15LoadFanfareItemEj - thumb_func_start _ZN11ItemManager15LoadFanfareItemEj -_ZN11ItemManager15LoadFanfareItemEj: ; 0x020adb30 - push {r4, r5, lr} - sub sp, #0x10c - add r5, r0, #0 - mov r0, #0x46 - lsl r0, r0, #2 - str r1, [r5, r0] - cmp r1, #0x2b - beq _020adb54 - cmp r1, #0x25 - beq _020adb54 - cmp r1, #0x79 - blt _020adb4c - cmp r1, #0x7c - ble _020adb54 -_020adb4c: - cmp r1, #0x7e - beq _020adb54 - cmp r1, #0x85 - bne _020adb5c -_020adb54: - ldr r0, _020adc8c ; =data_027e1058 - ldr r0, [r0] - ldr r1, [r0] - b _020adc7c -_020adb5c: - cmp r1, #0x30 - blt _020adb76 - cmp r1, #0x37 - bgt _020adb76 - ldr r0, _020adc90 ; =data_027e105c - sub r1, #0x30 - ldr r0, [r0] - mov r2, #1 - mov r3, #0 - bl LoadTreasureItemFanfare - add r1, r0, #0 - b _020adc7c -_020adb76: - cmp r1, #0x7d - bne _020adb82 - ldr r0, _020adc90 ; =data_027e105c - ldr r0, [r0] - ldr r1, [r0] - b _020adc7c -_020adb82: - add r3, sp, #0x8c - mov r2, #0x80 - mov r0, #0 -_020adb88: - strb r0, [r3] - add r3, r3, #1 - sub r2, r2, #1 - bne _020adb88 - add r3, sp, #0xc - mov r2, #0x80 - mov r0, #0 -_020adb96: - strb r0, [r3] - add r3, r3, #1 - sub r2, r2, #1 - bne _020adb96 - mov r4, #0 - cmp r1, #0x28 - bne _020adbb4 - add r0, r5, #0 - add r0, #0xb4 - ldrh r0, [r0] - cmp r0, #1 - blt _020adbb4 - ldr r0, _020adc94 ; =data_ov00_020e5df8 - ldr r4, [r0, #4] - b _020adc22 -_020adbb4: - cmp r1, #0x29 - bne _020adbc8 - add r0, r5, #0 - add r0, #0xb6 - ldrh r0, [r0] - cmp r0, #1 - blt _020adbc8 - ldr r0, _020adc94 ; =data_ov00_020e5df8 - ldr r4, [r0, #8] - b _020adc22 -_020adbc8: - cmp r1, #0x2a - bne _020adbdc - add r0, r5, #0 - add r0, #0xb8 - ldrh r0, [r0] - cmp r0, #1 - blt _020adbdc - ldr r0, _020adc94 ; =data_ov00_020e5df8 - ldr r4, [r0, #0xc] - b _020adc22 -_020adbdc: - cmp r1, #0x3e - bne _020adbe6 - ldr r0, _020adc98 ; =data_ov00_020e5c78 - ldr r4, [r0, #0x2c] - b _020adc22 -_020adbe6: - cmp r1, #0x46 - bge _020adbf2 - ldr r0, _020adc9c ; =data_ov00_020e5c9c - lsl r1, r1, #2 - ldr r4, [r0, r1] - b _020adc22 -_020adbf2: - cmp r1, #0x71 - blt _020adc04 - cmp r1, #0x79 - bge _020adc04 - sub r1, #0x71 - ldr r0, _020adca0 ; =data_ov00_020e5db4 - lsl r1, r1, #2 - ldr r4, [r0, r1] - b _020adc22 -_020adc04: - cmp r1, #0x7f - blt _020adc16 - cmp r1, #0x88 - bge _020adc16 - sub r1, #0x7f - ldr r0, _020adca4 ; =data_ov00_020e5dd4 - lsl r1, r1, #2 - ldr r4, [r0, r1] - b _020adc22 -_020adc16: - cmp r1, #0x4b - blt _020adc22 - cmp r1, #0x6a - bgt _020adc22 - ldr r0, _020adc94 ; =data_ov00_020e5df8 - ldr r4, [r0] -_020adc22: - cmp r4, #0 - bne _020adc2a - ldr r0, _020adc98 ; =data_ov00_020e5c78 - ldr r4, [r0, #0x20] -_020adc2a: - ldr r1, _020adc94 ; =data_ov00_020e5df8 - add r0, sp, #0x8c - ldr r1, [r1, #0x10] - blx strcat - add r0, sp, #0x8c - add r1, r4, #0 - blx strcat - ldr r1, _020adc94 ; =data_ov00_020e5df8 - add r0, sp, #0x8c - ldr r1, [r1, #0x14] - blx strcat - ldr r1, _020adc94 ; =data_ov00_020e5df8 - add r0, sp, #0xc - ldr r1, [r1, #0x10] - blx strcat - add r0, sp, #0xc - add r1, r4, #0 - blx strcat - ldr r1, _020adc94 ; =data_ov00_020e5df8 - add r0, sp, #0xc - ldr r1, [r1, #0x18] - blx strcat - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0x12 - lsl r0, r0, #4 - ldr r0, [r5, r0] - add r1, sp, #0x8c - add r2, sp, #0xc - bl func_ov00_02079ffc - add r1, r0, #0 -_020adc7c: - mov r0, #0x45 - lsl r0, r0, #2 - ldr r0, [r5, r0] - ldr r2, [r0] - ldr r2, [r2, #0xc] - blx r2 - add sp, #0x10c - pop {r4, r5, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager15LoadFanfareItemEj -_020adc8c: .word data_027e1058 -_020adc90: .word data_027e105c -_020adc94: .word data_ov00_020e5df8 -_020adc98: .word data_ov00_020e5c78 -_020adc9c: .word data_ov00_020e5c9c -_020adca0: .word data_ov00_020e5db4 -_020adca4: .word data_ov00_020e5dd4 - - .global _ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p - thumb_func_start _ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p -_ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p: ; 0x020adca8 - mov r2, #0x46 - lsl r2, r2, #2 - ldr r0, [r0, r2] - cmp r0, #0x1b - bgt _020adcc4 - cmp r0, #0x1a - blt _020adcbe - beq _020adcc8 - cmp r0, #0x1b - beq _020adcc8 - b _020adcd4 -_020adcbe: - cmp r0, #9 - beq _020adcc8 - b _020adcd4 -_020adcc4: - cmp r0, #0x82 - bne _020adcd4 -_020adcc8: - ldr r0, _020adcd8 ; =0x00001666 - str r0, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - mov r0, #1 - bx lr -_020adcd4: - mov r0, #0 - bx lr - .align 2, 0 - thumb_func_end _ZNK11ItemManager19GetFanfareItemScaleEP5Vec3p -_020adcd8: .word 0x00001666 - - .global _ZN11ItemManager8GiveItemEjjj - thumb_func_start _ZN11ItemManager8GiveItemEjjj -_ZN11ItemManager8GiveItemEjjj: ; 0x020adcdc - push {r3, r4, r5, lr} - cmp r1, #0x76 - bgt _020addd2 - blt _020adce6 - b _020ae128 -_020adce6: - cmp r1, #0x6f - bgt _020adda0 - blt _020adcee - b _020ae0ec -_020adcee: - cmp r1, #0x6c - bgt _020add8e - blt _020adcf6 - b _020ae0bc -_020adcf6: - cmp r1, #0x3d - bgt _020add86 - cmp r1, #0 - blt _020add8c - add r2, r1, r1 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_020add0a: ; jump table - .short _020ae222 - _020add0a - 2 ; case 0 - .short _020ade36 - _020add0a - 2 ; case 1 - .short _020ade3e - _020add0a - 2 ; case 2 - .short _020ade7c - _020add0a - 2 ; case 3 - .short _020ade98 - _020add0a - 2 ; case 4 - .short _020ae222 - _020add0a - 2 ; case 5 - .short _020ae1fe - _020add0a - 2 ; case 6 - .short _020adeb4 - _020add0a - 2 ; case 7 - .short _020adec8 - _020add0a - 2 ; case 8 - .short _020ade5c - _020add0a - 2 ; case 9 - .short _020ae1fe - _020add0a - 2 ; case 10 - .short _020ae1fe - _020add0a - 2 ; case 11 - .short _020aded2 - _020add0a - 2 ; case 12 - .short _020adedc - _020add0a - 2 ; case 13 - .short _020adebe - _020add0a - 2 ; case 14 - .short _020ae1fe - _020add0a - 2 ; case 15 - .short _020ae222 - _020add0a - 2 ; case 16 - .short _020ae1fe - _020add0a - 2 ; case 17 - .short _020adefa - _020add0a - 2 ; case 18 - .short _020adf12 - _020add0a - 2 ; case 19 - .short _020adf2c - _020add0a - 2 ; case 20 - .short _020adf46 - _020add0a - 2 ; case 21 - .short _020adf60 - _020add0a - 2 ; case 22 - .short _020ae1fe - _020add0a - 2 ; case 23 - .short _020ade48 - _020add0a - 2 ; case 24 - .short _020ade52 - _020add0a - 2 ; case 25 - .short _020ade66 - _020add0a - 2 ; case 26 - .short _020ade70 - _020add0a - 2 ; case 27 - .short _020ae1fe - _020add0a - 2 ; case 28 - .short _020ae1fe - _020add0a - 2 ; case 29 - .short _020ae1fe - _020add0a - 2 ; case 30 - .short _020adee6 - _020add0a - 2 ; case 31 - .short _020adef0 - _020add0a - 2 ; case 32 - .short _020ae1fe - _020add0a - 2 ; case 33 - .short _020ae1fe - _020add0a - 2 ; case 34 - .short _020ae1fe - _020add0a - 2 ; case 35 - .short _020adf7a - _020add0a - 2 ; case 36 - .short _020adf96 - _020add0a - 2 ; case 37 - .short _020adfbe - _020add0a - 2 ; case 38 - .short _020adfd8 - _020add0a - 2 ; case 39 - .short _020adff2 - _020add0a - 2 ; case 40 - .short _020adff8 - _020add0a - 2 ; case 41 - .short _020adffe - _020add0a - 2 ; case 42 - .short _020ae1fe - _020add0a - 2 ; case 43 - .short _020ae004 - _020add0a - 2 ; case 44 - .short _020ae024 - _020add0a - 2 ; case 45 - .short _020ae032 - _020add0a - 2 ; case 46 - .short _020ae040 - _020add0a - 2 ; case 47 - .short _020ae1fe - _020add0a - 2 ; case 48 - .short _020ae1fe - _020add0a - 2 ; case 49 - .short _020ae1fe - _020add0a - 2 ; case 50 - .short _020ae1fe - _020add0a - 2 ; case 51 - .short _020ae1fe - _020add0a - 2 ; case 52 - .short _020ae1fe - _020add0a - 2 ; case 53 - .short _020ae1fe - _020add0a - 2 ; case 54 - .short _020ae1fe - _020add0a - 2 ; case 55 - .short _020ae014 - _020add0a - 2 ; case 56 - .short _020ae1fe - _020add0a - 2 ; case 57 - .short _020ae1fe - _020add0a - 2 ; case 58 - .short _020ae1fe - _020add0a - 2 ; case 59 - .short _020ae1fe - _020add0a - 2 ; case 60 - .short _020ae04e - _020add0a - 2 ; case 61 -_020add86: - cmp r1, #0x6b - bne _020add8c - b _020ae0ac -_020add8c: - b _020ae1fe -_020add8e: - cmp r1, #0x6d - bgt _020add98 - bne _020add96 - b _020ae0cc -_020add96: - b _020ae1fe -_020add98: - cmp r1, #0x6e - bne _020add9e - b _020ae0dc -_020add9e: - b _020ae1fe -_020adda0: - cmp r1, #0x72 - bgt _020addba - blt _020adda8 - b _020ae082 -_020adda8: - cmp r1, #0x70 - bgt _020addb2 - bne _020addb0 - b _020ae0fc -_020addb0: - b _020ae1fe -_020addb2: - cmp r1, #0x71 - bne _020addb8 - b _020ae072 -_020addb8: - b _020ae1fe -_020addba: - cmp r1, #0x74 - bgt _020addca - blt _020addc2 - b _020ae09e -_020addc2: - cmp r1, #0x73 - bne _020addc8 - b _020ae090 -_020addc8: - b _020ae1fe -_020addca: - cmp r1, #0x75 - bne _020addd0 - b _020ae10c -_020addd0: - b _020ae1fe -_020addd2: - cmp r1, #0x7c - bgt _020ade06 - blt _020addda - b _020ae1b0 -_020addda: - cmp r1, #0x79 - bgt _020addf4 - blt _020adde2 - b _020ae16c -_020adde2: - cmp r1, #0x77 - bgt _020addec - bne _020addea - b _020ae144 -_020addea: - b _020ae1fe -_020addec: - cmp r1, #0x78 - bne _020addf2 - b _020ae160 -_020addf2: - b _020ae1fe -_020addf4: - cmp r1, #0x7a - bgt _020addfe - bne _020addfc - b _020ae182 -_020addfc: - b _020ae1fe -_020addfe: - cmp r1, #0x7b - bne _020ade04 - thumb_func_end _ZN11ItemManager8GiveItemEjjj -_020ade02: - b _020ae198 -_020ade04: - b _020ae1fe -_020ade06: - cmp r1, #0x81 - bgt _020ade20 - blt _020ade0e - b _020ae1e6 -_020ade0e: - cmp r1, #0x7f - bgt _020ade18 - bne _020ade16 - b _020ae1c6 -_020ade16: - b _020ae1fe -_020ade18: - cmp r1, #0x80 - bne _020ade1e - b _020ae1d6 -_020ade1e: - b _020ae1fe -_020ade20: - cmp r1, #0x83 - bgt _020ade2e - bge _020ade32 - cmp r1, #0x82 - bne _020ade2c - b _020ae1f2 -_020ade2c: - b _020ae1fe -_020ade2e: - cmp r1, #0x84 - bne _020ade34 -_020ade32: - b _020ae222 -_020ade34: - b _020ae1fe -_020ade36: - mov r1, #1 - bl _ZN11ItemManager8GiveKeysEj - b _020ae222 -_020ade3e: - mov r1, #1 - add r2, r1, #0 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ade48: - mov r1, #5 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ade52: - mov r1, #0x14 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ade5c: - mov r1, #0x64 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ade66: - mov r1, #0xc8 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ade70: - mov r1, #0x4b - lsl r1, r1, #2 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ade7c: - mov r2, #0x4a - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #1 - orr r1, r3 - str r1, [r0, r2] - mov r1, #0 - blx _ZN11ItemManager12GetEquipItemEi - ldr r2, [r0] - mov r1, #1 - ldr r2, [r2, #0x20] - blx r2 - b _020ae222 -_020ade98: - mov r2, #0x4a - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #2 - orr r1, r3 - str r1, [r0, r2] - mov r1, #1 - blx _ZN11ItemManager12GetEquipItemEi - ldr r2, [r0] - mov r1, #1 - ldr r2, [r2, #0x20] - blx r2 - b _020ae222 -_020adeb4: - mov r1, #4 - mov r2, #0xa - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020adebe: - mov r1, #7 - mov r2, #0xa - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020adec8: - mov r1, #5 - mov r2, #0x14 - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020aded2: - mov r1, #2 - mov r2, #1 - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020adedc: - mov r1, #3 - mov r2, #1 - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020adee6: - mov r1, #8 - mov r2, #1 - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020adef0: - mov r1, #6 - mov r2, #1 - bl _ZN11ItemManager13GiveEquipItemEij - b _020ae222 -_020adefa: - mov r1, #0x4b - lsl r1, r1, #2 - ldr r3, [r0, r1] - mov r2, #1 - orr r3, r2 - str r3, [r0, r1] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x13 - ldr r0, [r0] - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adf12: - mov r2, #0x4b - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #2 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #9 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adf2c: - mov r2, #0x4b - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #4 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0xa - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adf46: - mov r2, #0x4b - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #8 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0xb - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adf60: - mov r2, #0x4b - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #0x10 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0xc - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adf7a: - mov r2, #0x4b - lsl r2, r2, #2 - add r1, r2, #0 - ldr r3, [r0, r2] - sub r1, #0x2c - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x2b - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adf96: - mov r2, #0x4b - lsl r2, r2, #2 - add r1, r2, #0 - ldr r3, [r0, r2] - add r1, #0xd4 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x30 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - mov r0, #3 - mov r1, #0 - bl func_ov09_0211ca20 - bl func_ov09_0211c700 - b _020ae222 -_020adfbe: - mov r2, #0x4b - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #0x40 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x16 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adfd8: - mov r2, #0x4b - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r1, #0x80 - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x17 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020adff2: - bl _ZN11ItemManager13UpgradeQuiverEv - b _020ae222 -_020adff8: - bl _ZN11ItemManager14UpgradeBombBagEv - b _020ae222 -_020adffe: - bl _ZN11ItemManager17UpgradeBombchuBagEv - b _020ae222 -_020ae004: - mov r2, #0x4b - lsl r2, r2, #2 - mov r1, #1 - ldr r3, [r0, r2] - lsl r1, r1, #0xa - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae014: - mov r2, #0x4b - lsl r2, r2, #2 - mov r1, #2 - ldr r3, [r0, r2] - lsl r1, r1, #0xa - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae024: - add r1, r0, #0 - add r1, #0x25 - ldrb r1, [r1] - add r0, #0x25 - add r1, r1, #1 - strb r1, [r0] - b _020ae222 -_020ae032: - add r1, r0, #0 - add r1, #0x26 - ldrb r1, [r1] - add r0, #0x26 - add r1, r1, #1 - strb r1, [r0] - b _020ae222 -_020ae040: - add r1, r0, #0 - add r1, #0x24 - ldrb r1, [r1] - add r0, #0x24 - add r1, r1, #1 - strb r1, [r0] - b _020ae222 -_020ae04e: - mov r2, #0x4b - lsl r2, r2, #2 - mov r1, #1 - ldr r3, [r0, r2] - lsl r1, r1, #0xc - orr r1, r3 - str r1, [r0, r2] - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x8c - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - ldr r0, _020ae248 ; =data_027e0fbc - mov r1, #5 - ldr r0, [r0] - strh r1, [r0, #8] - b _020ae222 -_020ae072: - mov r2, #0x4b - lsl r2, r2, #2 - mov r1, #2 - ldr r3, [r0, r2] - lsl r1, r1, #0xc - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae082: - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x7e - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020ae090: - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x7d - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020ae09e: - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x7f - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - b _020ae222 -_020ae0ac: - mov r2, #0x4a - lsl r2, r2, #2 - mov r1, #1 - ldr r3, [r0, r2] - lsl r1, r1, #0x18 - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae0bc: - mov r2, #0x4a - lsl r2, r2, #2 - mov r1, #2 - ldr r3, [r0, r2] - lsl r1, r1, #0x18 - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae0cc: - mov r2, #0x4a - lsl r2, r2, #2 - mov r1, #2 - ldr r3, [r0, r2] - lsl r1, r1, #0x16 - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae0dc: - mov r2, #0x4a - lsl r2, r2, #2 - mov r1, #2 - ldr r3, [r0, r2] - lsl r1, r1, #0x1a - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae0ec: - mov r2, #0x4a - lsl r2, r2, #2 - mov r1, #1 - ldr r3, [r0, r2] - lsl r1, r1, #0x1c - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae0fc: - mov r2, #0x4a - lsl r2, r2, #2 - mov r1, #1 - ldr r3, [r0, r2] - lsl r1, r1, #0x1a - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae10c: - mov r1, #0 -_020ae10e: - add r2, r0, r1 - add r2, #0xbc - ldrb r2, [r2] - cmp r2, #0 - bne _020ae120 - mov r2, #1 - blx _ZN11ItemManager9SetPotionEjj - b _020ae222 -_020ae120: - add r1, r1, #1 - cmp r1, #2 - blt _020ae10e - b _020ae222 -_020ae128: - mov r1, #0 -_020ae12a: - add r2, r0, r1 - add r2, #0xbc - ldrb r2, [r2] - cmp r2, #0 - bne _020ae13c - mov r2, #2 - blx _ZN11ItemManager9SetPotionEjj - b _020ae222 -_020ae13c: - add r1, r1, #1 - cmp r1, #2 - blt _020ae12a - b _020ae222 -_020ae144: - mov r1, #0 -_020ae146: - add r2, r0, r1 - add r2, #0xbc - ldrb r2, [r2] - cmp r2, #0 - bne _020ae158 - mov r2, #3 - blx _ZN11ItemManager9SetPotionEjj - b _020ae222 -_020ae158: - add r1, r1, #1 - cmp r1, #2 - blt _020ae146 - b _020ae222 -_020ae160: - mov r1, #0xe1 - ldr r2, [r0, #0xc] - lsl r1, r1, #4 - add r1, r2, r1 - str r1, [r0, #0xc] - b _020ae222 -_020ae16c: - ldr r0, _020ae244 ; =gAdventureFlags - ldr r1, _020ae24c ; =0x00000126 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - mov r0, #6 - mov r1, #8 - bl func_ov09_0211ca20 - b _020ae222 -_020ae182: - ldr r0, _020ae244 ; =gAdventureFlags - ldr r1, _020ae250 ; =0x00000127 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - mov r0, #4 - mov r1, #8 - bl func_ov09_0211ca20 - b _020ae222 -_020ae198: - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x4a - ldr r0, [r0] - lsl r1, r1, #2 - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - mov r0, #3 - mov r1, #8 - bl func_ov09_0211ca20 - b _020ae222 -_020ae1b0: - ldr r0, _020ae244 ; =gAdventureFlags - ldr r1, _020ae254 ; =0x00000129 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb - mov r0, #2 - mov r1, #8 - bl func_ov09_0211ca20 - b _020ae222 -_020ae1c6: - mov r2, #0x4b - lsl r2, r2, #2 - mov r1, #1 - ldr r3, [r0, r2] - lsl r1, r1, #0xe - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae1d6: - mov r2, #0x4b - lsl r2, r2, #2 - mov r1, #2 - ldr r3, [r0, r2] - lsl r1, r1, #0xe - orr r1, r3 - str r1, [r0, r2] - b _020ae222 -_020ae1e6: - mov r1, #9 - mvn r1, r1 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ae1f2: - mov r1, #0x31 - mvn r1, r1 - mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj - b _020ae222 -_020ae1fe: - cmp r1, #0x4b - blt _020ae222 - cmp r1, #0x6a - bgt _020ae222 - mov r2, #0x4a - lsl r2, r2, #2 - add r1, #0x15 - add r3, r0, r2 - lsr r0, r1, #5 - mov r4, #0x1f - lsl r2, r0, #2 - mov r5, #1 - and r1, r4 - add r4, r5, #0 - ldr r0, [r3, r2] - lsl r4, r1 - orr r0, r4 - str r0, [r3, r2] -_020ae222: - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x7d - ldr r0, [r0] - blx _ZN14AdventureFlags3GetEj - cmp r0, #0 - beq _020ae270 - ldr r0, _020ae244 ; =gAdventureFlags - mov r1, #0x7e - ldr r0, [r0] - blx _ZN14AdventureFlags3GetEj - cmp r0, #0 - beq _020ae270 - ldr r0, _020ae244 ; =gAdventureFlags - b _020ae258 - nop -_020ae244: .word gAdventureFlags -_020ae248: .word data_027e0fbc -_020ae24c: .word 0x00000126 -_020ae250: .word 0x00000127 -_020ae254: .word 0x00000129 -_020ae258: - mov r1, #0x7f - ldr r0, [r0] - blx _ZN14AdventureFlags3GetEj - cmp r0, #0 - beq _020ae270 - ldr r0, _020ae274 ; =gAdventureFlags - mov r1, #0x80 - ldr r0, [r0] - mov r2, #1 - blx _ZN14AdventureFlags3SetEjb -_020ae270: - pop {r3, r4, r5, pc} - nop -_020ae274: .word gAdventureFlags - - .global _ZN11ItemManager13GiveEquipItemEij - thumb_func_start _ZN11ItemManager13GiveEquipItemEij -_ZN11ItemManager13GiveEquipItemEij: ; 0x020ae278 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - str r2, [sp] - lsl r2, r6, #0x10 - lsr r5, r2, #0x10 - mov r2, #0x4a - lsr r3, r5, #5 - add r4, r0, #0 - lsl r2, r2, #2 - add r2, r4, r2 - lsl r7, r3, #2 - ldr r3, [r2, r7] - mov ip, r3 - mov r3, #0x1f - and r5, r3 - mov r3, #1 - lsl r3, r5 - mov r5, ip - orr r3, r5 - str r3, [r2, r7] - blx _ZN11ItemManager12GetEquipItemEi - ldr r2, [r0] - ldr r1, [sp] - ldr r2, [r2, #0x20] - blx r2 - mov r0, #0 - ldr r1, [r4] - mvn r0, r0 - cmp r1, r0 - bne _020ae2bc - str r6, [r4] - mov r0, #1 - strh r0, [r4, #0x20] -_020ae2bc: - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager13GiveEquipItemEij - - .global _ZN11ItemManager13UnequipPotionEv - thumb_func_start _ZN11ItemManager13UnequipPotionEv -_ZN11ItemManager13UnequipPotionEv: ; 0x020ae2c0 - push {r3, lr} - ldr r1, [r0] - cmp r1, #9 - beq _020ae2cc - cmp r1, #0xa - bne _020ae2d0 -_020ae2cc: - blx _ZN11ItemManager17EquipPreviousItemEv -_020ae2d0: - pop {r3, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager13UnequipPotionEv - - .global _ZNK11ItemManager12GetMaxRupeesEv - arm_func_start _ZNK11ItemManager12GetMaxRupeesEv -_ZNK11ItemManager12GetMaxRupeesEv: ; 0x020ae2d4 - ldr r0, _020ae2dc ; =0x0000270f - bx lr - .align 2, 0 - arm_func_end _ZNK11ItemManager12GetMaxRupeesEv -_020ae2dc: .word 0x0000270f - - .global _ZN11ItemManager10GiveRupeesEjj - arm_func_start _ZN11ItemManager10GiveRupeesEjj -_ZN11ItemManager10GiveRupeesEjj: ; 0x020ae2e0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrh r3, [r6, #0x22] - mov r5, r2 - add r4, r3, r1 - bl _ZNK11ItemManager12GetMaxRupeesEv - cmp r4, r0 - ble _020ae310 - mov r0, r6 - bl _ZNK11ItemManager12GetMaxRupeesEv - mov r4, r0 - b _020ae318 -_020ae310: - cmp r4, #0 - movlt r4, #0 -_020ae318: - ldr r0, _020ae34c ; =data_027e103c - mov r1, #1 - ldr r0, [r0] - bl func_ov00_020cf374 - cmp r5, #0 - ldrneh r0, [r6, #0x22] - cmpne r0, r4 - beq _020ae344 - ldr r0, _020ae34c ; =data_027e103c - ldr r0, [r0] - bl func_ov05_02104004 -_020ae344: - strh r4, [r6, #0x22] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 - arm_func_end _ZN11ItemManager10GiveRupeesEjj -_020ae34c: .word data_027e103c - - .global _ZNK11ItemManager18func_ov00_020ae350Ev - arm_func_start _ZNK11ItemManager18func_ov00_020ae350Ev -_ZNK11ItemManager18func_ov00_020ae350Ev: ; 0x020ae350 - ldr r0, _020ae360 ; =gMapManager - ldr ip, _020ae364 ; =_ZN10MapManager10GetNumKeysEv - ldr r0, [r0] - bx ip - .align 2, 0 - arm_func_end _ZNK11ItemManager18func_ov00_020ae350Ev -_020ae360: .word gMapManager -_020ae364: .word _ZN10MapManager10GetNumKeysEv - - .global _ZN11ItemManager8GiveKeysEj - thumb_func_start _ZN11ItemManager8GiveKeysEj -_ZN11ItemManager8GiveKeysEj: ; 0x020ae368 - push {r4, lr} - ldr r0, _020ae38c ; =gMapManager - add r4, r1, #0 - ldr r0, [r0] - blx _ZN10MapManager10GetNumKeysEv - add r1, r4, r0 - cmp r1, #8 - blt _020ae37c - mov r1, #8 -_020ae37c: - cmp r1, #0 - bgt _020ae382 - mov r1, #0 -_020ae382: - ldr r0, _020ae38c ; =gMapManager - ldr r0, [r0] - blx _ZN10MapManager10SetNumKeysEi - pop {r4, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager8GiveKeysEj -_020ae38c: .word gMapManager - - .global _ZNK11ItemManager15GetEquippedItemEv - arm_func_start _ZNK11ItemManager15GetEquippedItemEv -_ZNK11ItemManager15GetEquippedItemEv: ; 0x020ae390 - ldr r2, [r0, #8] - mvn r1, #0 - cmp r2, r1 - ldreq r2, [r0] - mov r0, r2 - bx lr - arm_func_end _ZNK11ItemManager15GetEquippedItemEv - - .global _ZN11ItemManager15SetEquippedItemEi - arm_func_start _ZN11ItemManager15SetEquippedItemEi -_ZN11ItemManager15SetEquippedItemEi: ; 0x020ae3a8 - ldr r3, [r0] - mov r2, #2 - stmia r0, {r1, r3} - strh r2, [r0, #0x20] - mov r0, #1 - bx lr - arm_func_end _ZN11ItemManager15SetEquippedItemEi - - .global _ZN11ItemManager17EquipPreviousItemEv - arm_func_start _ZN11ItemManager17EquipPreviousItemEv -_ZN11ItemManager17EquipPreviousItemEv: ; 0x020ae3c0 - ldr ip, _020ae3cc ; =_ZN11ItemManager15SetEquippedItemEi - ldr r1, [r0, #4] - bx ip - .align 2, 0 - arm_func_end _ZN11ItemManager17EquipPreviousItemEv -_020ae3cc: .word _ZN11ItemManager15SetEquippedItemEi - 1 - - .global _ZN11ItemManager13ForceEquipItemEi - thumb_func_start _ZN11ItemManager13ForceEquipItemEi -_ZN11ItemManager13ForceEquipItemEi: ; 0x020ae3d0 - push {r3, r4, r5, r6, r7, lr} - mov r4, #0 - add r6, r0, #0 - add r7, r1, #0 - add r5, r4, #0 -_020ae3da: - cmp r4, r7 - beq _020ae3ee - add r0, r6, #0 - add r0, #0xac - ldr r0, [r0] - mov r1, #0 - ldr r0, [r0, r5] - ldr r2, [r0] - ldr r2, [r2, #0x28] - blx r2 -_020ae3ee: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #0xb - blt _020ae3da - str r7, [r6, #8] - mov r0, #1 - strh r0, [r6, #0x20] - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager13ForceEquipItemEi - - .global _ZN11ItemManager20ClearForcedEquipItemEv - thumb_func_start _ZN11ItemManager20ClearForcedEquipItemEv -_ZN11ItemManager20ClearForcedEquipItemEv: ; 0x020ae400 - push {r3, lr} - mov r2, #0 - mvn r2, r2 - str r2, [r0, #8] - ldr r1, [r0] - cmp r1, r2 - beq _020ae414 - blx _ZN11ItemManager15SetEquippedItemEi - pop {r3, pc} -_020ae414: - mov r0, #0 - pop {r3, pc} - thumb_func_end _ZN11ItemManager20ClearForcedEquipItemEv - - .global _ZN11ItemManager22UpdateSwordShieldInUseEv - arm_func_start _ZN11ItemManager22UpdateSwordShieldInUseEv -_ZN11ItemManager22UpdateSwordShieldInUseEv: ; 0x020ae418 - stmdb sp!, {r4, lr} - mov r1, #0 - mov r4, r0 - bl _ZN11ItemManager12GetEquipItemEi - ldr r2, [r0] - mov r1, #1 - ldr r2, [r2, #0x28] - blx r2 - mov r0, r4 - mov r1, #1 - bl _ZN11ItemManager12GetEquipItemEi - ldr r2, [r0] - mov r1, #1 - ldr r2, [r2, #0x28] - blx r2 - ldmia sp!, {r4, pc} - arm_func_end _ZN11ItemManager22UpdateSwordShieldInUseEv - - .global _ZN11ItemManager13UpgradeQuiverEv - thumb_func_start _ZN11ItemManager13UpgradeQuiverEv -_ZN11ItemManager13UpgradeQuiverEv: ; 0x020ae458 - push {r4, lr} - add r4, r0, #0 - add r0, #0xb4 - ldrh r0, [r0] - cmp r0, #2 - bhs _020ae472 - add r0, r4, #0 - add r0, #0xb4 - ldrh r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb4 - strh r1, [r0] -_020ae472: - add r0, r4, #0 - mov r1, #5 - bl _ZNK11ItemManager10GetMaxAmmoEi - add r4, #0xb0 - ldr r1, [r4] - strh r0, [r1, #0xa] - pop {r4, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager13UpgradeQuiverEv - - .global _ZN11ItemManager14UpgradeBombBagEv - thumb_func_start _ZN11ItemManager14UpgradeBombBagEv -_ZN11ItemManager14UpgradeBombBagEv: ; 0x020ae484 - push {r4, lr} - add r4, r0, #0 - add r0, #0xb6 - ldrh r0, [r0] - cmp r0, #2 - bhs _020ae49e - add r0, r4, #0 - add r0, #0xb6 - ldrh r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb6 - strh r1, [r0] -_020ae49e: - add r0, r4, #0 - mov r1, #4 - bl _ZNK11ItemManager10GetMaxAmmoEi - add r4, #0xb0 - ldr r1, [r4] - strh r0, [r1, #8] - pop {r4, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager14UpgradeBombBagEv - - .global _ZN11ItemManager17UpgradeBombchuBagEv - thumb_func_start _ZN11ItemManager17UpgradeBombchuBagEv -_ZN11ItemManager17UpgradeBombchuBagEv: ; 0x020ae4b0 - push {r4, lr} - add r4, r0, #0 - add r0, #0xb8 - ldrh r0, [r0] - cmp r0, #2 - bhs _020ae4ca - add r0, r4, #0 - add r0, #0xb8 - ldrh r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb8 - strh r1, [r0] -_020ae4ca: - add r0, r4, #0 - mov r1, #7 - bl _ZNK11ItemManager10GetMaxAmmoEi - add r4, #0xb0 - ldr r1, [r4] - strh r0, [r1, #0xe] - pop {r4, pc} - .align 2, 0 - thumb_func_end _ZN11ItemManager17UpgradeBombchuBagEv - - .global _ZN11ItemManager18func_ov00_020ae4dcEj - arm_func_start _ZN11ItemManager18func_ov00_020ae4dcEj -_ZN11ItemManager18func_ov00_020ae4dcEj: ; 0x020ae4dc - ldrh r3, [r0, #0xba] - add r2, r3, r1 - cmp r2, #9 - movgt r1, #9 - strgth r1, [r0, #0xba] - bxgt lr - rsb r1, r1, #0 - cmp r3, r1 - movlt r1, #0 - strlth r1, [r0, #0xba] - strgeh r2, [r0, #0xba] - bx lr - arm_func_end _ZN11ItemManager18func_ov00_020ae4dcEj - - .global _ZN11ItemManager9SetPotionEjj - arm_func_start _ZN11ItemManager9SetPotionEjj -_ZN11ItemManager9SetPotionEjj: ; 0x020ae50c - add r3, r0, r1 - strb r2, [r3, #0xbc] - cmp r2, #0 - add r1, r1, #9 - bne _020ae544 - add r3, r0, #0x128 - mov r2, r1, lsr #0x5 - and r0, r1, #0x1f - mov r1, #1 - mvn r0, r1, lsl r0 - ldr r1, [r3, r2, lsl #2] - and r0, r1, r0 - str r0, [r3, r2, lsl #2] - bx lr -_020ae544: - add ip, r0, #0x128 - mov r3, r1, lsr #0x5 - and r0, r1, #0x1f - ldr r2, [ip, r3, lsl #2] - mov r1, #1 - orr r0, r2, r1, lsl r0 - str r0, [ip, r3, lsl #2] - bx lr - arm_func_end _ZN11ItemManager9SetPotionEjj - - .global _ZNK11ItemManager9HasPotionEj - arm_func_start _ZNK11ItemManager9HasPotionEj -_ZNK11ItemManager9HasPotionEj: ; 0x020ae564 - add r0, r0, r1 - ldrb r0, [r0, #0xbc] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _020ae590 -_020ae578: ; jump table - b _020ae590 ; case 0 - b _020ae588 ; case 1 - b _020ae588 ; case 2 - b _020ae588 ; case 3 -_020ae588: - mov r0, #1 - bx lr -_020ae590: - mov r0, #0 - bx lr - arm_func_end _ZNK11ItemManager9HasPotionEj - - .global _ZNK11ItemManager13HasAllPotionsEv - arm_func_start _ZNK11ItemManager13HasAllPotionsEv -_ZNK11ItemManager13HasAllPotionsEv: ; 0x020ae598 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 -_020ae5a4: - mov r0, r5 - mov r1, r4 - bl _ZNK11ItemManager9HasPotionEj - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - add r4, r4, #1 - cmp r4, #2 - blt _020ae5a4 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end _ZNK11ItemManager13HasAllPotionsEv - - .global _ZNK11ItemManager15HasPurplePotionEv - arm_func_start _ZNK11ItemManager15HasPurplePotionEv -_ZNK11ItemManager15HasPurplePotionEv: ; 0x020ae5d0 - mov r2, #0 -_020ae5d4: - add r1, r0, r2 - ldrb r1, [r1, #0xbc] - cmp r1, #2 - moveq r0, #1 - bxeq lr - add r2, r2, #1 - cmp r2, #2 - blt _020ae5d4 - mov r0, #0 - bx lr - arm_func_end _ZNK11ItemManager15HasPurplePotionEv - - .global _ZN11ItemManager21LoadDungeonItemModelsEv - thumb_func_start _ZN11ItemManager21LoadDungeonItemModelsEv -_ZN11ItemManager21LoadDungeonItemModelsEv: ; 0x020ae5fc - push {r3, r4, r5, r6, r7, lr} - ldr r7, _020ae644 ; =data_027e0f78 - add r5, r0, #0 - mov r4, #0 -_020ae604: - mov r0, #1 - lsl r0, r0, #8 - ldr r0, [r5, r0] - cmp r0, #0 - beq _020ae638 - cmp r4, #2 - beq _020ae61a - cmp r4, #3 - beq _020ae61a - cmp r4, #4 - bne _020ae622 -_020ae61a: - ldr r2, [r7] - ldrh r1, [r2, #0x1e] - ldrh r6, [r2, #0x1c] - b _020ae628 -_020ae622: - ldr r2, [r7] - ldrh r1, [r2, #0x1a] - ldrh r6, [r2, #0x18] -_020ae628: - blx func_020196bc - mov r0, #1 - lsl r0, r0, #8 - ldr r0, [r5, r0] - add r1, r6, #0 - blx func_020196fc -_020ae638: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #5 - blt _020ae604 - pop {r3, r4, r5, r6, r7, pc} - nop - thumb_func_end _ZN11ItemManager21LoadDungeonItemModelsEv -_020ae644: .word data_027e0f78 - - .global _ZN11ItemManager18func_ov00_020ae648Ejjj - thumb_func_start _ZN11ItemManager18func_ov00_020ae648Ejjj -_ZN11ItemManager18func_ov00_020ae648Ejjj: ; 0x020ae648 - push {r3, lr} - ldr r1, _020ae6e8 ; =gItemManager - ldr r2, [r1] - mov r1, #0x53 - lsl r1, r1, #2 - ldrb r3, [r2, r1] - cmp r3, #1 - bne _020ae65e - mov r0, #0 - strb r0, [r2, r1] - pop {r3, pc} -_020ae65e: - cmp r0, #0x2d - bgt _020ae692 - bge _020ae6b4 - cmp r0, #0x18 - bgt _020ae684 - bge _020ae6bc - cmp r0, #2 - bgt _020ae67e - cmp r0, #0 - blt _020ae6cc - beq _020ae6c4 - cmp r0, #1 - beq _020ae6bc - cmp r0, #2 - beq _020ae6bc - b _020ae6cc -_020ae67e: - cmp r0, #0xa - beq _020ae6c8 - b _020ae6cc -_020ae684: - cmp r0, #0x19 - bgt _020ae68c - beq _020ae6bc - b _020ae6cc -_020ae68c: - cmp r0, #0x1b - beq _020ae6b8 - b _020ae6cc -_020ae692: - cmp r0, #0x3e - bgt _020ae6a6 - bge _020ae6c4 - cmp r0, #0x2e - bgt _020ae6a0 - beq _020ae6b4 - b _020ae6cc -_020ae6a0: - cmp r0, #0x2f - beq _020ae6b4 - b _020ae6cc -_020ae6a6: - cmp r0, #0x81 - bgt _020ae6ae - beq _020ae6c0 - b _020ae6cc -_020ae6ae: - cmp r0, #0x82 - beq _020ae6c0 - b _020ae6cc -_020ae6b4: - mov r1, #0x2e - b _020ae6ce -_020ae6b8: - mov r1, #0x2a - b _020ae6ce -_020ae6bc: - mov r1, #0x29 - b _020ae6ce -_020ae6c0: - mov r1, #0x2b - b _020ae6ce -_020ae6c4: - mov r1, #0x2c - b _020ae6ce -_020ae6c8: - mov r1, #0x2d - b _020ae6ce -_020ae6cc: - mov r1, #0x28 -_020ae6ce: - mov r0, #0x47 - lsl r0, r0, #2 - ldr r3, [r2, r0] - cmp r3, #0 - beq _020ae6de - add r1, r3, #0 - mov r3, #0 - str r3, [r2, r0] -_020ae6de: - ldr r0, _020ae6ec ; =data_ov00_020eec68 - blx func_ov00_020d73bc - pop {r3, pc} - nop - thumb_func_end _ZN11ItemManager18func_ov00_020ae648Ejjj -_020ae6e8: .word gItemManager -_020ae6ec: .word data_ov00_020eec68 - - .global _ZNK11ItemManager18IsTreasureSalvagedEjj - thumb_func_start _ZNK11ItemManager18IsTreasureSalvagedEjj -_ZNK11ItemManager18IsTreasureSalvagedEjj: ; 0x020ae6f0 - push {r3, r4} - lsl r3, r1, #3 - add r1, r1, r3 - add r4, r2, r1 - mov r2, #1 - mov r1, #0x1f - add r3, r4, #0 - and r3, r1 - add r1, r2, #0 - lsl r1, r3 - lsr r3, r4, #5 - lsl r3, r3, #2 - add r3, r0, r3 - mov r0, #0x4f - lsl r0, r0, #2 - ldr r0, [r3, r0] - tst r0, r1 - bne _020ae716 - mov r2, #0 -_020ae716: - add r0, r2, #0 - pop {r3, r4} - bx lr - thumb_func_end _ZNK11ItemManager18IsTreasureSalvagedEjj - - .global _ZN11ItemManager19SetTreasureSalvagedEjj - thumb_func_start _ZN11ItemManager19SetTreasureSalvagedEjj -_ZN11ItemManager19SetTreasureSalvagedEjj: ; 0x020ae71c - push {r4, r5} - lsl r3, r1, #3 - add r1, r1, r3 - add r2, r2, r1 - mov r1, #0x4f - lsl r1, r1, #2 - add r1, r0, r1 - lsr r0, r2, #5 - lsl r0, r0, #2 - mov r3, #0x1f - mov r4, #1 - and r2, r3 - add r3, r4, #0 - ldr r5, [r1, r0] - lsl r3, r2 - add r2, r5, #0 - orr r2, r3 - str r2, [r1, r0] - pop {r4, r5} - bx lr - thumb_func_end _ZN11ItemManager19SetTreasureSalvagedEjj - - .global _ZNK11ItemManager21HasTreasurePriceShownEj - thumb_func_start _ZNK11ItemManager21HasTreasurePriceShownEj -_ZNK11ItemManager21HasTreasurePriceShownEj: ; 0x020ae744 - push {r3, r4} - add r4, r1, #0 - lsr r1, r1, #5 - lsl r1, r1, #2 - mov r2, #0x1f - add r1, r0, r1 - mov r0, #0x52 - lsl r0, r0, #2 - mov r3, #1 - and r4, r2 - add r2, r3, #0 - lsl r2, r4 - ldr r0, [r1, r0] - tst r0, r2 - bne _020ae764 - mov r3, #0 -_020ae764: - add r0, r3, #0 - pop {r3, r4} - bx lr - .align 2, 0 - thumb_func_end _ZNK11ItemManager21HasTreasurePriceShownEj - - .global _ZN11ItemManager21AddTreasurePriceShownEj - thumb_func_start _ZN11ItemManager21AddTreasurePriceShownEj -_ZN11ItemManager21AddTreasurePriceShownEj: ; 0x020ae76c - push {r4, r5} - mov r2, #0x52 - lsl r2, r2, #2 - add r2, r0, r2 - lsr r0, r1, #5 - lsl r0, r0, #2 - mov r3, #0x1f - mov r4, #1 - and r1, r3 - add r3, r4, #0 - ldr r5, [r2, r0] - lsl r3, r1 - add r1, r5, #0 - orr r1, r3 - str r1, [r2, r0] - pop {r4, r5} - bx lr - .align 2, 0 - thumb_func_end _ZN11ItemManager21AddTreasurePriceShownEj - - .rodata - - .data - .global data_ov00_020e5c58 -data_ov00_020e5c58: ; 0x020e5c58 - .ascii "brg" - .byte 0x00 - .global data_ov00_020e5c5c -data_ov00_020e5c5c: ; 0x020e5c5c - .ascii "fnl" - .byte 0x00 - .global data_ov00_020e5c60 -data_ov00_020e5c60: ; 0x020e5c60 - .ascii "pdl" - .byte 0x00 - .global data_ov00_020e5c64 -data_ov00_020e5c64: ; 0x020e5c64 - .ascii "dco" - .byte 0x00 - .global data_ov00_020e5c68 -data_ov00_020e5c68: ; 0x020e5c68 - .ascii "can" - .byte 0x00 - .global data_ov00_020e5c6c -data_ov00_020e5c6c: ; 0x020e5c6c - .ascii "hul" - .byte 0x00 - .global data_ov00_020e5c70 -data_ov00_020e5c70: ; 0x020e5c70 - .ascii "bow" - .byte 0x00 - .global data_ov00_020e5c74 -data_ov00_020e5c74: ; 0x020e5c74 - .ascii "anc" - .byte 0x00 - .global data_ov00_020e5c78 -data_ov00_020e5c78: ; 0x020e5c78 - .word data_ov00_020e5c74 - .global data_ov00_020e5c7c -data_ov00_020e5c7c: ; 0x020e5c7c - .word data_ov00_020e5c70 - .global data_ov00_020e5c80 -data_ov00_020e5c80: ; 0x020e5c80 - .word data_ov00_020e5c6c - .global data_ov00_020e5c84 -data_ov00_020e5c84: ; 0x020e5c84 - .word data_ov00_020e5c68 - .global data_ov00_020e5c88 -data_ov00_020e5c88: ; 0x020e5c88 - .word data_ov00_020e5c64 - .global data_ov00_020e5c8c -data_ov00_020e5c8c: ; 0x020e5c8c - .word data_ov00_020e5c60 - .global data_ov00_020e5c90 -data_ov00_020e5c90: ; 0x020e5c90 - .word data_ov00_020e5c5c - .global data_ov00_020e5c94 -data_ov00_020e5c94: ; 0x020e5c94 - .word data_ov00_020e5c58 - .global data_ov00_020e5c98 -data_ov00_020e5c98: ; 0x020e5c98 - .word data_ov00_020e5e14 - .global data_ov00_020e5c9c -data_ov00_020e5c9c: ; 0x020e5c9c - .word data_ov00_020e5e18 - .global data_ov00_020e5ca0 -data_ov00_020e5ca0: ; 0x020e5ca0 - .word data_ov00_020e5e1c - .global data_ov00_020e5ca4 -data_ov00_020e5ca4: ; 0x020e5ca4 - .word data_ov00_020e5e20 - .global data_ov00_020e5ca8 -data_ov00_020e5ca8: ; 0x020e5ca8 - .word data_ov00_020e5e28 - .global data_ov00_020e5cac -data_ov00_020e5cac: ; 0x020e5cac - .word data_ov00_020e5e2c - .global data_ov00_020e5cb0 -data_ov00_020e5cb0: ; 0x020e5cb0 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5cb4 -data_ov00_020e5cb4: ; 0x020e5cb4 - .word data_ov00_020e5e30 - .global data_ov00_020e5cb8 -data_ov00_020e5cb8: ; 0x020e5cb8 - .word data_ov00_020e5e38 - .global data_ov00_020e5cbc -data_ov00_020e5cbc: ; 0x020e5cbc - .word data_ov00_020e5e40 - .global data_ov00_020e5cc0 -data_ov00_020e5cc0: ; 0x020e5cc0 - .word data_ov00_020e5e44 - .global data_ov00_020e5cc4 -data_ov00_020e5cc4: ; 0x020e5cc4 - .word data_ov00_020e5e4c - .global data_ov00_020e5cc8 -data_ov00_020e5cc8: ; 0x020e5cc8 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5ccc -data_ov00_020e5ccc: ; 0x020e5ccc - .word data_ov00_020e5e58 - .global data_ov00_020e5cd0 -data_ov00_020e5cd0: ; 0x020e5cd0 - .word data_ov00_020e5e64 - .global data_ov00_020e5cd4 -data_ov00_020e5cd4: ; 0x020e5cd4 - .word data_ov00_020e5e68 - .global data_ov00_020e5cd8 -data_ov00_020e5cd8: ; 0x020e5cd8 - .word data_ov00_020e5e70 - .global data_ov00_020e5cdc -data_ov00_020e5cdc: ; 0x020e5cdc - .word data_ov00_020e5e78 - .global data_ov00_020e5ce0 -data_ov00_020e5ce0: ; 0x020e5ce0 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5ce4 -data_ov00_020e5ce4: ; 0x020e5ce4 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5ce8 -data_ov00_020e5ce8: ; 0x020e5ce8 - .word data_ov00_020e5e80 - .global data_ov00_020e5cec -data_ov00_020e5cec: ; 0x020e5cec - .word data_ov00_020e5e88 - .global data_ov00_020e5cf0 -data_ov00_020e5cf0: ; 0x020e5cf0 - .word data_ov00_020e5e90 - .global data_ov00_020e5cf4 -data_ov00_020e5cf4: ; 0x020e5cf4 - .word data_ov00_020e5e98 - .global data_ov00_020e5cf8 -data_ov00_020e5cf8: ; 0x020e5cf8 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5cfc -data_ov00_020e5cfc: ; 0x020e5cfc - .word data_ov00_020e5ea0 - .global data_ov00_020e5d00 -data_ov00_020e5d00: ; 0x020e5d00 - .word data_ov00_020e5ea8 - .global data_ov00_020e5d04 -data_ov00_020e5d04: ; 0x020e5d04 - .word data_ov00_020e5eb0 - .global data_ov00_020e5d08 -data_ov00_020e5d08: ; 0x020e5d08 - .word data_ov00_020e5eb8 - .global data_ov00_020e5d0c -data_ov00_020e5d0c: ; 0x020e5d0c - .word data_ov00_020e5ec4 - .global data_ov00_020e5d10 -data_ov00_020e5d10: ; 0x020e5d10 - .word data_ov00_020e5ecc - .global data_ov00_020e5d14 -data_ov00_020e5d14: ; 0x020e5d14 - .word data_ov00_020e5ed4 - .global data_ov00_020e5d18 -data_ov00_020e5d18: ; 0x020e5d18 - .word data_ov00_020e5edc - .global data_ov00_020e5d1c -data_ov00_020e5d1c: ; 0x020e5d1c - .word data_ov00_020e5ee0 - .global data_ov00_020e5d20 -data_ov00_020e5d20: ; 0x020e5d20 - .word data_ov00_020e5ee8 - .global data_ov00_020e5d24 -data_ov00_020e5d24: ; 0x020e5d24 - .word data_ov00_020e5ef0 - .global data_ov00_020e5d28 -data_ov00_020e5d28: ; 0x020e5d28 - .word data_ov00_020e5ef8 - .global data_ov00_020e5d2c -data_ov00_020e5d2c: ; 0x020e5d2c - .word data_ov00_020e5f00 - .global data_ov00_020e5d30 -data_ov00_020e5d30: ; 0x020e5d30 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d34 -data_ov00_020e5d34: ; 0x020e5d34 - .word data_ov00_020e5f04 - .global data_ov00_020e5d38 -data_ov00_020e5d38: ; 0x020e5d38 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d3c -data_ov00_020e5d3c: ; 0x020e5d3c - .word data_ov00_020e5f0c - .global data_ov00_020e5d40 -data_ov00_020e5d40: ; 0x020e5d40 - .word data_ov00_020e5f18 - .global data_ov00_020e5d44 -data_ov00_020e5d44: ; 0x020e5d44 - .word data_ov00_020e5f20 - .global data_ov00_020e5d48 -data_ov00_020e5d48: ; 0x020e5d48 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d4c -data_ov00_020e5d4c: ; 0x020e5d4c - .word data_ov00_020e5f28 - .global data_ov00_020e5d50 -data_ov00_020e5d50: ; 0x020e5d50 - .word data_ov00_020e5f30 - .global data_ov00_020e5d54 -data_ov00_020e5d54: ; 0x020e5d54 - .word data_ov00_020e5f38 - .global data_ov00_020e5d58 -data_ov00_020e5d58: ; 0x020e5d58 - .word data_ov00_020e5f40 - .global data_ov00_020e5d5c -data_ov00_020e5d5c: ; 0x020e5d5c - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d60 -data_ov00_020e5d60: ; 0x020e5d60 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d64 -data_ov00_020e5d64: ; 0x020e5d64 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d68 -data_ov00_020e5d68: ; 0x020e5d68 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d6c -data_ov00_020e5d6c: ; 0x020e5d6c - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d70 -data_ov00_020e5d70: ; 0x020e5d70 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d74 -data_ov00_020e5d74: ; 0x020e5d74 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d78 -data_ov00_020e5d78: ; 0x020e5d78 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d7c -data_ov00_020e5d7c: ; 0x020e5d7c - .word data_ov00_020e5f48 - .global data_ov00_020e5d80 -data_ov00_020e5d80: ; 0x020e5d80 - .word data_ov00_020e5f50 - .global data_ov00_020e5d84 -data_ov00_020e5d84: ; 0x020e5d84 - .word data_ov00_020e5f5c - .global data_ov00_020e5d88 -data_ov00_020e5d88: ; 0x020e5d88 - .word data_ov00_020e5f68 - .global data_ov00_020e5d8c -data_ov00_020e5d8c: ; 0x020e5d8c - .word data_ov00_020e5f74 - .global data_ov00_020e5d90 -data_ov00_020e5d90: ; 0x020e5d90 - .word data_ov00_020e5f7c - .global data_ov00_020e5d94 -data_ov00_020e5d94: ; 0x020e5d94 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5d98 -data_ov00_020e5d98: ; 0x020e5d98 - .word data_ov00_020e5f84 - .global data_ov00_020e5d9c -data_ov00_020e5d9c: ; 0x020e5d9c - .word data_ov00_020e5f90 - .global data_ov00_020e5da0 -data_ov00_020e5da0: ; 0x020e5da0 - .word data_ov00_020e5f9c - .global data_ov00_020e5da4 -data_ov00_020e5da4: ; 0x020e5da4 - .word data_ov00_020e5fa4 - .global data_ov00_020e5da8 -data_ov00_020e5da8: ; 0x020e5da8 - .word data_ov00_020e5fac - .global data_ov00_020e5dac -data_ov00_020e5dac: ; 0x020e5dac - .word data_ov00_020e5fb4 - .global data_ov00_020e5db0 -data_ov00_020e5db0: ; 0x020e5db0 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5db4 -data_ov00_020e5db4: ; 0x020e5db4 - .word data_ov00_020e5fbc - .global data_ov00_020e5db8 -data_ov00_020e5db8: ; 0x020e5db8 - .word data_ov00_020e5fc8 - .global data_ov00_020e5dbc -data_ov00_020e5dbc: ; 0x020e5dbc - .word data_ov00_020e5fd0 - .global data_ov00_020e5dc0 -data_ov00_020e5dc0: ; 0x020e5dc0 - .word data_ov00_020e5fd8 - .global data_ov00_020e5dc4 -data_ov00_020e5dc4: ; 0x020e5dc4 - .word data_ov00_020e5fe0 - .global data_ov00_020e5dc8 -data_ov00_020e5dc8: ; 0x020e5dc8 - .word data_ov00_020e5fe8 - .global data_ov00_020e5dcc -data_ov00_020e5dcc: ; 0x020e5dcc - .word data_ov00_020e5ff4 - .global data_ov00_020e5dd0 -data_ov00_020e5dd0: ; 0x020e5dd0 - .word data_ov00_020e6000 - .global data_ov00_020e5dd4 -data_ov00_020e5dd4: ; 0x020e5dd4 - .word data_ov00_020e6008 - .global data_ov00_020e5dd8 -data_ov00_020e5dd8: ; 0x020e5dd8 - .word data_ov00_020e6010 - .global data_ov00_020e5ddc -data_ov00_020e5ddc: ; 0x020e5ddc - .word data_ov00_020e6018 - .global data_ov00_020e5de0 -data_ov00_020e5de0: ; 0x020e5de0 - .word data_ov00_020e6024 - .global data_ov00_020e5de4 -data_ov00_020e5de4: ; 0x020e5de4 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5de8 -data_ov00_020e5de8: ; 0x020e5de8 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5dec -data_ov00_020e5dec: ; 0x020e5dec - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5df0 -data_ov00_020e5df0: ; 0x020e5df0 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5df4 -data_ov00_020e5df4: ; 0x020e5df4 - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5df8 -data_ov00_020e5df8: ; 0x020e5df8 - .word data_ov00_020e6030 - .global data_ov00_020e5dfc -data_ov00_020e5dfc: ; 0x020e5dfc - .word data_ov00_020e603c - .global data_ov00_020e5e00 -data_ov00_020e5e00: ; 0x020e5e00 - .word data_ov00_020e6048 - .global data_ov00_020e5e04 -data_ov00_020e5e04: ; 0x020e5e04 - .word data_ov00_020e6050 - .global data_ov00_020e5e08 -data_ov00_020e5e08: ; 0x020e5e08 - .word data_ov00_020e6058 - .global data_ov00_020e5e0c -data_ov00_020e5e0c: ; 0x020e5e0c - .word data_ov00_020e6068 - .global data_ov00_020e5e10 -data_ov00_020e5e10: ; 0x020e5e10 - .word data_ov00_020e6070 - .global data_ov00_020e5e14 -data_ov00_020e5e14: ; 0x020e5e14 - .ascii "key" - .byte 0x00 - .global data_ov00_020e5e18 -data_ov00_020e5e18: ; 0x020e5e18 - .ascii "key" - .byte 0x00 - .global data_ov00_020e5e1c -data_ov00_020e5e1c: ; 0x020e5e1c - .ascii "key" - .byte 0x00 - .global data_ov00_020e5e20 -data_ov00_020e5e20: ; 0x020e5e20 - .ascii "rupee_g" - .byte 0x00 - .global data_ov00_020e5e28 -data_ov00_020e5e28: ; 0x020e5e28 - .ascii "swA" - .byte 0x00 - .global data_ov00_020e5e2c -data_ov00_020e5e2c: ; 0x020e5e2c - .ascii "shA" - .byte 0x00 - .global data_ov00_020e5e30 -data_ov00_020e5e30: ; 0x020e5e30 - .ascii "force_y" - .byte 0x00 - .global data_ov00_020e5e38 -data_ov00_020e5e38: ; 0x020e5e38 - .ascii "bomb" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5e40 -data_ov00_020e5e40: ; 0x020e5e40 - .ascii "bow" - .byte 0x00 - .global data_ov00_020e5e44 -data_ov00_020e5e44: ; 0x020e5e44 - .ascii "rupee_g" - .byte 0x00 - .global data_ov00_020e5e4c -data_ov00_020e5e4c: ; 0x020e5e4c - .ascii "heart_utu" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5e58 -data_ov00_020e5e58: ; 0x020e5e58 - .ascii "boomerang" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5e64 -data_ov00_020e5e64: ; 0x020e5e64 - .ascii "scp" - .byte 0x00 - .global data_ov00_020e5e68 -data_ov00_020e5e68: ; 0x020e5e68 - .ascii "bomchu" - .byte 0x00, 0x00 - .global data_ov00_020e5e70 -data_ov00_020e5e70: ; 0x020e5e70 - .ascii "bosskey" - .byte 0x00 - .global data_ov00_020e5e78 -data_ov00_020e5e78: ; 0x020e5e78 - .ascii "rev_bin" - .byte 0x00 - .global data_ov00_020e5e80 -data_ov00_020e5e80: ; 0x020e5e80 - .ascii "mapSea" - .byte 0x00, 0x00 - .global data_ov00_020e5e88 -data_ov00_020e5e88: ; 0x020e5e88 - .ascii "mapSea" - .byte 0x00, 0x00 - .global data_ov00_020e5e90 -data_ov00_020e5e90: ; 0x020e5e90 - .ascii "mapSea" - .byte 0x00, 0x00 - .global data_ov00_020e5e98 -data_ov00_020e5e98: ; 0x020e5e98 - .ascii "mapSea" - .byte 0x00, 0x00 - .global data_ov00_020e5ea0 -data_ov00_020e5ea0: ; 0x020e5ea0 - .ascii "rupee_b" - .byte 0x00 - .global data_ov00_020e5ea8 -data_ov00_020e5ea8: ; 0x020e5ea8 - .ascii "rupee_r" - .byte 0x00 - .global data_ov00_020e5eb0 -data_ov00_020e5eb0: ; 0x020e5eb0 - .ascii "rupee_r" - .byte 0x00 - .global data_ov00_020e5eb8 -data_ov00_020e5eb8: ; 0x020e5eb8 - .ascii "rupee_go" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5ec4 -data_ov00_020e5ec4: ; 0x020e5ec4 - .ascii "force_y" - .byte 0x00 - .global data_ov00_020e5ecc -data_ov00_020e5ecc: ; 0x020e5ecc - .ascii "force_r" - .byte 0x00 - .global data_ov00_020e5ed4 -data_ov00_020e5ed4: ; 0x020e5ed4 - .ascii "force_b" - .byte 0x00 - .global data_ov00_020e5edc -data_ov00_020e5edc: ; 0x020e5edc - .ascii "ham" - .byte 0x00 - .global data_ov00_020e5ee0 -data_ov00_020e5ee0: ; 0x020e5ee0 - .ascii "rope" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5ee8 -data_ov00_020e5ee8: ; 0x020e5ee8 - .ascii "cstl_c" - .byte 0x00, 0x00 - .global data_ov00_020e5ef0 -data_ov00_020e5ef0: ; 0x020e5ef0 - .ascii "cstl_s" - .byte 0x00, 0x00 - .global data_ov00_020e5ef8 -data_ov00_020e5ef8: ; 0x020e5ef8 - .ascii "cstl_t" - .byte 0x00, 0x00 - .global data_ov00_020e5f00 -data_ov00_020e5f00: ; 0x020e5f00 - .ascii "fp" - .byte 0x00, 0x00 - .global data_ov00_020e5f04 -data_ov00_020e5f04: ; 0x020e5f04 - .ascii "key_su" - .byte 0x00, 0x00 - .global data_ov00_020e5f0c -data_ov00_020e5f0c: ; 0x020e5f0c - .ascii "arrowpod" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5f18 -data_ov00_020e5f18: ; 0x020e5f18 - .ascii "bmbagM" - .byte 0x00, 0x00 - .global data_ov00_020e5f20 -data_ov00_020e5f20: ; 0x020e5f20 - .ascii "bcbagM" - .byte 0x00, 0x00 - .global data_ov00_020e5f28 -data_ov00_020e5f28: ; 0x020e5f28 - .ascii "key_ki" - .byte 0x00, 0x00 - .global data_ov00_020e5f30 -data_ov00_020e5f30: ; 0x020e5f30 - .ascii "minaP" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5f38 -data_ov00_020e5f38: ; 0x020e5f38 - .ascii "minaC" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5f40 -data_ov00_020e5f40: ; 0x020e5f40 - .ascii "minaY" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5f48 -data_ov00_020e5f48: ; 0x020e5f48 - .ascii "key_gh" - .byte 0x00, 0x00 - .global data_ov00_020e5f50 -data_ov00_020e5f50: ; 0x020e5f50 - .ascii "tic_tada" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5f5c -data_ov00_020e5f5c: ; 0x020e5f5c - .ascii "tic_ohome" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5f68 -data_ov00_020e5f68: ; 0x020e5f68 - .ascii "tic_rare" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5f74 -data_ov00_020e5f74: ; 0x020e5f74 - .ascii "neckl" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5f7c -data_ov00_020e5f7c: ; 0x020e5f7c - .ascii "slvarm" - .byte 0x00, 0x00 - .global data_ov00_020e5f84 -data_ov00_020e5f84: ; 0x020e5f84 - .ascii "telescope" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5f90 -data_ov00_020e5f90: ; 0x020e5f90 - .ascii "notebook" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5f9c -data_ov00_020e5f9c: ; 0x020e5f9c - .ascii "letter" - .byte 0x00, 0x00 - .global data_ov00_020e5fa4 -data_ov00_020e5fa4: ; 0x020e5fa4 - .ascii "card" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5fac -data_ov00_020e5fac: ; 0x020e5fac - .ascii "marron" - .byte 0x00, 0x00 - .global data_ov00_020e5fb4 -data_ov00_020e5fb4: ; 0x020e5fb4 - .ascii "swBedge" - .byte 0x00 - .global data_ov00_020e5fbc -data_ov00_020e5fbc: ; 0x020e5fbc - .ascii "makimono" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5fc8 -data_ov00_020e5fc8: ; 0x020e5fc8 - .ascii "hagaH" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5fd0 -data_ov00_020e5fd0: ; 0x020e5fd0 - .ascii "hagaK" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5fd8 -data_ov00_020e5fd8: ; 0x020e5fd8 - .ascii "hagaS" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e5fe0 -data_ov00_020e5fe0: ; 0x020e5fe0 - .ascii "rev_bin" - .byte 0x00 - .global data_ov00_020e5fe8 -data_ov00_020e5fe8: ; 0x020e5fe8 - .ascii "rev_binP" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e5ff4 -data_ov00_020e5ff4: ; 0x020e5ff4 - .ascii "rev_binY" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e6000 -data_ov00_020e6000: ; 0x020e6000 - .ascii "sand_m" - .byte 0x00, 0x00 - .global data_ov00_020e6008 -data_ov00_020e6008: ; 0x020e6008 - .ascii "compass" - .byte 0x00 - .global data_ov00_020e6010 -data_ov00_020e6010: ; 0x020e6010 - .ascii "lure" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e6018 -data_ov00_020e6018: ; 0x020e6018 - .ascii "rupee_bb" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e6024 -data_ov00_020e6024: ; 0x020e6024 - .ascii "rupee_bb" - .byte 0x00, 0x00, 0x00, 0x00 - .global data_ov00_020e6030 -data_ov00_020e6030: ; 0x020e6030 - .ascii "mapTakara" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e603c -data_ov00_020e603c: ; 0x020e603c - .ascii "arrowpodL" - .byte 0x00, 0x00, 0x00 - .global data_ov00_020e6048 -data_ov00_020e6048: ; 0x020e6048 - .ascii "bmbagL" - .byte 0x00, 0x00 - .global data_ov00_020e6050 -data_ov00_020e6050: ; 0x020e6050 - .ascii "bcbagL" - .byte 0x00, 0x00 - .global data_ov00_020e6058 -data_ov00_020e6058: ; 0x020e6058 - .ascii "Player/get/gd_" - .byte 0x00, 0x00 - .global data_ov00_020e6068 -data_ov00_020e6068: ; 0x020e6068 - .ascii ".nsbmd" - .byte 0x00, 0x00 - .global data_ov00_020e6070 -data_ov00_020e6070: ; 0x020e6070 - .ascii ".nsbtx" - .byte 0x00, 0x00 diff --git a/asm/ov00/ov00_020b1498.inc b/asm/ov00/ov00_020b1498.inc index e01dd528..a9e87b3c 100644 --- a/asm/ov00/ov00_020b1498.inc +++ b/asm/ov00/ov00_020b1498.inc @@ -33,7 +33,7 @@ .extern _ZN10PlayerBase8TeleportEP5Vec3psibb .extern _ZN10PlayerBase8vfunc_04Ev .extern _ZN10PlayerBase9AddHealthEs -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager12GetEquipItemEi .extern _ZN11ItemManager12GetItemModelEj .extern _ZN11ItemManager13UnequipPotionEv @@ -193,7 +193,7 @@ .extern data_027e0fa0 .extern data_027e0fac .extern data_027e0fb8 -.extern data_027e0fbc +.extern gHealthManager .extern data_027e0fc4 .extern data_027e0fc8 .extern data_027e0fcc diff --git a/asm/ov00/ov00_020b1498.s b/asm/ov00/ov00_020b1498.s index fb3f9c8b..07ecf977 100644 --- a/asm/ov00/ov00_020b1498.s +++ b/asm/ov00/ov00_020b1498.s @@ -12594,13 +12594,13 @@ func_ov00_020bb44c: ; 0x020bb44c ldrb r0, [r0, #0x12] cmp r0, #0 movne r0, #0xc - ldreq r0, _020bb468 ; =data_027e0fbc + ldreq r0, _020bb468 ; =gHealthManager ldreq r0, [r0] ldreqsh r0, [r0] bx lr .align 2, 0 arm_func_end func_ov00_020bb44c -_020bb468: .word data_027e0fbc +_020bb468: .word gHealthManager .global func_ov00_020bb46c arm_func_start func_ov00_020bb46c @@ -15332,7 +15332,7 @@ func_ov00_020bd510: ; 0x020bd510 ldmltia sp!, {r3, r4, r5, pc} rsb r1, r2, #0 mov r2, #0 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb mvn lr, #0 mov r3, #0 str r3, [sp, #0xc] diff --git a/asm/ov00/ov00_020c3e54.inc b/asm/ov00/ov00_020c3e54.inc index 5f0bb1d2..840dc10a 100644 --- a/asm/ov00/ov00_020c3e54.inc +++ b/asm/ov00/ov00_020c3e54.inc @@ -148,7 +148,6 @@ .extern data_027e0f94 .extern data_027e0fac .extern data_027e0fb8 -.extern data_027e0fbc .extern data_027e0fc8 .extern data_027e0fd4 .extern data_027e0fe0 @@ -668,6 +667,7 @@ .extern func_ov26_021767ec .extern func_ov29_0216d918 .extern gAdventureFlags +.extern gHealthManager .extern gItemManager .extern gMapManager .extern gOverlayManager diff --git a/asm/ov00/ov00_020c3e54.s b/asm/ov00/ov00_020c3e54.s index f75eab4c..7236a01d 100644 --- a/asm/ov00/ov00_020c3e54.s +++ b/asm/ov00/ov00_020c3e54.s @@ -18659,7 +18659,7 @@ _020d274c: mov r1, #0x3c bl func_01ff9b4c sub r0, r4, r0 - ldr r2, _020d27e8 ; =data_027e0fbc + ldr r2, _020d27e8 ; =gHealthManager ldr r1, _020d27ec ; =0x00007fff mov r0, r0, lsl #0x10 and r1, r1, r0, lsr #16 @@ -18688,7 +18688,7 @@ _020d27d8: .word gItemManager _020d27dc: .word data_027e0f64 _020d27e0: .word data_ov00_020df294 _020d27e4: .word data_027e103c -_020d27e8: .word data_027e0fbc +_020d27e8: .word gHealthManager _020d27ec: .word 0x00007fff .global func_ov00_020d27f0 @@ -24429,9 +24429,9 @@ _020d73b0: ldmia sp!, {r4, pc} arm_func_end func_ov00_020d7394 - .global func_ov00_020d73bc - arm_func_start func_ov00_020d73bc -func_ov00_020d73bc: ; 0x020d73bc + .global PlaySoundEffect + arm_func_start PlaySoundEffect +PlaySoundEffect: ; 0x020d73bc stmdb sp!, {r3, r4, r5, lr} mov r4, r1 mov r5, r0 @@ -24445,7 +24445,7 @@ func_ov00_020d73bc: ; 0x020d73bc str ip, [sp] bl func_ov00_020d6d30 ldmia sp!, {r3, r4, r5, pc} - arm_func_end func_ov00_020d73bc + arm_func_end PlaySoundEffect .global func_ov00_020d73f0 arm_func_start func_ov00_020d73f0 diff --git a/asm/ov02.inc b/asm/ov02.inc index 2ede9c1d..afd888d4 100644 --- a/asm/ov02.inc +++ b/asm/ov02.inc @@ -12,8 +12,8 @@ .extern _ZNK11ItemManager13GetFairyLevelEi .extern _ZNK11ItemManager16GetShipPartCountEjj .extern _ZNK11ItemManager18GetUnk_09e_DividedEj -.extern _ZNK11ItemManager18IsTreasureSalvagedEjj .extern _ZNK11ItemManager19GetEquippedShipPartEj +.extern _ZNK11ItemManager21HasShipPartPriceShownEjj .extern _ZNK11ItemManager21HasTreasurePriceShownEj .extern _ZNK11ItemManager7HasItemEi .extern __register_global_object @@ -34,7 +34,6 @@ .extern data_027e0d78 .extern data_027e0f88 .extern data_027e0f8c -.extern data_027e0fbc .extern data_027e1044 .extern data_027e1050 .extern data_027e1058 @@ -258,5 +257,6 @@ .extern func_ov45_0218a284 .extern func_ov45_0218db94 .extern gAdventureFlags +.extern gHealthManager .extern gItemManager .extern gMapManager diff --git a/asm/ov02.s b/asm/ov02.s index f2e646ca..ff23da1d 100644 --- a/asm/ov02.s +++ b/asm/ov02.s @@ -1497,7 +1497,7 @@ _020f01e4: mov r1, #9 str r6, [sp] bl func_0203493c - ldr r0, _020f0730 ; =data_027e0fbc + ldr r0, _020f0730 ; =gHealthManager ldr r0, [r0] ldrb r0, [r0, #0xe] cmp r0, #0 @@ -1508,7 +1508,7 @@ _020f01e4: mov r1, #0xa str r6, [sp] bl func_0203493c - ldr r0, _020f0730 ; =data_027e0fbc + ldr r0, _020f0730 ; =gHealthManager mov r1, #0x3c ldr r0, [r0] ldrh r6, [r0, #0xc] @@ -1842,7 +1842,7 @@ _020f0720: .word gItemManager _020f0724: .word gAdventureFlags _020f0728: .word 0x91a2b3c5 _020f072c: .word 0x88888889 -_020f0730: .word data_027e0fbc +_020f0730: .word gHealthManager .global func_ov02_020f0734 arm_func_start func_ov02_020f0734 @@ -2883,7 +2883,7 @@ _020f1424: mov r1, r0 ldr r2, [r5, #0x1c] mov r0, r6 - blx _ZNK11ItemManager18IsTreasureSalvagedEjj + blx _ZNK11ItemManager21HasShipPartPriceShownEjj cmp r0, #0 beq _020f14f4 add ip, sp, #0x28 @@ -5052,10 +5052,10 @@ func_ov02_020f2e84: ; 0x020f2e84 bl func_ov00_020d77e4 mov r0, #1 blx func_ov09_0211bf3c - ldr r0, _020f2f18 ; =data_027e0fbc + ldr r0, _020f2f18 ; =gHealthManager ldr r0, [r0] blx func_ov00_020b8060 - ldr r0, _020f2f18 ; =data_027e0fbc + ldr r0, _020f2f18 ; =gHealthManager ldr r1, [r0] ldrsh r0, [r1, #4] strh r0, [r1, #6] @@ -5065,7 +5065,7 @@ func_ov02_020f2e84: ; 0x020f2e84 _020f2f0c: .word gItemManager _020f2f10: .word data_ov02_020f6c80 _020f2f14: .word data_ov00_020eec9c -_020f2f18: .word data_027e0fbc +_020f2f18: .word gHealthManager .global func_ov02_020f2f1c arm_func_start func_ov02_020f2f1c diff --git a/asm/ov03.inc b/asm/ov03.inc index 5f7fe179..826e9d78 100644 --- a/asm/ov03.inc +++ b/asm/ov03.inc @@ -56,7 +56,7 @@ .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager15GetEquippedItemEv .extern _ZNK11ItemManager16GetEquippedFairyEv -.extern _ZNK11ItemManager18func_ov00_020ae350Ev +.extern _ZNK11ItemManager10GetNumKeysEv .extern _ZNK11ItemManager7HasItemEi .extern __register_global_object .extern data_02050f54 diff --git a/asm/ov03.s b/asm/ov03.s index 89882c2a..86db22ed 100644 --- a/asm/ov03.s +++ b/asm/ov03.s @@ -12689,7 +12689,7 @@ func_ov03_020f63d4: ; 0x020f63d4 bl func_ov03_020f5d48 ldr r0, _020f6414 ; =gItemManager ldr r0, [r0] - blx _ZNK11ItemManager18func_ov00_020ae350Ev + blx _ZNK11ItemManager10GetNumKeysEv mov r1, #0x79 lsl r1, r1, #2 str r0, [r4, r1] @@ -13183,7 +13183,7 @@ func_ov03_020f6a88: ; 0x020f6a88 ldmeqia sp!, {r3, r4, r5, pc} ldr r0, _020f6b10 ; =gItemManager ldr r0, [r0] - bl _ZNK11ItemManager18func_ov00_020ae350Ev + bl _ZNK11ItemManager10GetNumKeysEv ldr r1, [r5, #0x1e4] mov r4, r0 subs r0, r4, r1 diff --git a/asm/ov04.inc b/asm/ov04.inc index 709a24b4..4b0d0081 100644 --- a/asm/ov04.inc +++ b/asm/ov04.inc @@ -137,7 +137,7 @@ .extern data_027e0f94 .extern data_027e0fac .extern data_027e0fb8 -.extern data_027e0fbc +.extern gHealthManager .extern data_027e0fc0 .extern data_027e0fc4 .extern data_027e0fc8 diff --git a/asm/ov04.s b/asm/ov04.s index e124b66a..efeb9f7d 100644 --- a/asm/ov04.s +++ b/asm/ov04.s @@ -7771,7 +7771,7 @@ _0210482c: _02104840: bl func_ov04_02105a64 bl func_ov04_021084e8 - ldr r0, _021049b0 ; =data_027e0fbc + ldr r0, _021049b0 ; =gHealthManager ldr r1, [sp, #8] ldr r0, [r0] bl func_ov04_02107f48 @@ -7918,7 +7918,7 @@ _021049a0: .word data_ov12_02137c64 _021049a4: .word data_027e077c _021049a8: .word 0x04000304 _021049ac: .word 0xffff7fff -_021049b0: .word data_027e0fbc +_021049b0: .word gHealthManager _021049b4: .word data_ov00_020e9360 _021049b8: .word data_027e0e5c _021049bc: .word data_027e0d04 @@ -8001,7 +8001,7 @@ _02104a3c: ldr r0, _02104afc ; =data_ov00_020e9370 bl func_ov04_0210694c bl func_ov00_02079df0 - ldr r0, _02104b00 ; =data_027e0fbc + ldr r0, _02104b00 ; =gHealthManager ldr r0, [r0] bl func_ov04_02108008 bl func_ov04_02105a8c @@ -8029,7 +8029,7 @@ _02104af0: .word data_027e0c68 _02104af4: .word data_027e103c _02104af8: .word data_02068e64 _02104afc: .word data_ov00_020e9370 -_02104b00: .word data_027e0fbc +_02104b00: .word gHealthManager _02104b04: .word data_027e0cbc .global func_ov04_02104b08 @@ -14886,19 +14886,19 @@ func_ov04_02107e54: ; 0x02107e54 beq _02107e6a bl func_ov04_02107e9c _02107e6a: - ldr r1, _02107e74 ; =data_027e0fbc + ldr r1, _02107e74 ; =gHealthManager str r0, [r1] pop {r3, pc} .align 2, 0 thumb_func_end func_ov04_02107e54 _02107e70: .word data_027e0ce0 -_02107e74: .word data_027e0fbc +_02107e74: .word gHealthManager .global func_ov04_02107e78 thumb_func_start func_ov04_02107e78 func_ov04_02107e78: ; 0x02107e78 push {r4, lr} - ldr r0, _02107e98 ; =data_027e0fbc + ldr r0, _02107e98 ; =gHealthManager ldr r4, [r0] cmp r4, #0 beq _02107e8e @@ -14907,13 +14907,13 @@ func_ov04_02107e78: ; 0x02107e78 add r0, r4, #0 blx _ZN9SysObjectdlEPv _02107e8e: - ldr r0, _02107e98 ; =data_027e0fbc + ldr r0, _02107e98 ; =gHealthManager mov r1, #0 str r1, [r0] pop {r4, pc} nop thumb_func_end func_ov04_02107e78 -_02107e98: .word data_027e0fbc +_02107e98: .word gHealthManager .global func_ov04_02107e9c thumb_func_start func_ov04_02107e9c diff --git a/asm/ov05.inc b/asm/ov05.inc index 1748e50e..901ca129 100644 --- a/asm/ov05.inc +++ b/asm/ov05.inc @@ -1,5 +1,6 @@ #pragma once .extern Divide +.extern GiveShipPart .extern _ZN10MapManager16MapData_vfunc_68Ev .extern _ZN10MapManager16MapData_vfunc_78Ev .extern _ZN10MapManager16MapData_vfunc_84Ev @@ -25,9 +26,9 @@ .extern _ZN10MapManager18func_ov00_0208583cEiP5Vec3pi .extern _ZN10PlayerBase18func_ov00_020a7c00Ei .extern _ZN11ItemManager12GetItemModelEj -.extern _ZN11ItemManager15LoadFanfareItemEj -.extern _ZN11ItemManager18func_ov00_020ae648Ejjj -.extern _ZN11ItemManager8GiveItemEjjj +.extern _ZN11ItemManager15LoadFanfareItemEi +.extern _ZN11ItemManager18PlayItemFanfareSfxEi +.extern _ZN11ItemManager8GiveItemEi .extern _ZN12ActorManager11DeleteActorEjb .extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList .extern _ZN12ActorManager13FindActorByIdEj @@ -148,6 +149,8 @@ .extern _ZN17LinkStateInteract24SetNormalizedThrowOffsetEP5Vec3p .extern _ZN4Item18func_ov00_020ad020Ei .extern _ZN5Actor9GetHitboxEP8Cylinder +.extern _ZN7MapBase18func_ov00_0207dea0Eb +.extern _ZN7MapBase18func_ov00_02080de8Ei .extern _ZN9SysObjectdlEPv .extern _ZNK11ItemManager13HasAllPotionsEv .extern _ZNK11ItemManager15HasPurplePotionEv @@ -201,7 +204,6 @@ .extern data_027e0fac .extern data_027e0fb0 .extern data_027e0fb8 -.extern data_027e0fbc .extern data_027e0fc0 .extern data_027e0fc8 .extern data_027e0fcc @@ -360,8 +362,6 @@ .extern func_ov00_0207c1f8 .extern func_ov00_0207c358 .extern func_ov00_0207c444 -.extern _ZN7MapBase18func_ov00_0207dea0Eb -.extern _ZN7MapBase18func_ov00_02080de8Ei .extern func_ov00_02081f4c .extern func_ov00_0208726c .extern func_ov00_020872e8 @@ -509,7 +509,6 @@ .extern func_ov09_02118cd4 .extern func_ov09_0211c724 .extern func_ov09_0211c808 -.extern func_ov09_0211ca20 .extern func_ov09_0211cac0 .extern func_ov12_02134208 .extern func_ov14_02127df4 @@ -575,6 +574,7 @@ .extern func_ov59_0219907c .extern func_ov59_021990a4 .extern gAdventureFlags +.extern gHealthManager .extern gItemManager .extern gMapManager .extern gOverlayManager diff --git a/asm/ov05.s b/asm/ov05.s index a5b8179c..cd59e77b 100644 --- a/asm/ov05.s +++ b/asm/ov05.s @@ -9487,7 +9487,7 @@ func_ov05_021088c8: ; 0x021088c8 bl func_020385d0 cmp r0, #0 beq _0210899c - ldr r1, _021089a8 ; =data_027e0fbc + ldr r1, _021089a8 ; =gHealthManager ldr r4, _021089ac ; =0x88888889 ldr r1, [r1] mov ip, #0x3c @@ -9534,7 +9534,7 @@ _0210899c: ldmia sp!, {r4, r5, r6, r7, r8, pc} .align 2, 0 arm_func_end func_ov05_021088c8 -_021089a8: .word data_027e0fbc +_021089a8: .word gHealthManager _021089ac: .word 0x88888889 _021089b0: .word 0x66666667 _021089b4: .word 0x00007fff @@ -9681,7 +9681,7 @@ _02108b9c: str r0, [r4, #0x74] ldr r0, [sp, #4] ldr r1, [sp] - blx func_ov09_0211ca20 + blx GiveShipPart b _02108be8 _02108bb4: ldr r0, _02108cf0 ; =gItemManager @@ -9726,7 +9726,7 @@ _02108c34: ldr r0, _02108cf0 ; =gItemManager ldr r1, [r4, #0x74] ldr r0, [r0] - blx _ZN11ItemManager15LoadFanfareItemEj + blx _ZN11ItemManager15LoadFanfareItemEi ldr r0, [r4, #0x74] mov r2, #1 cmp r0, #0x81 @@ -9884,7 +9884,7 @@ _02108e44: ldr r0, _02108e88 ; =gItemManager mov r1, r4 ldr r0, [r0] - blx _ZN11ItemManager15LoadFanfareItemEj + blx _ZN11ItemManager15LoadFanfareItemEi ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov05_02108e08 @@ -10245,7 +10245,7 @@ _02109354: cmp r0, #0 beq _02109380 ldr r0, [r5, #0x74] - blx _ZN11ItemManager18func_ov00_020ae648Ejjj + blx _ZN11ItemManager18PlayItemFanfareSfxEi _02109380: mov r0, r5 bl _ZN13LinkStateBase18func_ov00_020a8d50Ev @@ -10610,11 +10610,11 @@ _02109828: bl _ZN13LinkStateBase18func_ov00_020a8360Ei b _021098bc _02109834: - ldr r0, _021099bc ; =data_027e0fbc + ldr r0, _021099bc ; =gHealthManager mov r1, #4 ldr r0, [r0] blx func_ov00_020b804c - ldr r1, _021099bc ; =data_027e0fbc + ldr r1, _021099bc ; =gHealthManager mov r0, r5 ldr r1, [r1] ldrsh r1, [r1] @@ -10646,7 +10646,7 @@ _0210989c: ldr r0, _021099cc ; =gItemManager ldr r1, [r5, #0x74] ldr r0, [r0] - blx _ZN11ItemManager8GiveItemEjjj + blx _ZN11ItemManager8GiveItemEi _021098bc: mov r0, r4 blx _ZN4Item18func_ov00_020ad020Ei @@ -10719,7 +10719,7 @@ _021099a4: .align 2, 0 arm_func_end func_ov05_021097b0 _021099b8: .word 0x464f5243 -_021099bc: .word data_027e0fbc +_021099bc: .word gHealthManager _021099c0: .word data_027e103c _021099c4: .word 0x424b4559 _021099c8: .word 0x43525953 diff --git a/asm/ov09.inc b/asm/ov09.inc index 5f97c006..261c1337 100644 --- a/asm/ov09.inc +++ b/asm/ov09.inc @@ -1,6 +1,6 @@ #pragma once .extern Divide -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager13EquipShipPartEjj .extern _ZN11ItemManager16SetShipPartCountEjjc .extern _ZN11ItemManager16SetTreasureCountEjc @@ -52,7 +52,6 @@ .extern gMapManager .extern data_027e0f64 .extern data_027e0f90 -.extern data_027e0fbc .extern data_027e0fe4 .extern data_027e0ffc .extern data_027e103c @@ -451,6 +450,7 @@ .extern func_ov18_02160a74 .extern func_ov29_0216dcf4 .extern gAdventureFlags +.extern gHealthManager .extern gItemManager .extern gOverlayManager .extern strcat diff --git a/asm/ov09.s b/asm/ov09.s index acb0357c..5b47a4cd 100644 --- a/asm/ov09.s +++ b/asm/ov09.s @@ -3580,7 +3580,7 @@ _0211483a: strb r0, [r1] add r0, sp, #0x48 bl func_ov00_0207a38c - ldr r0, _02114988 ; =data_027e0fbc + ldr r0, _02114988 ; =gHealthManager add r1, sp, #0x48 ldr r0, [r0] bl func_ov00_020b7ffc @@ -3706,7 +3706,7 @@ _02114960: thumb_func_end func_ov09_02114810 _02114980: .word data_027e0dbc _02114984: .word data_ov00_020e9ec0 -_02114988: .word data_027e0fbc +_02114988: .word gHealthManager _0211498c: .word data_ov00_020e9e18 _02114990: .word data_ov09_0211f5b4 _02114994: .word data_ov00_020e9f08 @@ -16992,9 +16992,9 @@ _0211c6f2: thumb_func_end func_ov09_0211c6b4 _0211c6fc: .word gItemManager - .global func_ov09_0211c700 - thumb_func_start func_ov09_0211c700 -func_ov09_0211c700: ; 0x0211c700 + .global EquipLinebeckCannon + thumb_func_start EquipLinebeckCannon +EquipLinebeckCannon: ; 0x0211c700 push {r3, lr} ldr r0, _0211c720 ; =gItemManager mov r1, #3 @@ -17010,7 +17010,7 @@ func_ov09_0211c700: ; 0x0211c700 _0211c71c: pop {r3, pc} nop - thumb_func_end func_ov09_0211c700 + thumb_func_end EquipLinebeckCannon _0211c720: .word gItemManager .global func_ov09_0211c724 @@ -17414,7 +17414,7 @@ func_ov09_0211c9a8: ; 0x0211c9a8 add r1, r0, #0 add r0, r6, #0 mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj + blx _ZN11ItemManager10GiveRupeesEsb ldr r0, _0211c9e4 ; =gItemManager add r1, r5, #0 ldr r6, [r0] @@ -17445,7 +17445,7 @@ func_ov09_0211c9e8: ; 0x0211c9e8 add r1, r0, #0 add r0, r4, #0 mov r2, #1 - blx _ZN11ItemManager10GiveRupeesEjj + blx _ZN11ItemManager10GiveRupeesEsb ldr r0, _0211ca1c ; =gItemManager add r1, r5, #0 ldr r4, [r0] @@ -17463,9 +17463,9 @@ func_ov09_0211c9e8: ; 0x0211c9e8 thumb_func_end func_ov09_0211c9e8 _0211ca1c: .word gItemManager - .global func_ov09_0211ca20 - thumb_func_start func_ov09_0211ca20 -func_ov09_0211ca20: ; 0x0211ca20 + .global GiveShipPart + thumb_func_start GiveShipPart +GiveShipPart: ; 0x0211ca20 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 @@ -17538,7 +17538,7 @@ _0211ca94: add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 - thumb_func_end func_ov09_0211ca20 + thumb_func_end GiveShipPart _0211caa8: .word gItemManager _0211caac: .word data_ov09_0211f294 _0211cab0: .word data_ov09_0211f298 diff --git a/asm/ov12.inc b/asm/ov12.inc index deae5042..0303dc97 100644 --- a/asm/ov12.inc +++ b/asm/ov12.inc @@ -1,6 +1,7 @@ #pragma once .extern Approach_thunk .extern Divide +.extern PlaySoundEffect .extern _ZN10MapManager16MapData_vfunc_68Ev .extern _ZN10MapManager17GetMapData_Unk_48Ev .extern _ZN10MapManager17Get_MapData_Unk28Ev @@ -632,7 +633,6 @@ .extern func_ov00_020d70a4 .extern func_ov00_020d716c .extern func_ov00_020d7180 -.extern func_ov00_020d73bc .extern func_ov00_020d7404 .extern func_ov00_020d77e4 .extern func_ov00_020d7a84 diff --git a/asm/ov12.s b/asm/ov12.s index ab0603fa..70704064 100644 --- a/asm/ov12.s +++ b/asm/ov12.s @@ -20651,7 +20651,7 @@ _021239cc: bl func_ov12_02124dfc mov r1, r0 ldr r0, _02123a20 ; =data_ov00_020eec68 - bl func_ov00_020d73bc + bl PlaySoundEffect b _02123a04 _021239ec: ldrb r0, [r6, #0x370] @@ -20659,7 +20659,7 @@ _021239ec: beq _02123a04 ldr r0, _02123a20 ; =data_ov00_020eec68 mov r1, #0x2b - bl func_ov00_020d73bc + bl PlaySoundEffect _02123a04: mov r0, #7 str r0, [r6, #0xc] diff --git a/asm/ov14/Actor/ActorRupee.inc b/asm/ov14/Actor/ActorRupee.inc index 503947b8..809631b5 100644 --- a/asm/ov14/Actor/ActorRupee.inc +++ b/asm/ov14/Actor/ActorRupee.inc @@ -1,6 +1,6 @@ #pragma once .extern _ZN10MapManager18func_ov00_02083fb0EiPS_i -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN5Actor10SetUnk_11bEv .extern _ZN5Actor11SetVelocityEP5Vec3p .extern _ZN5Actor12ApplyGravityEv diff --git a/asm/ov14/Actor/ActorRupee.s b/asm/ov14/Actor/ActorRupee.s index 8a454123..b8548347 100644 --- a/asm/ov14/Actor/ActorRupee.s +++ b/asm/ov14/Actor/ActorRupee.s @@ -371,7 +371,7 @@ _0213b2f8: mov r1, r0 mov r0, r6 mov r2, #0 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb ldr r0, [r5, #0x158] mvn r1, #0 cmp r0, #0 diff --git a/asm/ov14/ov14_0211f640.inc b/asm/ov14/ov14_0211f640.inc index 8f229369..f23b93a8 100644 --- a/asm/ov14/ov14_0211f640.inc +++ b/asm/ov14/ov14_0211f640.inc @@ -137,9 +137,9 @@ .extern _ZN9ActorTypeD1Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj +.extern _ZNK11ItemManager10GetNumKeysEv .extern _ZNK11ItemManager15GetEquippedItemEv .extern _ZNK11ItemManager18func_ov00_020ad560Ei -.extern _ZNK11ItemManager18func_ov00_020ae350Ev .extern _ZNK11ItemManager7HasItemEi .extern __register_global_object .extern data_02050f54 diff --git a/asm/ov14/ov14_0211f640.s b/asm/ov14/ov14_0211f640.s index 56e7282a..21002b8b 100644 --- a/asm/ov14/ov14_0211f640.s +++ b/asm/ov14/ov14_0211f640.s @@ -10454,7 +10454,7 @@ func_ov14_02127df4: ; 0x02127df4 ldmneia sp!, {r3, pc} ldr r0, _02127e24 ; =gItemManager ldr r0, [r0] - bl _ZNK11ItemManager18func_ov00_020ae350Ev + bl _ZNK11ItemManager10GetNumKeysEv cmp r0, #0 movgt r0, #1 movle r0, #0 @@ -10474,7 +10474,7 @@ func_ov14_02127e28: ; 0x02127e28 ldmneia sp!, {r4, pc} ldr r0, _02127eb4 ; =gItemManager ldr r0, [r0] - bl _ZNK11ItemManager18func_ov00_020ae350Ev + bl _ZNK11ItemManager10GetNumKeysEv cmp r0, #0 mvnle r0, #0 ldmleia sp!, {r4, pc} diff --git a/asm/ov14/ov14_0213b778.inc b/asm/ov14/ov14_0213b778.inc index ad41220e..eaf3fe77 100644 --- a/asm/ov14/ov14_0213b778.inc +++ b/asm/ov14/ov14_0213b778.inc @@ -1,19 +1,55 @@ #pragma once .extern Approach_thunk .extern Divide +.extern _ZN10MapManager16MapData_vfunc_54Ev +.extern _ZN10MapManager16MapData_vfunc_68Ev +.extern _ZN10MapManager16MapData_vfunc_78Ev +.extern _ZN10MapManager16MapData_vfunc_b4Ev +.extern _ZN10MapManager17GetMapData_Unk_06Ev +.extern _ZN10MapManager17GetMapData_Unk_07Ev +.extern _ZN10MapManager17GetMapData_Unk_d0EP5Vec3p +.extern _ZN10MapManager17Get_MapData_Unk28Ev +.extern _ZN10MapManager17Get_MapData_Unk2aEv +.extern _ZN10MapManager18func_ov00_020823c4EPii +.extern _ZN10MapManager18func_ov00_020823d4Ei +.extern _ZN10MapManager18func_ov00_020823e4Ei +.extern _ZN10MapManager18func_ov00_02082680Eii +.extern _ZN10MapManager18func_ov00_020826a0Eiii +.extern _ZN10MapManager18func_ov00_02082d08Ev +.extern _ZN10MapManager18func_ov00_020836dcEii +.extern _ZN10MapManager18func_ov00_02083770Eji +.extern _ZN10MapManager18func_ov00_02083790Ei +.extern _ZN10MapManager18func_ov00_02083840Ei +.extern _ZN10MapManager18func_ov00_020838e8EjPi +.extern _ZN10MapManager18func_ov00_020839b4Ei +.extern _ZN10MapManager18func_ov00_020839c4Ei +.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p +.extern _ZN10MapManager18func_ov00_02083e34Ecci +.extern _ZN10MapManager18func_ov00_020840dcEv +.extern _ZN10MapManager18func_ov00_020843ecEPi +.extern _ZN10MapManager18func_ov00_020849c0Ev +.extern _ZN10MapManager18func_ov00_020849dcEv +.extern _ZN10MapManager18func_ov00_02084ac4Ej +.extern _ZN10MapManager18func_ov00_02084c7cEi +.extern _ZN10MapManager18func_ov00_02084c94Ei +.extern _ZN10MapManager18func_ov00_02084cb0Ei +.extern _ZN10MapManager18func_ov00_02084cc8Ei +.extern _ZN10MapManager20GetCourseData_Unk_86Ev +.extern _ZN10MapManager20GetCourseData_Unk_87Ev +.extern _ZN10MapManager8SpawnNPCEP5Vec3pii .extern _ZN10PlayerBase18func_ov00_020a7c00Ei .extern _ZN10PlayerBase9AddHealthEs .extern _ZN10PlayerBase9SetHealthEs .extern _ZN11ItemManager12GetEquipItemEi .extern _ZN11ItemManager12GetItemModelEj .extern _ZN11ItemManager13TickEquipItemEv -.extern _ZN11ItemManager15LoadFanfareItemEj +.extern _ZN11ItemManager15LoadFanfareItemEi .extern _ZN11ItemManager15SetEquippedItemEi .extern _ZN11ItemManager17EquipPreviousItemEv .extern _ZN11ItemManager18EquipItem_vfunc_38Ei -.extern _ZN11ItemManager18func_ov00_020ae648Ejjj -.extern _ZN11ItemManager8GiveItemEjjj -.extern _ZN11ItemManager9SetPotionEjj +.extern _ZN11ItemManager18PlayItemFanfareSfxEi +.extern _ZN11ItemManager8GiveItemEi +.extern _ZN11ItemManager9SetPotionEjh .extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList .extern _ZN12ActorManager13FindActorByIdEj .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j @@ -91,6 +127,8 @@ .extern _ZN5Actor9GetHitboxEP8Cylinder .extern _ZN5ActorC2Ev .extern _ZN5ActorD2Ev +.extern _ZN9ActorTypeC1EjPFP5ActorvEPv +.extern _ZN9ActorTypeD1Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager10GetMaxAmmoEi @@ -124,7 +162,6 @@ .extern data_027e0d44 .extern data_027e0d78 .extern data_027e0e58 -.extern gMapManager .extern data_027e0f64 .extern data_027e0f68 .extern data_027e0f6c @@ -133,7 +170,6 @@ .extern data_027e0f94 .extern data_027e0fa0 .extern data_027e0fb8 -.extern data_027e0fbc .extern data_027e0fc0 .extern data_027e0fc4 .extern data_027e0fc8 @@ -289,8 +325,6 @@ .extern func_020386c4 .extern func_020386cc .extern func_0203d7e0 -.extern _ZN9ActorTypeC1EjPFP5ActorvEPv -.extern _ZN9ActorTypeD1Ev .extern func_0203eb0c .extern func_0203eba8 .extern func_0203ebc8 @@ -315,42 +349,6 @@ .extern func_ov00_0207c444 .extern func_ov00_0207c474 .extern func_ov00_02081f4c -.extern _ZN10MapManager18func_ov00_020823c4EPii -.extern _ZN10MapManager18func_ov00_020823d4Ei -.extern _ZN10MapManager18func_ov00_020823e4Ei -.extern _ZN10MapManager16MapData_vfunc_b4Ev -.extern _ZN10MapManager18func_ov00_02082680Eii -.extern _ZN10MapManager18func_ov00_020826a0Eiii -.extern _ZN10MapManager18func_ov00_02082d08Ev -.extern _ZN10MapManager20GetCourseData_Unk_86Ev -.extern _ZN10MapManager20GetCourseData_Unk_87Ev -.extern _ZN10MapManager17Get_MapData_Unk28Ev -.extern _ZN10MapManager17Get_MapData_Unk2aEv -.extern _ZN10MapManager17GetMapData_Unk_d0EP5Vec3p -.extern _ZN10MapManager18func_ov00_020836dcEii -.extern _ZN10MapManager18func_ov00_02083770Eji -.extern _ZN10MapManager18func_ov00_02083790Ei -.extern _ZN10MapManager18func_ov00_02083840Ei -.extern _ZN10MapManager18func_ov00_020838e8EjPi -.extern _ZN10MapManager18func_ov00_020839b4Ei -.extern _ZN10MapManager18func_ov00_020839c4Ei -.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p -.extern _ZN10MapManager18func_ov00_02083e34Ecci -.extern _ZN10MapManager16MapData_vfunc_68Ev -.extern _ZN10MapManager16MapData_vfunc_54Ev -.extern _ZN10MapManager16MapData_vfunc_78Ev -.extern _ZN10MapManager18func_ov00_020840dcEv -.extern _ZN10MapManager18func_ov00_020843ecEPi -.extern _ZN10MapManager17GetMapData_Unk_06Ev -.extern _ZN10MapManager17GetMapData_Unk_07Ev -.extern _ZN10MapManager18func_ov00_020849c0Ev -.extern _ZN10MapManager18func_ov00_020849dcEv -.extern _ZN10MapManager8SpawnNPCEP5Vec3pii -.extern _ZN10MapManager18func_ov00_02084ac4Ej -.extern _ZN10MapManager18func_ov00_02084c7cEi -.extern _ZN10MapManager18func_ov00_02084c94Ei -.extern _ZN10MapManager18func_ov00_02084cb0Ei -.extern _ZN10MapManager18func_ov00_02084cc8Ei .extern func_ov00_0208726c .extern func_ov00_020876bc .extern func_ov00_0208819c @@ -851,7 +849,9 @@ .extern func_ov59_02198fc8 .extern func_ov59_02198fcc .extern gAdventureFlags +.extern gHealthManager .extern gItemManager +.extern gMapManager .extern gOverlayManager .extern gPlayerAnimHandler .extern strcat diff --git a/asm/ov14/ov14_0213b778.s b/asm/ov14/ov14_0213b778.s index c324558f..c98d4af6 100644 --- a/asm/ov14/ov14_0213b778.s +++ b/asm/ov14/ov14_0213b778.s @@ -4744,7 +4744,7 @@ func_ov14_0213ef2c: ; 0x0213ef2c add r0, r4, #0 add r0, #0x80 strb r1, [r0] - ldr r0, _0213ef5c ; =data_027e0fbc + ldr r0, _0213ef5c ; =gHealthManager ldr r1, [r0] mov r0, #2 ldrsh r0, [r1, r0] @@ -4754,7 +4754,7 @@ func_ov14_0213ef2c: ; 0x0213ef2c nop thumb_func_end func_ov14_0213ef2c _0213ef58: .word data_ov14_02159084 -_0213ef5c: .word data_027e0fbc +_0213ef5c: .word gHealthManager .global func_ov14_0213ef60 thumb_func_start func_ov14_0213ef60 @@ -4768,7 +4768,7 @@ func_ov14_0213ef60: ; 0x0213ef60 bl func_0202e7fc mov r0, #0xa ldrsh r1, [r4, r0] - ldr r0, _0213ef90 ; =data_027e0fbc + ldr r0, _0213ef90 ; =gHealthManager ldr r0, [r0] strh r1, [r0, #2] add r0, r4, #0 @@ -4780,7 +4780,7 @@ func_ov14_0213ef60: ; 0x0213ef60 _0213ef84: .word data_ov14_02159084 _0213ef88: .word data_ov14_0215b248 _0213ef8c: .word data_027e077c -_0213ef90: .word data_027e0fbc +_0213ef90: .word gHealthManager .global func_ov14_0213ef94 thumb_func_start func_ov14_0213ef94 @@ -4794,7 +4794,7 @@ func_ov14_0213ef94: ; 0x0213ef94 bl func_0202e7fc mov r0, #0xa ldrsh r1, [r4, r0] - ldr r0, _0213efcc ; =data_027e0fbc + ldr r0, _0213efcc ; =gHealthManager ldr r0, [r0] strh r1, [r0, #2] add r0, r4, #0 @@ -4808,7 +4808,7 @@ func_ov14_0213ef94: ; 0x0213ef94 _0213efc0: .word data_ov14_02159084 _0213efc4: .word data_ov14_0215b248 _0213efc8: .word data_027e077c -_0213efcc: .word data_027e0fbc +_0213efcc: .word gHealthManager .global func_ov14_0213efd0 thumb_func_start func_ov14_0213efd0 @@ -5280,7 +5280,7 @@ _0213f516: ldr r0, _0213f598 ; =gItemManager mov r2, #0 ldr r0, [r0] - blx _ZN11ItemManager9SetPotionEjj + blx _ZN11ItemManager9SetPotionEjh b _0213f534 _0213f52c: add r1, r1, #1 @@ -5365,14 +5365,14 @@ func_ov14_0213f5dc: ; 0x0213f5dc stmdb sp!, {r4, lr} mov r4, r0 bl _ZN10PlayerBase9AddHealthEs - ldr r0, _0213f5fc ; =data_027e0fbc + ldr r0, _0213f5fc ; =gHealthManager ldrsh r1, [r4, #0xa] ldr r0, [r0] strh r1, [r0, #2] ldmia sp!, {r4, pc} .align 2, 0 arm_func_end func_ov14_0213f5dc -_0213f5fc: .word data_027e0fbc +_0213f5fc: .word gHealthManager .global func_ov14_0213f600 arm_func_start func_ov14_0213f600 @@ -26937,7 +26937,7 @@ _021506e6: ldr r0, _02150764 ; =gItemManager add r1, r4, #0 ldr r0, [r0] - bl _ZN11ItemManager8GiveItemEjjj + bl _ZN11ItemManager8GiveItemEi ldr r2, _02150760 ; =data_027e1058 add r0, r5, #0 ldr r2, [r2] @@ -26978,12 +26978,12 @@ _02150742: ldr r0, _02150764 ; =gItemManager add r1, r4, #0 ldr r0, [r0] - bl _ZN11ItemManager8GiveItemEjjj + bl _ZN11ItemManager8GiveItemEi _0215074c: ldr r0, _02150764 ; =gItemManager add r1, r4, #0 ldr r0, [r0] - bl _ZN11ItemManager15LoadFanfareItemEj + bl _ZN11ItemManager15LoadFanfareItemEi add r0, r5, #0 mov r1, #0 bl func_ov14_02150848 @@ -27197,7 +27197,7 @@ _021508ce: ldr r0, [r4, #8] blx func_ov03_020fc10c ldr r0, [r4, #8] - bl _ZN11ItemManager18func_ov00_020ae648Ejjj + bl _ZN11ItemManager18PlayItemFanfareSfxEi pop {r4, pc} .align 2, 0 thumb_func_end func_ov14_021508b8 diff --git a/asm/ov15.inc b/asm/ov15.inc index 78962be4..769579e3 100644 --- a/asm/ov15.inc +++ b/asm/ov15.inc @@ -1,6 +1,43 @@ #pragma once .extern Approach_thunk .extern Divide +.extern GiveShipPart +.extern PlaySoundEffect +.extern _ZN10MapManager16MapData_vfunc_68Ev +.extern _ZN10MapManager17GetMapData_Unk_dcEP5Vec3p +.extern _ZN10MapManager17GetMapData_Unk_e8EP5Vec3p +.extern _ZN10MapManager18func_ov00_020823a4Ei +.extern _ZN10MapManager18func_ov00_020823b4Ev +.extern _ZN10MapManager18func_ov00_02082424Ev +.extern _ZN10MapManager18func_ov00_02082454Eii +.extern _ZN10MapManager18func_ov00_02082494Ei +.extern _ZN10MapManager18func_ov00_020824ccEi +.extern _ZN10MapManager18func_ov00_02082504Ev +.extern _ZN10MapManager18func_ov00_02082594Ev +.extern _ZN10MapManager18func_ov00_020825acEv +.extern _ZN10MapManager18func_ov00_02082650Eiii +.extern _ZN10MapManager18func_ov00_02082660Eii +.extern _ZN10MapManager18func_ov00_02082d08Ev +.extern _ZN10MapManager18func_ov00_02082d40Ev +.extern _ZN10MapManager18func_ov00_02083374Ev +.extern _ZN10MapManager18func_ov00_02083384Ev +.extern _ZN10MapManager18func_ov00_0208346cEP4AABB +.extern _ZN10MapManager18func_ov00_020836bcEjPi +.extern _ZN10MapManager18func_ov00_020836dcEii +.extern _ZN10MapManager18func_ov00_02083770Eji +.extern _ZN10MapManager18func_ov00_020838c8Ei +.extern _ZN10MapManager18func_ov00_020838d8Ei +.extern _ZN10MapManager18func_ov00_020838e8EjPi +.extern _ZN10MapManager18func_ov00_02083c24Ei +.extern _ZN10MapManager18func_ov00_02083c50Ei +.extern _ZN10MapManager18func_ov00_020846a4Ev +.extern _ZN10MapManager18func_ov00_020848b8Ev +.extern _ZN10MapManager18func_ov00_02084b38Eiii +.extern _ZN10MapManager18func_ov00_02084cb0Ei +.extern _ZN10MapManager18func_ov00_02084cc8Ei +.extern _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p +.extern _ZN10MapManager18func_ov00_02085c60Eiiii +.extern _ZN10MapManager8SpawnNPCEP5Vec3pii .extern _ZN10PlayerBase10GetEquipIdEv .extern _ZN10PlayerBase18TeleportToEntranceEib .extern _ZN10PlayerBase18func_ov00_020a7c00Ei @@ -9,13 +46,13 @@ .extern _ZN10PlayerBase8TeleportEP5Vec3psibb .extern _ZN10PlayerBase8vfunc_04Ev .extern _ZN10PlayerBase9AddHealthEs -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager10SetUnk_09eEjt -.extern _ZN11ItemManager15LoadFanfareItemEj +.extern _ZN11ItemManager15LoadFanfareItemEi +.extern _ZN11ItemManager18PlayItemFanfareSfxEi .extern _ZN11ItemManager18func_ov00_020ad528Ev -.extern _ZN11ItemManager18func_ov00_020ae648Ejjj .extern _ZN11ItemManager19SetTreasureSalvagedEj -.extern _ZN11ItemManager8GiveItemEjjj +.extern _ZN11ItemManager8GiveItemEi .extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList .extern _ZN12ActorManager13FindActorByIdEj .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j @@ -106,6 +143,31 @@ .extern _ZN5Actor9GetHitboxEP8Cylinder .extern _ZN5ActorC2Ev .extern _ZN5ActorD2Ev +.extern _ZN6Course14FindMapGridPosEP5Vec2bPS_j +.extern _ZN6Course14GetAdjacentMapEi +.extern _ZN6Course18func_ov00_0207ca78Eici +.extern _ZN6Course18func_ov00_0207ce20EiiPci +.extern _ZN6Course18func_ov00_0207d7bcEv +.extern _ZN6Course23IsAdjacentMapOnMainGridEi +.extern _ZN7MapBase14GetMapFilePathEPcii +.extern _ZN7MapBase18func_ov00_0207ddf8Eb +.extern _ZN7MapBase18func_ov00_0207dea0Eb +.extern _ZN7MapBase18func_ov00_02080140EP4Exit +.extern _ZN7MapBase22GetOverlappingTriggersEP5Vec3pPP11TriggerBasei +.extern _ZN7MapBase8vfunc_48Ev +.extern _ZN7MapBase8vfunc_58Ev +.extern _ZN7MapBase8vfunc_64Ev +.extern _ZN7MapBase8vfunc_94Ev +.extern _ZN7MapBase8vfunc_98Ev +.extern _ZN7MapBase8vfunc_a4Ev +.extern _ZN7MapBase8vfunc_a8Ev +.extern _ZN7MapBase8vfunc_acEv +.extern _ZN7MapBase8vfunc_bcEv +.extern _ZN7MapBase8vfunc_c0Ev +.extern _ZN7MapBase9SetBoundsEii +.extern _ZN7MapBaseD1Ev +.extern _ZN9ActorTypeC1EjPFP5ActorvEPv +.extern _ZN9ActorTypeD1Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager10GetUnk_098Ej @@ -149,7 +211,6 @@ .extern data_027e0e2c .extern data_027e0e58 .extern data_027e0e5c -.extern gMapManager .extern data_027e0f64 .extern data_027e0f68 .extern data_027e0f6c @@ -162,7 +223,6 @@ .extern data_027e0fac .extern data_027e0fb0 .extern data_027e0fb8 -.extern data_027e0fbc .extern data_027e0fc4 .extern data_027e0fe0 .extern data_027e0fe4 @@ -377,8 +437,6 @@ .extern func_02036da8 .extern func_020370d0 .extern func_0203d7e0 -.extern _ZN9ActorTypeC1EjPFP5ActorvEPv -.extern _ZN9ActorTypeD1Ev .extern func_0203eba8 .extern func_0203ebc8 .extern func_02042f68 @@ -419,68 +477,10 @@ .extern func_ov00_0207c444 .extern func_ov00_0207c474 .extern func_ov00_0207c518 -.extern _ZN6Course18func_ov00_0207ca78Eici -.extern _ZN6Course14FindMapGridPosEP5Vec2bPS_j -.extern _ZN6Course18func_ov00_0207ce20EiiPci -.extern _ZN6Course23IsAdjacentMapOnMainGridEi -.extern _ZN6Course14GetAdjacentMapEi -.extern _ZN6Course18func_ov00_0207d7bcEv -.extern _ZN7MapBaseD1Ev -.extern _ZN7MapBase9SetBoundsEii -.extern _ZN7MapBase14GetMapFilePathEPcii -.extern _ZN7MapBase18func_ov00_0207ddf8Eb -.extern _ZN7MapBase18func_ov00_0207dea0Eb -.extern _ZN7MapBase8vfunc_48Ev -.extern _ZN7MapBase8vfunc_58Ev -.extern _ZN7MapBase8vfunc_64Ev -.extern _ZN7MapBase8vfunc_a4Ev -.extern _ZN7MapBase8vfunc_a8Ev -.extern _ZN7MapBase8vfunc_acEv -.extern _ZN7MapBase8vfunc_94Ev -.extern _ZN7MapBase22GetOverlappingTriggersEP5Vec3pPP11TriggerBasei -.extern _ZN7MapBase18func_ov00_02080140EP4Exit -.extern _ZN7MapBase8vfunc_bcEv -.extern _ZN7MapBase8vfunc_98Ev -.extern _ZN7MapBase8vfunc_c0Ev .extern func_ov00_02081f4c .extern func_ov00_02081f50 .extern func_ov00_02081f58 .extern func_ov00_02081f6c -.extern _ZN10MapManager18func_ov00_020823a4Ei -.extern _ZN10MapManager18func_ov00_020823b4Ev -.extern _ZN10MapManager18func_ov00_02082424Ev -.extern _ZN10MapManager18func_ov00_02082454Eii -.extern _ZN10MapManager18func_ov00_02082494Ei -.extern _ZN10MapManager18func_ov00_020824ccEi -.extern _ZN10MapManager18func_ov00_02082504Ev -.extern _ZN10MapManager18func_ov00_02082594Ev -.extern _ZN10MapManager18func_ov00_020825acEv -.extern _ZN10MapManager18func_ov00_02082650Eiii -.extern _ZN10MapManager18func_ov00_02082660Eii -.extern _ZN10MapManager18func_ov00_02082d08Ev -.extern _ZN10MapManager18func_ov00_02082d40Ev -.extern _ZN10MapManager18func_ov00_02083374Ev -.extern _ZN10MapManager18func_ov00_02083384Ev -.extern _ZN10MapManager17GetMapData_Unk_dcEP5Vec3p -.extern _ZN10MapManager17GetMapData_Unk_e8EP5Vec3p -.extern _ZN10MapManager18func_ov00_0208346cEP4AABB -.extern _ZN10MapManager18func_ov00_020836bcEjPi -.extern _ZN10MapManager18func_ov00_020836dcEii -.extern _ZN10MapManager18func_ov00_02083770Eji -.extern _ZN10MapManager18func_ov00_020838c8Ei -.extern _ZN10MapManager18func_ov00_020838d8Ei -.extern _ZN10MapManager18func_ov00_020838e8EjPi -.extern _ZN10MapManager18func_ov00_02083c24Ei -.extern _ZN10MapManager18func_ov00_02083c50Ei -.extern _ZN10MapManager16MapData_vfunc_68Ev -.extern _ZN10MapManager18func_ov00_020846a4Ev -.extern _ZN10MapManager18func_ov00_020848b8Ev -.extern _ZN10MapManager8SpawnNPCEP5Vec3pii -.extern _ZN10MapManager18func_ov00_02084b38Eiii -.extern _ZN10MapManager18func_ov00_02084cb0Ei -.extern _ZN10MapManager18func_ov00_02084cc8Ei -.extern _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p -.extern _ZN10MapManager18func_ov00_02085c60Eiiii .extern func_ov00_020872e8 .extern func_ov00_02087584 .extern func_ov00_020875f8 @@ -723,7 +723,6 @@ .extern func_ov00_020d70a4 .extern func_ov00_020d716c .extern func_ov00_020d71a0 -.extern func_ov00_020d73bc .extern func_ov00_020d7424 .extern func_ov00_020d74bc .extern func_ov00_020d77e4 @@ -892,7 +891,6 @@ .extern func_ov09_0211c6b4 .extern func_ov09_0211c724 .extern func_ov09_0211c808 -.extern func_ov09_0211ca20 .extern func_ov09_0211cac0 .extern func_ov09_0211cc74 .extern func_ov09_0211cc98 @@ -908,6 +906,8 @@ .extern func_ov09_0211d668 .extern func_ov09_0211d794 .extern gAdventureFlags +.extern gHealthManager .extern gItemManager +.extern gMapManager .extern strcat .extern strncpy diff --git a/asm/ov15.s b/asm/ov15.s index ef60bb30..305cfb66 100644 --- a/asm/ov15.s +++ b/asm/ov15.s @@ -30916,7 +30916,7 @@ _021398f0: str r0, [r4, #0xa4] str r0, [r4, #0xa8] str r0, [r4, #0xac] - ldr ip, _02139a70 ; =data_027e0fbc + ldr ip, _02139a70 ; =gHealthManager add r3, r4, #0x300 ldr r2, [ip] add r1, r4, #0x60 @@ -30958,7 +30958,7 @@ _02139a60: .word func_ov15_02139a80 _02139a64: .word func_ov15_02139a94 _02139a68: .word func_020350ac _02139a6c: .word func_02035064 -_02139a70: .word data_027e0fbc +_02139a70: .word gHealthManager _02139a74: .word data_027e10a4 _02139a78: .word data_027e0d38 _02139a7c: .word data_027e0ce0 @@ -30994,7 +30994,7 @@ func_ov15_02139ab4: ; 0x02139ab4 ldr r1, _02139cb8 ; =data_ov15_0218aaac mov r4, r0 str r1, [r4] - ldr r1, _02139cbc ; =data_027e0fbc + ldr r1, _02139cbc ; =gHealthManager ldrsh r3, [r4, #0xa] ldr r2, [r1] add r0, r4, #0x300 @@ -31123,7 +31123,7 @@ _02139af4: .align 2, 0 arm_func_end func_ov15_02139ab4 _02139cb8: .word data_ov15_0218aaac -_02139cbc: .word data_027e0fbc +_02139cbc: .word gHealthManager _02139cc0: .word data_027e10a4 _02139cc4: .word func_020350ac _02139cc8: .word func_ov15_02139a80 @@ -31136,7 +31136,7 @@ func_ov15_02139cd0: ; 0x02139cd0 ldr r1, _02139edc ; =data_ov15_0218aaac mov r4, r0 str r1, [r4] - ldr r1, _02139ee0 ; =data_027e0fbc + ldr r1, _02139ee0 ; =gHealthManager ldrsh r3, [r4, #0xa] ldr r2, [r1] add r0, r4, #0x300 @@ -31267,7 +31267,7 @@ _02139d10: .align 2, 0 arm_func_end func_ov15_02139cd0 _02139edc: .word data_ov15_0218aaac -_02139ee0: .word data_027e0fbc +_02139ee0: .word gHealthManager _02139ee4: .word data_027e10a4 _02139ee8: .word func_020350ac _02139eec: .word func_ov15_02139a80 @@ -31827,13 +31827,13 @@ func_ov15_0213a5e8: ; 0x0213a5e8 .global func_ov15_0213a604 arm_func_start func_ov15_0213a604 func_ov15_0213a604: ; 0x0213a604 - ldr r0, _0213a614 ; =data_027e0fbc + ldr r0, _0213a614 ; =gHealthManager ldr r0, [r0] ldrsh r0, [r0, #4] bx lr .align 2, 0 arm_func_end func_ov15_0213a604 -_0213a614: .word data_027e0fbc +_0213a614: .word gHealthManager .global func_ov15_0213a618 arm_func_start func_ov15_0213a618 @@ -42710,7 +42710,7 @@ _0214389c: ldr r0, _02143a38 ; =data_ov00_020eec68 mov r1, #0xda str r2, [r7, #0x378] - bl func_ov00_020d73bc + bl PlaySoundEffect _021438f4: ldr r0, [r7, #0x20] bl func_ov15_02149acc @@ -43237,7 +43237,7 @@ _02144020: bl func_ov00_020d716c ldr r0, _0214415c ; =data_ov00_020eec68 mov r1, #0xdb - bl func_ov00_020d73bc + bl PlaySoundEffect add r0, sp, #0 bl func_ov00_0209a4f4 mov r2, #0 @@ -43346,7 +43346,7 @@ _021441a8: bl func_ov00_020d716c ldr r0, _021442d8 ; =data_ov00_020eec68 mov r1, #0xdb - bl func_ov00_020d73bc + bl PlaySoundEffect add r0, sp, #0 bl func_ov00_0209a4f4 mov r2, #0 @@ -44522,7 +44522,7 @@ _021452d4: bl func_ov15_0214651c mov r1, r0 mov r0, r4 - blx func_ov09_0211ca20 + blx GiveShipPart b _02145334 _02145300: cmp r5, #0x30 @@ -44538,12 +44538,12 @@ _0214531c: ldr r0, _0214581c ; =gItemManager mov r1, r5 ldr r0, [r0] - blx _ZN11ItemManager8GiveItemEjjj + blx _ZN11ItemManager8GiveItemEi _02145334: ldr r0, _0214581c ; =gItemManager mov r1, r5 ldr r0, [r0] - blx _ZN11ItemManager15LoadFanfareItemEj + blx _ZN11ItemManager15LoadFanfareItemEi mov r0, r6 mov r1, #1 bl func_ov15_0216e168 @@ -44561,7 +44561,7 @@ _02145370: mov r4, r0 bl func_ov03_020fc10c mov r0, r4 - blx _ZN11ItemManager18func_ov00_020ae648Ejjj + blx _ZN11ItemManager18PlayItemFanfareSfxEi mov r0, #0x10 strb r0, [r9, #0x34d] b _02145420 @@ -44602,7 +44602,7 @@ _021453f8: ldr r0, _0214581c ; =gItemManager mov r1, #0x26 ldr r0, [r0] - blx _ZN11ItemManager8GiveItemEjjj + blx _ZN11ItemManager8GiveItemEi _0214541c: bl func_ov15_021465e8 _02145420: @@ -54185,7 +54185,7 @@ func_ov15_0214d358: ; 0x0214d358 mov r1, r0 mov r0, r5 mov r2, #0 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb ldr r1, [r4, #0x158] ldr r0, _0214d3dc ; =data_ov00_020eec9c add r1, r1, #0xfa @@ -61729,7 +61729,7 @@ _02153b28: bl func_ov15_02153938 ldr r0, [r4, #0x41c] add r0, r0, #0x46 - blx _ZN11ItemManager18func_ov00_020ae648Ejjj + blx _ZN11ItemManager18PlayItemFanfareSfxEi mov r0, #5 strb r0, [r5, #0x436] b _02153d74 @@ -62211,7 +62211,7 @@ _02154254: bl func_ov15_02153938 ldr r0, [r5, #0x41c] add r0, r0, #0x46 - blx _ZN11ItemManager18func_ov00_020ae648Ejjj + blx _ZN11ItemManager18PlayItemFanfareSfxEi mov r0, #5 strb r0, [r4, #0x436] b _02154304 @@ -62311,7 +62311,7 @@ _02154374: bl func_ov00_020d716c ldr r0, _02154620 ; =data_ov00_020eec68 mov r1, #0xde - bl func_ov00_020d73bc + bl PlaySoundEffect mov r0, #1 strb r0, [r5, #0x436] mov r0, #0 @@ -88224,7 +88224,7 @@ _0216a8a8: bl func_ov15_0214651c mov r1, r0 mov r0, r6 - blx func_ov09_0211ca20 + blx GiveShipPart b _0216a8f8 _0216a8cc: cmp r4, #0x30 @@ -88238,7 +88238,7 @@ _0216a8e8: ldr r0, _0216a95c ; =gItemManager mov r1, r4 ldr r0, [r0] - blx _ZN11ItemManager8GiveItemEjjj + blx _ZN11ItemManager8GiveItemEi _0216a8f8: bl func_ov15_02146578 mov r1, r0 @@ -88262,7 +88262,7 @@ _0216a93c: ldr r0, _0216a95c ; =gItemManager mov r1, r4 ldr r0, [r0] - blx _ZN11ItemManager15LoadFanfareItemEj + blx _ZN11ItemManager15LoadFanfareItemEi mov r0, r5 bl func_ov15_0216a968 add sp, sp, #4 @@ -88292,7 +88292,7 @@ _0216a994: bl func_ov03_020fc10c ldr r0, _0216aa24 ; =data_ov00_020eec68 mov r1, #0x28 - bl func_ov00_020d73bc + bl PlaySoundEffect mov r1, #0 sub r0, r1, #0x1000 str r0, [sp, #0x18] @@ -99853,7 +99853,7 @@ func_ov15_02174794: ; 0x02174794 mov r1, r0 mov r0, r5 mov r2, #0 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb ldr r1, [r4, #0x2c] ldr r0, _02174878 ; =data_ov00_020eec9c add r1, r1, #0xfa diff --git a/asm/ov23.inc b/asm/ov23.inc index 114655f7..694a2f3f 100644 --- a/asm/ov23.inc +++ b/asm/ov23.inc @@ -457,7 +457,7 @@ .extern func_ov00_020d1980 .extern func_ov00_020d70a4 .extern func_ov00_020d716c -.extern func_ov00_020d73bc +.extern PlaySoundEffect .extern func_ov00_020d77e4 .extern func_ov00_020d7a84 .extern func_ov00_020d7b20 diff --git a/asm/ov23.s b/asm/ov23.s index 1d821bf2..4e6986ee 100644 --- a/asm/ov23.s +++ b/asm/ov23.s @@ -1892,14 +1892,14 @@ _0216ee88: _0216eea4: ldr r0, _0216eeec ; =data_ov00_020eec68 mov r1, #0xc2 - bl func_ov00_020d73bc + bl PlaySoundEffect add sp, sp, #8 mov r0, #1 ldmia sp!, {r4, r5, r6, pc} _0216eebc: ldr r0, _0216eeec ; =data_ov00_020eec68 mov r1, #0xc4 - bl func_ov00_020d73bc + bl PlaySoundEffect add sp, sp, #8 mov r0, #1 ldmia sp!, {r4, r5, r6, pc} diff --git a/asm/ov26.inc b/asm/ov26.inc index bc9c7cc3..4d0b53c4 100644 --- a/asm/ov26.inc +++ b/asm/ov26.inc @@ -2,6 +2,23 @@ .extern Approach_thunk .extern Divide .extern FastDivide +.extern PlaySoundEffect +.extern _ZN10MapManager16MapData_vfunc_54Ev +.extern _ZN10MapManager16MapData_vfunc_68Ev +.extern _ZN10MapManager16MapData_vfunc_b4Ev +.extern _ZN10MapManager18func_ov00_020823d4Ei +.extern _ZN10MapManager18func_ov00_020823e4Ei +.extern _ZN10MapManager18func_ov00_02082614Eii +.extern _ZN10MapManager18func_ov00_02082680Eii +.extern _ZN10MapManager18func_ov00_020826a0Eiii +.extern _ZN10MapManager18func_ov00_020836dcEii +.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p +.extern _ZN10MapManager18func_ov00_02083e34Ecci +.extern _ZN10MapManager18func_ov00_02084164Ev +.extern _ZN10MapManager18func_ov00_02084740Ev +.extern _ZN10MapManager18func_ov00_02084a50Ev +.extern _ZN10MapManager18func_ov00_02084cb0Ei +.extern _ZN10MapManager18func_ov00_02084cc8Ei .extern _ZN10PlayerBase10SetVisibleEb .extern _ZN11ItemManager7AddItemEi .extern _ZN12ActorManager13FindActorByIdEj @@ -69,6 +86,8 @@ .extern _ZN5Actor9GetHitboxEP8Cylinder .extern _ZN5ActorC2Ev .extern _ZN5ActorD2Ev +.extern _ZN9ActorTypeC1EjPFP5ActorvEPv +.extern _ZN9ActorTypeD1Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager18IsTreasureSalvagedEj @@ -94,7 +113,6 @@ .extern data_027e0d3c .extern data_027e0d78 .extern data_027e0e58 -.extern gMapManager .extern data_027e0f64 .extern data_027e0f68 .extern data_027e0f6c @@ -104,7 +122,6 @@ .extern data_027e0f94 .extern data_027e0fa0 .extern data_027e0fac -.extern data_027e0fbc .extern data_027e0fc8 .extern data_027e0fd4 .extern data_027e0fe0 @@ -196,8 +213,6 @@ .extern func_020352d8 .extern func_02035370 .extern func_020370d0 -.extern _ZN9ActorTypeC1EjPFP5ActorvEPv -.extern _ZN9ActorTypeD1Ev .extern func_0203eba8 .extern func_0203ebc8 .extern func_0203fe60 @@ -218,22 +233,6 @@ .extern func_ov00_0207c1f8 .extern func_ov00_0207c444 .extern func_ov00_02081f4c -.extern _ZN10MapManager18func_ov00_020823d4Ei -.extern _ZN10MapManager18func_ov00_020823e4Ei -.extern _ZN10MapManager16MapData_vfunc_b4Ev -.extern _ZN10MapManager18func_ov00_02082614Eii -.extern _ZN10MapManager18func_ov00_02082680Eii -.extern _ZN10MapManager18func_ov00_020826a0Eiii -.extern _ZN10MapManager18func_ov00_020836dcEii -.extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p -.extern _ZN10MapManager18func_ov00_02083e34Ecci -.extern _ZN10MapManager16MapData_vfunc_68Ev -.extern _ZN10MapManager16MapData_vfunc_54Ev -.extern _ZN10MapManager18func_ov00_02084164Ev -.extern _ZN10MapManager18func_ov00_02084740Ev -.extern _ZN10MapManager18func_ov00_02084a50Ev -.extern _ZN10MapManager18func_ov00_02084cb0Ei -.extern _ZN10MapManager18func_ov00_02084cc8Ei .extern func_ov00_020875f8 .extern func_ov00_02087d34 .extern func_ov00_02087e8c @@ -406,7 +405,6 @@ .extern func_ov00_020d70a4 .extern func_ov00_020d716c .extern func_ov00_020d7180 -.extern func_ov00_020d73bc .extern func_ov00_020d73f0 .extern func_ov00_020d77e4 .extern func_ov00_020d7c8c @@ -536,6 +534,8 @@ .extern func_ov30_02183f84 .extern func_ov30_02183fd4 .extern gAdventureFlags +.extern gHealthManager .extern gItemManager +.extern gMapManager .extern strcmp .extern strncpy diff --git a/asm/ov26.s b/asm/ov26.s index 3d28077e..49805e0d 100644 --- a/asm/ov26.s +++ b/asm/ov26.s @@ -1707,7 +1707,7 @@ func_ov26_0216e8b8: ; 0x0216e8b8 ldrb r0, [r0] cmp r0, #0 beq _0216e98e - ldr r0, _0216e9c0 ; =data_027e0fbc + ldr r0, _0216e9c0 ; =gHealthManager ldr r0, [r0] ldrh r1, [r0, #0xa] mov r0, #2 @@ -1762,7 +1762,7 @@ _0216e9b0: thumb_func_end func_ov26_0216e8b8 _0216e9b8: .word gItemManager _0216e9bc: .word data_027e0d38 -_0216e9c0: .word data_027e0fbc +_0216e9c0: .word gHealthManager .global func_ov26_0216e9c4 thumb_func_start func_ov26_0216e9c4 @@ -2101,7 +2101,7 @@ _0216edf8: mov r1, #0x3c add r0, r0, #0x3b bl func_01ff9b4c - ldr r1, _0216ee38 ; =data_027e0fbc + ldr r1, _0216ee38 ; =gHealthManager mov r2, #1 ldr r3, [r1] mov r0, r0, lsl #0x10 @@ -2115,7 +2115,7 @@ _0216edf8: ldmia sp!, {r4, pc} .align 2, 0 arm_func_end func_ov26_0216edb4 -_0216ee38: .word data_027e0fbc +_0216ee38: .word gHealthManager .global func_ov26_0216ee3c arm_func_start func_ov26_0216ee3c @@ -8276,7 +8276,7 @@ _02173dac: str r0, [r4, #0x78] ldr r0, _02173de8 ; =data_ov00_020eec68 mov r1, #0x4c - blx func_ov00_020d73bc + blx PlaySoundEffect pop {r3, r4, r5, pc} nop thumb_func_end func_ov26_02173cec @@ -8769,7 +8769,7 @@ _02174196: ldrb r1, [r1] cmp r1, #0 beq _02174204 - ldr r1, _02174250 ; =data_027e0fbc + ldr r1, _02174250 ; =gHealthManager ldr r1, [r1] ldrh r2, [r1, #0xa] mov r1, #2 @@ -8867,7 +8867,7 @@ _0217424e: pop {r3, pc} .align 2, 0 thumb_func_end func_ov26_02174170 -_02174250: .word data_027e0fbc +_02174250: .word gHealthManager _02174254: .word gItemManager .global func_ov26_02174258 diff --git a/asm/ov28.inc b/asm/ov28.inc index a585d5dc..861283c8 100644 --- a/asm/ov28.inc +++ b/asm/ov28.inc @@ -322,7 +322,7 @@ .extern func_ov09_0211c45c .extern func_ov09_0211c724 .extern func_ov09_0211c808 -.extern func_ov09_0211ca20 +.extern GiveShipPart .extern func_ov09_0211cac0 .extern func_ov14_02120ac4 .extern func_ov14_021231d4 diff --git a/asm/ov28.s b/asm/ov28.s index 6a48332b..efb5b4a4 100644 --- a/asm/ov28.s +++ b/asm/ov28.s @@ -2701,7 +2701,7 @@ _0216faf8: blx func_ov09_0211c724 ldr r0, [sp, #4] ldr r1, [sp] - blx func_ov09_0211ca20 + blx GiveShipPart _0216fb20: mov r0, r4 add sp, sp, #0xc diff --git a/asm/ov29.inc b/asm/ov29.inc index c2e7da92..36a8a66f 100644 --- a/asm/ov29.inc +++ b/asm/ov29.inc @@ -10,7 +10,7 @@ .extern _ZN10MapManager18func_ov00_02083938Ei .extern _ZN10MapManager18func_ov00_020846a4Ev .extern _ZN10MapManager18func_ov00_02084d24Ecci -.extern _ZN11ItemManager18func_ov00_020ae4dcEj +.extern _ZN11ItemManager18func_ov00_020ae4dcEi .extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j .extern _ZN12ActorManager18func_ov00_020c3b2cEPi diff --git a/asm/ov29.s b/asm/ov29.s index cea23880..81c19ba6 100644 --- a/asm/ov29.s +++ b/asm/ov29.s @@ -755,7 +755,7 @@ _0216df70: ldr r0, _0216e008 ; =gItemManager mvn r1, #0 ldr r0, [r0] - bl _ZN11ItemManager18func_ov00_020ae4dcEj + bl _ZN11ItemManager18func_ov00_020ae4dcEi add r0, r6, r4 add r1, r7, r5 ldr r3, _0216e000 ; =data_027e0fc8 diff --git a/asm/ov31.inc b/asm/ov31.inc index cc14b422..0a95d7f1 100644 --- a/asm/ov31.inc +++ b/asm/ov31.inc @@ -1,7 +1,8 @@ #pragma once .extern Divide +.extern GiveShipPart .extern LoadTreasureItemFanfare -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager8GiveAmmoEit .extern _ZN12ActorManager8GetActorEP8ActorRef .extern _ZN14AdventureFlags3GetEj @@ -183,7 +184,6 @@ .extern func_ov09_0211c1a8 .extern func_ov09_0211c980 .extern func_ov09_0211c9a0 -.extern func_ov09_0211ca20 .extern func_ov09_0211cac0 .extern func_ov09_0211cca4 .extern func_ov09_0211ccb4 diff --git a/asm/ov31.s b/asm/ov31.s index a230104c..e6d08795 100644 --- a/asm/ov31.s +++ b/asm/ov31.s @@ -1049,7 +1049,7 @@ _0217cae4: ldr r0, [r0] rsb r1, r1, #0 mov r2, #1 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb bl func_ov31_0217cf1c ldr r0, [r0, #0x470] cmp r0, #0 @@ -5443,7 +5443,7 @@ func_ov31_0217ff08: ; 0x0217ff08 bl func_ov31_02180260 mov r1, r0 mov r0, r4 - blx func_ov09_0211ca20 + blx GiveShipPart bl func_ov31_0217bdb8 bl func_ov31_0217bd80 cmp r0, #0 diff --git a/asm/ov33.inc b/asm/ov33.inc index 7170596b..48d15b00 100644 --- a/asm/ov33.inc +++ b/asm/ov33.inc @@ -75,7 +75,6 @@ .extern data_027e0f94 .extern data_027e0fa0 .extern data_027e0fac -.extern data_027e0fbc .extern data_027e0fc8 .extern data_027e0fe0 .extern data_027e0fe4 @@ -249,4 +248,5 @@ .extern func_ov14_02145f0c .extern func_ov18_02160a54 .extern func_ov18_02160a64 +.extern gHealthManager .extern strncpy diff --git a/asm/ov33.s b/asm/ov33.s index 313e96de..23556bb9 100644 --- a/asm/ov33.s +++ b/asm/ov33.s @@ -1755,7 +1755,7 @@ _0217d3b0: mov r0, #1 ldmia sp!, {r4, pc} _0217d3d0: - ldr r0, _0217d3f4 ; =data_027e0fbc + ldr r0, _0217d3f4 ; =gHealthManager mov r2, #5 ldr r1, [r0] mov r0, #1 @@ -1767,7 +1767,7 @@ _0217d3e8: .align 2, 0 arm_func_end func_ov33_0217d394 _0217d3f0: .word data_027e0e28 -_0217d3f4: .word data_027e0fbc +_0217d3f4: .word gHealthManager .global func_ov33_0217d3f8 arm_func_start func_ov33_0217d3f8 @@ -1780,7 +1780,7 @@ func_ov33_0217d3f8: ; 0x0217d3f8 beq _0217d444 cmp r1, #0x1f bne _0217d484 - ldr r1, _0217d48c ; =data_027e0fbc + ldr r1, _0217d48c ; =gHealthManager ldr r1, [r1] ldrsh r1, [r1, #8] mov r1, r1, lsl #0x18 @@ -1793,7 +1793,7 @@ _0217d43c: mov r0, r4 ldmia sp!, {r4, pc} _0217d444: - ldr r0, _0217d48c ; =data_027e0fbc + ldr r0, _0217d48c ; =gHealthManager ldr r0, [r0] ldrsh r0, [r0, #4] sub r1, r0, #0x10 @@ -1815,7 +1815,7 @@ _0217d484: ldmia sp!, {r4, pc} .align 2, 0 arm_func_end func_ov33_0217d3f8 -_0217d48c: .word data_027e0fbc +_0217d48c: .word gHealthManager .global func_ov33_0217d490 arm_func_start func_ov33_0217d490 diff --git a/asm/ov38.inc b/asm/ov38.inc index 8ef6b033..6b3fc53a 100644 --- a/asm/ov38.inc +++ b/asm/ov38.inc @@ -1,6 +1,7 @@ #pragma once .extern Approach_thunk .extern Divide +.extern PlaySoundEffect .extern _ZN10MapManager18func_ov00_02084b38Eiii .extern _ZN10MapManager18func_ov00_02084be0Eii .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j @@ -217,7 +218,6 @@ .extern func_ov00_020d5f98 .extern func_ov00_020d70a4 .extern func_ov00_020d716c -.extern func_ov00_020d73bc .extern func_ov00_020d73f0 .extern func_ov00_020d7c8c .extern func_ov00_020d7d18 diff --git a/asm/ov38.s b/asm/ov38.s index 3c3f2290..966dfbbc 100644 --- a/asm/ov38.s +++ b/asm/ov38.s @@ -208,7 +208,7 @@ func_ov38_0217bf48: ; 0x0217bf48 bl func_ov00_020d8388 ldr r0, _0217c048 ; =data_ov00_020eec68 mov r1, #0xcf - bl func_ov00_020d73bc + bl PlaySoundEffect ldr r0, _0217c04c ; =data_ov38_021891e0 ldr r0, [r0, #0x58] bl func_ov38_02184a18 diff --git a/asm/ov39.inc b/asm/ov39.inc index 67243319..88466feb 100644 --- a/asm/ov39.inc +++ b/asm/ov39.inc @@ -230,7 +230,7 @@ .extern func_ov00_020d18f4 .extern func_ov00_020d1980 .extern func_ov00_020d716c -.extern func_ov00_020d73bc +.extern PlaySoundEffect .extern func_ov00_020d73f0 .extern func_ov00_020d77e4 .extern func_ov00_020d7ad4 diff --git a/asm/ov39.s b/asm/ov39.s index f76adc68..362cbf5b 100644 --- a/asm/ov39.s +++ b/asm/ov39.s @@ -112,7 +112,7 @@ _0217bed4: bl func_ov00_0207c5d4 ldr r0, _0217bf2c ; =data_ov00_020eec68 mov r1, #0xd2 - bl func_ov00_020d73bc + bl PlaySoundEffect ldr r1, [r4, #8] ldr r0, [r1, #0x158] bic r0, r0, #0x4000000 diff --git a/asm/ov40.inc b/asm/ov40.inc index 6bf49085..6a455933 100644 --- a/asm/ov40.inc +++ b/asm/ov40.inc @@ -2,7 +2,7 @@ .extern Divide .extern FastDivide .extern _ZN11ItemManager7AddItemEi -.extern _ZN11ItemManager8GiveItemEjjj +.extern _ZN11ItemManager8GiveItemEi .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j .extern _ZN12ActorManager8GetActorEP8ActorRef .extern _ZN14AdventureFlags15Get_FlagsUnk_18EiP9FlagsUnk2 diff --git a/asm/ov40.s b/asm/ov40.s index 324d5c94..0843b9f9 100644 --- a/asm/ov40.s +++ b/asm/ov40.s @@ -4428,7 +4428,7 @@ _0217f5a4: mov r1, r1, lsl #0x8 ldr r0, [r0] mov r1, r1, lsr #0x10 - blx _ZN11ItemManager8GiveItemEjjj + blx _ZN11ItemManager8GiveItemEi add sp, sp, #8 ldmia sp!, {r3, pc} _0217f5c4: diff --git a/asm/ov42.inc b/asm/ov42.inc index 63708d77..c91bb449 100644 --- a/asm/ov42.inc +++ b/asm/ov42.inc @@ -1,6 +1,6 @@ #pragma once .extern _ZN10MapManager18func_ov00_02083918EiPi -.extern _ZN11ItemManager13ForceEquipItemEi +.extern _ZN11ItemManager14ForceEquipItemEi .extern _ZN11ItemManager20ClearForcedEquipItemEv .extern _ZN12ActorManager8GetActorEP8ActorRef .extern _ZN14AdventureFlags3GetEj diff --git a/asm/ov42.s b/asm/ov42.s index ff2f3570..4b73f54e 100644 --- a/asm/ov42.s +++ b/asm/ov42.s @@ -326,7 +326,7 @@ _02189918: ldr r0, _02189afc ; =gItemManager mov r1, #5 ldr r0, [r0] - blx _ZN11ItemManager13ForceEquipItemEi + blx _ZN11ItemManager14ForceEquipItemEi ldr r1, _02189b00 ; =data_027e0fc8 mov r0, r7 ldr r4, [r1] diff --git a/asm/ov45.inc b/asm/ov45.inc index 723a7f5d..c49e3b9e 100644 --- a/asm/ov45.inc +++ b/asm/ov45.inc @@ -1,7 +1,7 @@ #pragma once .extern _ZN11ItemManager16SetShipPartCountEjjc .extern _ZN11ItemManager16SetTreasureCountEjc -.extern _ZN11ItemManager19SetTreasureSalvagedEjj +.extern _ZN11ItemManager21AddShipPartPriceShownEjj .extern _ZN11ItemManager21AddTreasurePriceShownEj .extern _ZN14AdventureFlags3GetEj .extern _ZN5Actor10SetUnk_11bEv @@ -46,7 +46,7 @@ .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager16GetShipPartCountEjj .extern _ZNK11ItemManager16GetTreasureCountEj -.extern _ZNK11ItemManager18IsTreasureSalvagedEjj +.extern _ZNK11ItemManager21HasShipPartPriceShownEjj .extern _ZNK11ItemManager21HasTreasurePriceShownEj .extern __register_global_object .extern data_020691a0 @@ -239,7 +239,7 @@ .extern func_ov09_0211c9a0 .extern func_ov09_0211c9a8 .extern func_ov09_0211c9e8 -.extern func_ov09_0211ca20 +.extern GiveShipPart .extern func_ov09_0211cac0 .extern func_ov09_0211cb3c .extern func_ov09_0211cb5c diff --git a/asm/ov45.s b/asm/ov45.s index 6ec20f6f..a1c29d5c 100644 --- a/asm/ov45.s +++ b/asm/ov45.s @@ -1976,7 +1976,7 @@ func_ov45_0218ad80: ; 0x0218ad80 add r0, ip, r0, asr #1 sub r1, lr, r1 mov r4, #0x2b - blx func_ov09_0211ca20 + blx GiveShipPart b _0218ae0c _0218ae00: sub r0, lr, #0x48 @@ -5128,7 +5128,7 @@ func_ov45_0218d4d4: ; 0x0218d4d4 mov r1, r0 ldr r2, [r5, #0x1c] mov r0, r4 - blx _ZN11ItemManager19SetTreasureSalvagedEjj + blx _ZN11ItemManager21AddShipPartPriceShownEjj ldmia sp!, {r3, r4, r5, pc} .align 2, 0 arm_func_end func_ov45_0218d4d4 @@ -6012,7 +6012,7 @@ _0218de84: mov r1, r0 ldr r2, [r5, #0x1c] mov r0, r6 - blx _ZNK11ItemManager18IsTreasureSalvagedEjj + blx _ZNK11ItemManager21HasShipPartPriceShownEjj cmp r0, #0 beq _0218df54 add ip, sp, #0x28 diff --git a/asm/ov46.inc b/asm/ov46.inc index 3a9b4658..094317f1 100644 --- a/asm/ov46.inc +++ b/asm/ov46.inc @@ -3,7 +3,7 @@ .extern _ZN10MapManager16MapData_vfunc_78Ev .extern _ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p .extern _ZN10MapManager18func_ov00_02083fb0EiPS_i -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager16SetTreasureCountEjc .extern _ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j .extern _ZN12ActorManager22FindNearestActorOfTypeEP8ActorRefPS_jP5Vec3p diff --git a/asm/ov46.s b/asm/ov46.s index 832bdb2e..58abc6f7 100644 --- a/asm/ov46.s +++ b/asm/ov46.s @@ -3035,7 +3035,7 @@ _02192754: strb r2, [r5, #0x48b] ldr r0, [r0] mov r2, #1 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb ldrb r2, [r5, #0x48a] ldr r0, _021927d0 ; =gItemManager sub r1, r4, #1 diff --git a/asm/ov47.inc b/asm/ov47.inc index 5fff50a1..af2f158f 100644 --- a/asm/ov47.inc +++ b/asm/ov47.inc @@ -1,5 +1,64 @@ #pragma once .extern _ZN10PlayerBase18func_ov00_020a7c1cEP8Cylinder +.extern _ZN5Actor10SetUnk_11bEv +.extern _ZN5Actor11SetVelocityEP5Vec3p +.extern _ZN5Actor12ApplyGravityEv +.extern _ZN5Actor12CollidesWithEPKS_ +.extern _ZN5Actor12GetOffsetPosEP5Vec3p +.extern _ZN5Actor12KillInBoundsEv +.extern _ZN5Actor12SetTransformEP9Transform +.extern _ZN5Actor12XzDistanceToEP5Vec3p +.extern _ZN5Actor15IsHitboxTouchedEb +.extern _ZN5Actor15TrySetTransformEP9Transform +.extern _ZN5Actor16CollidesWithLinkEv +.extern _ZN5Actor16XzDistanceToLinkEv +.extern _ZN5Actor18CollidesWithShieldEP8Cylinder +.extern _ZN5Actor18func_Ov00_020c1bfcEi +.extern _ZN5Actor18func_ov00_020c1c20Eiii +.extern _ZN5Actor18func_ov00_020c1cf8Ev +.extern _ZN5Actor18func_ov00_020c1da0EiP5Vec3p +.extern _ZN5Actor18func_ov00_020c1e2cEiP5Vec3p +.extern _ZN5Actor18func_ov00_020c313cEj +.extern _ZN5Actor18func_ov00_020c3200Ei +.extern _ZN5Actor20IncreaseActiveFramesEv +.extern _ZN5Actor4KillEv +.extern _ZN5Actor6GetPosEv +.extern _ZN5Actor8vfunc_08Ev +.extern _ZN5Actor8vfunc_0cEv +.extern _ZN5Actor8vfunc_10Ej +.extern _ZN5Actor8vfunc_18Ej +.extern _ZN5Actor8vfunc_1cEt +.extern _ZN5Actor8vfunc_20Ei +.extern _ZN5Actor8vfunc_24Ev +.extern _ZN5Actor8vfunc_28Ev +.extern _ZN5Actor8vfunc_2cEv +.extern _ZN5Actor8vfunc_30Ev +.extern _ZN5Actor8vfunc_38Ev +.extern _ZN5Actor8vfunc_48Ei +.extern _ZN5Actor8vfunc_4cEPi +.extern _ZN5Actor8vfunc_54Ev +.extern _ZN5Actor8vfunc_60Ev +.extern _ZN5Actor8vfunc_64Ev +.extern _ZN5Actor8vfunc_68Ev +.extern _ZN5Actor8vfunc_6cEv +.extern _ZN5Actor8vfunc_70Ev +.extern _ZN5Actor8vfunc_74Ev +.extern _ZN5Actor8vfunc_78Ev +.extern _ZN5Actor8vfunc_7cEv +.extern _ZN5Actor8vfunc_80Ev +.extern _ZN5Actor8vfunc_84Ev +.extern _ZN5Actor8vfunc_88Ev +.extern _ZN5Actor8vfunc_8cEv +.extern _ZN5Actor8vfunc_90Ev +.extern _ZN5Actor8vfunc_94Ev +.extern _ZN5Actor8vfunc_98Ev +.extern _ZN5Actor8vfunc_9cEv +.extern _ZN5Actor8vfunc_a8Ev +.extern _ZN5Actor8vfunc_acEv +.extern _ZN5Actor8vfunc_b0Ev +.extern _ZN5Actor9GetHitboxEP8Cylinder +.extern _ZN5ActorC2Ev +.extern _ZN5ActorD2Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager19GetActiveFairyLevelEi @@ -86,65 +145,6 @@ .extern func_ov00_020c070c .extern func_ov00_020c0c08 .extern func_ov00_020c1500 -.extern _ZN5ActorC2Ev -.extern _ZN5ActorD2Ev -.extern _ZN5Actor8vfunc_08Ev -.extern _ZN5Actor8vfunc_0cEv -.extern _ZN5Actor8vfunc_10Ej -.extern _ZN5Actor8vfunc_24Ev -.extern _ZN5Actor8vfunc_28Ev -.extern _ZN5Actor12GetOffsetPosEP5Vec3p -.extern _ZN5Actor8vfunc_38Ev -.extern _ZN5Actor8vfunc_2cEv -.extern _ZN5Actor8vfunc_30Ev -.extern _ZN5Actor8vfunc_18Ej -.extern _ZN5Actor8vfunc_1cEt -.extern _ZN5Actor8vfunc_20Ei -.extern _ZN5Actor10SetUnk_11bEv -.extern _ZN5Actor11SetVelocityEP5Vec3p -.extern _ZN5Actor8vfunc_60Ev -.extern _ZN5Actor8vfunc_64Ev -.extern _ZN5Actor8vfunc_68Ev -.extern _ZN5Actor8vfunc_6cEv -.extern _ZN5Actor8vfunc_70Ev -.extern _ZN5Actor8vfunc_74Ev -.extern _ZN5Actor8vfunc_7cEv -.extern _ZN5Actor8vfunc_78Ev -.extern _ZN5Actor8vfunc_80Ev -.extern _ZN5Actor8vfunc_84Ev -.extern _ZN5Actor8vfunc_88Ev -.extern _ZN5Actor8vfunc_8cEv -.extern _ZN5Actor8vfunc_90Ev -.extern _ZN5Actor8vfunc_94Ev -.extern _ZN5Actor8vfunc_98Ev -.extern _ZN5Actor8vfunc_9cEv -.extern _ZN5Actor15TrySetTransformEP9Transform -.extern _ZN5Actor12SetTransformEP9Transform -.extern _ZN5Actor8vfunc_a8Ev -.extern _ZN5Actor18func_Ov00_020c1bfcEi -.extern _ZN5Actor18func_ov00_020c1c20Eiii -.extern _ZN5Actor8vfunc_48Ei -.extern _ZN5Actor8vfunc_4cEPi -.extern _ZN5Actor18func_ov00_020c1cf8Ev -.extern _ZN5Actor18func_ov00_020c1da0EiP5Vec3p -.extern _ZN5Actor18func_ov00_020c1e2cEiP5Vec3p -.extern _ZN5Actor18CollidesWithShieldEP8Cylinder -.extern _ZN5Actor12CollidesWithEPKS_ -.extern _ZN5Actor16CollidesWithLinkEv -.extern _ZN5Actor12XzDistanceToEP5Vec3p -.extern _ZN5Actor16XzDistanceToLinkEv -.extern _ZN5Actor9GetHitboxEP8Cylinder -.extern _ZN5Actor20IncreaseActiveFramesEv -.extern _ZN5Actor15IsHitboxTouchedEb -.extern _ZN5Actor12ApplyGravityEv -.extern _ZN5Actor6GetPosEv -.extern _ZN5Actor8vfunc_54Ev -.extern _ZN5Actor18func_ov00_020c313cEj -.extern _ZN5Actor4KillEv -.extern _ZN5Actor12KillInBoundsEv -.extern _ZN5Actor8vfunc_acEv -.extern _ZN5Actor18func_ov00_020c3200Ei -.extern _ZN5Actor8vfunc_b0Ev .extern func_ov00_020c3348 .extern func_ov00_020c4048 .extern func_ov00_020c4588 diff --git a/asm/ov48.inc b/asm/ov48.inc index 509ffce0..f897a1c1 100644 --- a/asm/ov48.inc +++ b/asm/ov48.inc @@ -63,6 +63,66 @@ .extern _ZN5Actor9GetHitboxEP8Cylinder .extern _ZN5ActorC2Ev .extern _ZN5ActorD2Ev +.extern _ZN12ActorManager12FilterActorsEP15ActorFilterBaseP9ActorList +.extern _ZN12ActorManager8GetActorEP8ActorRef +.extern _ZN5Actor10SetUnk_11bEv +.extern _ZN5Actor11SetVelocityEP5Vec3p +.extern _ZN5Actor12ApplyGravityEv +.extern _ZN5Actor12CollidesWithEPKS_ +.extern _ZN5Actor12GetOffsetPosEP5Vec3p +.extern _ZN5Actor12SetTransformEP9Transform +.extern _ZN5Actor12XzDistanceToEP5Vec3p +.extern _ZN5Actor14GetAngleToLinkEv +.extern _ZN5Actor15IsHitboxTouchedEb +.extern _ZN5Actor15TrySetTransformEP9Transform +.extern _ZN5Actor16CollidesWithLinkEv +.extern _ZN5Actor16XzDistanceToLinkEv +.extern _ZN5Actor18CollidesWithShieldEP8Cylinder +.extern _ZN5Actor18func_ov00_020c1cf8Ev +.extern _ZN5Actor18func_ov00_020c1d58Ev +.extern _ZN5Actor18func_ov00_020c1f5cEP5Vec3pS1_iS1_ii +.extern _ZN5Actor18func_ov00_020c1fc8Ej +.extern _ZN5Actor18func_ov00_020c243cEiPi +.extern _ZN5Actor18func_ov00_020c313cEj +.extern _ZN5Actor18func_ov00_020c3200Ei +.extern _ZN5Actor20IncreaseActiveFramesEv +.extern _ZN5Actor4KillEv +.extern _ZN5Actor6GetPosEv +.extern _ZN5Actor8vfunc_08Ev +.extern _ZN5Actor8vfunc_0cEv +.extern _ZN5Actor8vfunc_10Ej +.extern _ZN5Actor8vfunc_18Ej +.extern _ZN5Actor8vfunc_1cEt +.extern _ZN5Actor8vfunc_20Ei +.extern _ZN5Actor8vfunc_24Ev +.extern _ZN5Actor8vfunc_28Ev +.extern _ZN5Actor8vfunc_2cEv +.extern _ZN5Actor8vfunc_30Ev +.extern _ZN5Actor8vfunc_38Ev +.extern _ZN5Actor8vfunc_4cEPi +.extern _ZN5Actor8vfunc_54Ev +.extern _ZN5Actor8vfunc_60Ev +.extern _ZN5Actor8vfunc_64Ev +.extern _ZN5Actor8vfunc_68Ev +.extern _ZN5Actor8vfunc_6cEv +.extern _ZN5Actor8vfunc_70Ev +.extern _ZN5Actor8vfunc_74Ev +.extern _ZN5Actor8vfunc_78Ev +.extern _ZN5Actor8vfunc_7cEv +.extern _ZN5Actor8vfunc_80Ev +.extern _ZN5Actor8vfunc_84Ev +.extern _ZN5Actor8vfunc_88Ev +.extern _ZN5Actor8vfunc_8cEv +.extern _ZN5Actor8vfunc_90Ev +.extern _ZN5Actor8vfunc_94Ev +.extern _ZN5Actor8vfunc_98Ev +.extern _ZN5Actor8vfunc_9cEv +.extern _ZN5Actor8vfunc_a8Ev +.extern _ZN5Actor8vfunc_acEv +.extern _ZN5Actor8vfunc_b0Ev +.extern _ZN5Actor9GetHitboxEP8Cylinder +.extern _ZN5ActorC2Ev +.extern _ZN5ActorD2Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern _ZNK11ItemManager19GetActiveFairyLevelEi diff --git a/asm/ov49.inc b/asm/ov49.inc index 5d574b61..7ff8c456 100644 --- a/asm/ov49.inc +++ b/asm/ov49.inc @@ -2,7 +2,7 @@ .extern Divide .extern _ZN10ActorRupee18func_ov14_0213b5f4EjiP5Vec3pb .extern _ZN10PlayerBase18func_ov00_020a7c1cEP8Cylinder -.extern _ZN11ItemManager10GiveRupeesEjj +.extern _ZN11ItemManager10GiveRupeesEsb .extern _ZN11ItemManager10RemoveItemEi .extern _ZN11ItemManager12GetItemModelEj .extern _ZN14AdventureFlags18func_Ov00_02097810Ei diff --git a/asm/ov49.s b/asm/ov49.s index 88f35b27..cdf531cb 100644 --- a/asm/ov49.s +++ b/asm/ov49.s @@ -894,7 +894,7 @@ _02196068: mov r0, r5 rsb r1, r1, #0 mov r2, #0 - bl _ZN11ItemManager10GiveRupeesEjj + bl _ZN11ItemManager10GiveRupeesEsb ldrb r1, [r4, #0x5c9] ldr r0, _021960f0 ; =gItemManager add r1, r1, #1 diff --git a/asm/ov50.inc b/asm/ov50.inc index 39f3d162..cde44167 100644 --- a/asm/ov50.inc +++ b/asm/ov50.inc @@ -77,7 +77,6 @@ .extern data_027e0194 .extern data_027e0764 .extern data_027e0e58 -.extern gMapManager .extern data_027e0f64 .extern data_027e0f6c .extern data_027e0f90 @@ -191,3 +190,4 @@ .extern func_ov14_02148334 .extern func_ov14_02148364 .extern gAdventureFlags +.extern gMapManager diff --git a/asm/ov51.inc b/asm/ov51.inc index 61aea627..c6a423aa 100644 --- a/asm/ov51.inc +++ b/asm/ov51.inc @@ -1,5 +1,61 @@ #pragma once .extern _ZN10PlayerBase18EquipItem_vfunc_3cEP8Cylinderi +.extern _ZN12ActorManager8GetActorEP8ActorRef +.extern _ZN5Actor10SetUnk_11bEv +.extern _ZN5Actor11SetVelocityEP5Vec3p +.extern _ZN5Actor12CollidesWithEPKS_ +.extern _ZN5Actor12GetOffsetPosEP5Vec3p +.extern _ZN5Actor12SetTransformEP9Transform +.extern _ZN5Actor15IsHitboxTouchedEb +.extern _ZN5Actor15TrySetTransformEP9Transform +.extern _ZN5Actor16CollidesWithLinkEv +.extern _ZN5Actor16XzDistanceToLinkEv +.extern _ZN5Actor18func_Ov00_020c1bfcEi +.extern _ZN5Actor18func_ov00_020c1cf8Ev +.extern _ZN5Actor18func_ov00_020c1da0EiP5Vec3p +.extern _ZN5Actor18func_ov00_020c1e2cEiP5Vec3p +.extern _ZN5Actor18func_ov00_020c1ef8EP8CylinderP5Vec3pii +.extern _ZN5Actor18func_ov00_020c1fc8Ej +.extern _ZN5Actor18func_ov00_020c23c4EP8ActorRefPS_ +.extern _ZN5Actor18func_ov00_020c243cEiPi +.extern _ZN5Actor18func_ov00_020c313cEj +.extern _ZN5Actor18func_ov00_020c3200Ei +.extern _ZN5Actor20IncreaseActiveFramesEv +.extern _ZN5Actor4KillEv +.extern _ZN5Actor6GetPosEv +.extern _ZN5Actor8vfunc_0cEv +.extern _ZN5Actor8vfunc_10Ej +.extern _ZN5Actor8vfunc_18Ej +.extern _ZN5Actor8vfunc_1cEt +.extern _ZN5Actor8vfunc_24Ev +.extern _ZN5Actor8vfunc_28Ev +.extern _ZN5Actor8vfunc_2cEv +.extern _ZN5Actor8vfunc_30Ev +.extern _ZN5Actor8vfunc_38Ev +.extern _ZN5Actor8vfunc_48Ei +.extern _ZN5Actor8vfunc_4cEPi +.extern _ZN5Actor8vfunc_54Ev +.extern _ZN5Actor8vfunc_60Ev +.extern _ZN5Actor8vfunc_64Ev +.extern _ZN5Actor8vfunc_68Ev +.extern _ZN5Actor8vfunc_6cEv +.extern _ZN5Actor8vfunc_70Ev +.extern _ZN5Actor8vfunc_74Ev +.extern _ZN5Actor8vfunc_78Ev +.extern _ZN5Actor8vfunc_7cEv +.extern _ZN5Actor8vfunc_80Ev +.extern _ZN5Actor8vfunc_84Ev +.extern _ZN5Actor8vfunc_88Ev +.extern _ZN5Actor8vfunc_8cEv +.extern _ZN5Actor8vfunc_90Ev +.extern _ZN5Actor8vfunc_94Ev +.extern _ZN5Actor8vfunc_98Ev +.extern _ZN5Actor8vfunc_9cEv +.extern _ZN5Actor8vfunc_a8Ev +.extern _ZN5Actor8vfunc_acEv +.extern _ZN5Actor8vfunc_b0Ev +.extern _ZN5ActorC2Ev +.extern _ZN5ActorD2Ev .extern _ZN9SysObjectdlEPv .extern _ZN9SysObjectnwEmPjj .extern data_02050f54 @@ -73,63 +129,7 @@ .extern func_ov00_020c0cc8 .extern func_ov00_020c0e04 .extern func_ov00_020c1500 -.extern _ZN5ActorC2Ev -.extern _ZN5ActorD2Ev -.extern _ZN5Actor8vfunc_0cEv -.extern _ZN5Actor8vfunc_10Ej -.extern _ZN5Actor8vfunc_24Ev -.extern _ZN5Actor8vfunc_28Ev -.extern _ZN5Actor12GetOffsetPosEP5Vec3p -.extern _ZN5Actor8vfunc_38Ev -.extern _ZN5Actor8vfunc_2cEv -.extern _ZN5Actor8vfunc_30Ev -.extern _ZN5Actor8vfunc_18Ej -.extern _ZN5Actor8vfunc_1cEt -.extern _ZN5Actor10SetUnk_11bEv -.extern _ZN5Actor11SetVelocityEP5Vec3p -.extern _ZN5Actor8vfunc_60Ev -.extern _ZN5Actor8vfunc_64Ev -.extern _ZN5Actor8vfunc_68Ev -.extern _ZN5Actor8vfunc_6cEv -.extern _ZN5Actor8vfunc_70Ev -.extern _ZN5Actor8vfunc_74Ev -.extern _ZN5Actor8vfunc_7cEv -.extern _ZN5Actor8vfunc_78Ev -.extern _ZN5Actor8vfunc_80Ev -.extern _ZN5Actor8vfunc_84Ev -.extern _ZN5Actor8vfunc_88Ev -.extern _ZN5Actor8vfunc_8cEv -.extern _ZN5Actor8vfunc_90Ev -.extern _ZN5Actor8vfunc_94Ev -.extern _ZN5Actor8vfunc_98Ev -.extern _ZN5Actor8vfunc_9cEv -.extern _ZN5Actor15TrySetTransformEP9Transform -.extern _ZN5Actor12SetTransformEP9Transform -.extern _ZN5Actor8vfunc_a8Ev -.extern _ZN5Actor18func_Ov00_020c1bfcEi -.extern _ZN5Actor8vfunc_48Ei -.extern _ZN5Actor8vfunc_4cEPi -.extern _ZN5Actor18func_ov00_020c1cf8Ev -.extern _ZN5Actor18func_ov00_020c1da0EiP5Vec3p -.extern _ZN5Actor18func_ov00_020c1e2cEiP5Vec3p -.extern _ZN5Actor18func_ov00_020c1ef8EP8CylinderP5Vec3pii -.extern _ZN5Actor18func_ov00_020c1fc8Ej -.extern _ZN5Actor18func_ov00_020c23c4EP8ActorRefPS_ -.extern _ZN5Actor18func_ov00_020c243cEiPi -.extern _ZN5Actor12CollidesWithEPKS_ -.extern _ZN5Actor16CollidesWithLinkEv -.extern _ZN5Actor16XzDistanceToLinkEv -.extern _ZN5Actor20IncreaseActiveFramesEv -.extern _ZN5Actor15IsHitboxTouchedEb -.extern _ZN5Actor6GetPosEv -.extern _ZN5Actor8vfunc_54Ev -.extern _ZN5Actor18func_ov00_020c313cEj -.extern _ZN5Actor4KillEv -.extern _ZN5Actor8vfunc_acEv -.extern _ZN5Actor18func_ov00_020c3200Ei -.extern _ZN5Actor8vfunc_b0Ev .extern func_ov00_020c3348 -.extern _ZN12ActorManager8GetActorEP8ActorRef .extern func_ov00_020c4048 .extern func_ov00_020c4588 .extern func_ov00_020c57fc diff --git a/asm/ov52.inc b/asm/ov52.inc index 68329ec3..98a301f7 100644 --- a/asm/ov52.inc +++ b/asm/ov52.inc @@ -167,7 +167,7 @@ .extern func_ov05_021082e4 .extern func_ov09_0211c724 .extern func_ov09_0211c808 -.extern func_ov09_0211ca20 +.extern GiveShipPart .extern func_ov09_0211cac0 .extern func_ov14_021448f4 .extern func_ov14_02144a90 diff --git a/asm/ov52.s b/asm/ov52.s index 70ca8253..13915b53 100644 --- a/asm/ov52.s +++ b/asm/ov52.s @@ -1159,7 +1159,7 @@ _021963c4: blx func_ov09_0211c724 ldr r0, [sp, #4] ldr r1, [sp] - blx func_ov09_0211ca20 + blx GiveShipPart _021963ec: mov r0, r4 add sp, sp, #0xc diff --git a/asm/ov55.inc b/asm/ov55.inc index 682fbcf7..ddf48887 100644 --- a/asm/ov55.inc +++ b/asm/ov55.inc @@ -1,7 +1,7 @@ #pragma once .extern _ZN11ItemManager12GetItemModelEj .extern _ZN11ItemManager17EquipPreviousItemEv -.extern _ZN11ItemManager9SetPotionEjj +.extern _ZN11ItemManager9SetPotionEjh .extern _ZN12ActorManager8GetActorEP8ActorRef .extern _ZN13LinkStateBase12GetGrabActorEv .extern _ZN13LinkStateBase12GetPlayerPosEv diff --git a/asm/ov55.s b/asm/ov55.s index 7c50505e..0491b3f9 100644 --- a/asm/ov55.s +++ b/asm/ov55.s @@ -432,7 +432,7 @@ _02199244: ldr r1, [r4, #0xc] ldr r0, [r0] mov r2, #0 - bl _ZN11ItemManager9SetPotionEjj + bl _ZN11ItemManager9SetPotionEjh ldr r0, _0219926c ; =gItemManager ldr r0, [r0] bl _ZN11ItemManager17EquipPreviousItemEv diff --git a/asm/ov58.inc b/asm/ov58.inc index 470a005b..4ce7c74e 100644 --- a/asm/ov58.inc +++ b/asm/ov58.inc @@ -2,6 +2,7 @@ .extern Divide .extern _ZN11ItemManager12GetEquipItemEi .extern _ZN11ItemManager12GetItemModelEj +.extern _ZN12ActorManager13FindActorByIdEj .extern _ZN13LinkStateBase14GetPlayerAngleEv .extern _ZN13LinkStateBase15ChangeLinkStateEi .extern _ZN13LinkStateBase15GetGrabActorRefEv @@ -107,7 +108,6 @@ .extern func_ov00_020c0e5c .extern func_ov00_020c1500 .extern func_ov00_020c3348 -.extern _ZN12ActorManager13FindActorByIdEj .extern func_ov00_020c4048 .extern func_ov00_020cf01c .extern func_ov00_020d00c4 diff --git a/include/DTCM/UnkStruct_027e0f78.hpp b/include/DTCM/UnkStruct_027e0f78.hpp new file mode 100644 index 00000000..04353f37 --- /dev/null +++ b/include/DTCM/UnkStruct_027e0f78.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e0f78 { + /* 00 */ unk8 mUnk_00[0x18]; + /* 18 */ u16 mUnk_18; + /* 1a */ u16 mUnk_1a; + /* 1c */ u16 mUnk_1c; + /* 1e */ u16 mUnk_1e; + /* 20 */ +}; + +extern UnkStruct_027e0f78 *data_027e0f78; diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp index a2b02076..9535d9d2 100644 --- a/include/Item/Item.hpp +++ b/include/Item/Item.hpp @@ -5,77 +5,121 @@ typedef s32 ItemFlag; enum ItemFlag_ { ItemFlag_None = -1, - ItemFlag_OshusSword = 0, - ItemFlag_WoodenShield = 1, - ItemFlag_Boomerang = 2, - ItemFlag_Shovel = 3, - ItemFlag_BombBag = 4, - ItemFlag_Bow = 5, - ItemFlag_GrapplingHook = 6, - ItemFlag_BombchuBag = 7, - ItemFlag_Hammer = 8, - ItemFlag_PotionA = 9, - ItemFlag_PotionB = 10, + /* 0x00 */ ItemFlag_OshusSword = 0, + /* 0x01 */ ItemFlag_WoodenShield = 1, + /* 0x02 */ ItemFlag_Boomerang = 2, + /* 0x03 */ ItemFlag_Shovel = 3, + /* 0x04 */ ItemFlag_BombBag = 4, + /* 0x05 */ ItemFlag_Bow = 5, + /* 0x06 */ ItemFlag_GrapplingHook = 6, + /* 0x07 */ ItemFlag_BombchuBag = 7, + /* 0x08 */ ItemFlag_Hammer = 8, + /* 0x09 */ ItemFlag_PotionA = 9, + /* 0x0a */ ItemFlag_PotionB = 10, ItemFlag_EQUIP_START = ItemFlag_OshusSword, ItemFlag_EQUIP_END = ItemFlag_PotionB + 1, ItemFlag_EQUIP_COUNT = ItemFlag_EQUIP_END - ItemFlag_EQUIP_START, - ItemFlag_SpiritOfCourage = 20, - ItemFlag_SpiritOfPower = 21, - ItemFlag_SpiritOfWisdom = 22, - ItemFlag_CourageLv1 = 23, - ItemFlag_PowerLv1 = 24, - ItemFlag_WisdomLv1 = 25, + /* 0x14 */ ItemFlag_SpiritOfCourage = 20, + /* 0x15 */ ItemFlag_SpiritOfPower = 21, + /* 0x16 */ ItemFlag_SpiritOfWisdom = 22, + /* 0x17 */ ItemFlag_CourageLv1 = 23, + /* 0x18 */ ItemFlag_PowerLv1 = 24, + /* 0x19 */ ItemFlag_WisdomLv1 = 25, ItemFlag_FAIRY_LV1 = ItemFlag_CourageLv1, - ItemFlag_CourageLv2 = 26, - ItemFlag_PowerLv2 = 27, - ItemFlag_WisdomLv2 = 28, + /* 0x1a */ ItemFlag_CourageLv2 = 26, + /* 0x1b */ ItemFlag_PowerLv2 = 27, + /* 0x1c */ ItemFlag_WisdomLv2 = 28, ItemFlag_FAIRY_LV2 = ItemFlag_CourageLv2, - ItemFlag_Hourglass = 32, - ItemFlag_SeaChartSW = 33, - ItemFlag_SeaChartNW = 34, - ItemFlag_SeaChartSE = 35, - ItemFlag_SeaChartNE = 36, - ItemFlag_PhantomSword = 37, - ItemFlag_SunKey = 38, + /* 0x20 */ ItemFlag_Hourglass = 32, + /* 0x21 */ ItemFlag_SeaChartSW = 33, + /* 0x22 */ ItemFlag_SeaChartNW = 34, + /* 0x23 */ ItemFlag_SeaChartSE = 35, + /* 0x24 */ ItemFlag_SeaChartNE = 36, + /* 0x25 */ ItemFlag_PhantomSword = 37, + /* 0x26 */ ItemFlag_SunKey = 38, + /* 0x27 */ ItemFlag_Unk_39 = 39, + /* 0x28 */ ItemFlag_FishingRod = 40, + /* 0x29 */ ItemFlag_Cannon = 41, + /* 0x2a */ ItemFlag_KingsKey = 42, + /* 0x2b */ ItemFlag_GhostKey = 43, + /* 0x2c */ ItemFlag_SalvageArm = 44, - ItemFlag_KingsKey = 42, - ItemFlag_GhostKey = 43, + /* 0x2d */ ItemFlag_SwordsmansScroll = 45, + /* 0x2e */ ItemFlag_CycloneSlate = 46, + /* 0x2f */ ItemFlag_Unk_47 = 47, - ItemFlag_SwordsmansScroll = 45, + /* 0x60 */ ItemFlag_TreasureChart1 = 96, + /* 0x61 */ ItemFlag_TreasureChart2 = 97, + /* 0x62 */ ItemFlag_TreasureChart3 = 98, + /* 0x63 */ ItemFlag_TreasureChart4 = 99, + /* 0x64 */ ItemFlag_TreasureChart5 = 100, + /* 0x65 */ ItemFlag_TreasureChart6 = 101, + /* 0x66 */ ItemFlag_TreasureChart7 = 102, + /* 0x67 */ ItemFlag_TreasureChart8 = 103, + /* 0x68 */ ItemFlag_TreasureChart9 = 104, + /* 0x69 */ ItemFlag_TreasureChart10 = 105, + /* 0x6a */ ItemFlag_TreasureChart11 = 106, + /* 0x6b */ ItemFlag_TreasureChart12 = 107, + /* 0x6c */ ItemFlag_TreasureChart13 = 108, + /* 0x6d */ ItemFlag_TreasureChart14 = 109, + /* 0x6e */ ItemFlag_TreasureChart15 = 110, + /* 0x6f */ ItemFlag_TreasureChart16 = 111, + /* 0x70 */ ItemFlag_TreasureChart17 = 112, + /* 0x71 */ ItemFlag_TreasureChart18 = 113, + /* 0x72 */ ItemFlag_TreasureChart19 = 114, + /* 0x73 */ ItemFlag_TreasureChart20 = 115, + /* 0x74 */ ItemFlag_TreasureChart21 = 116, + /* 0x75 */ ItemFlag_TreasureChart22 = 117, + /* 0x76 */ ItemFlag_TreasureChart23 = 118, + /* 0x77 */ ItemFlag_TreasureChart24 = 119, + /* 0x78 */ ItemFlag_TreasureChart25 = 120, + /* 0x79 */ ItemFlag_TreasureChart26 = 121, + /* 0x7a */ ItemFlag_TreasureChart27 = 122, + /* 0x7b */ ItemFlag_TreasureChart28 = 123, + /* 0x7c */ ItemFlag_TreasureChart29 = 124, + /* 0x7d */ ItemFlag_TreasureChart30 = 125, + /* 0x7e */ ItemFlag_TreasureChart31 = 126, + /* 0x7f */ ItemFlag_TreasureChart32 = 127, + ItemFlag_TREASURE_CHART_START = ItemFlag_TreasureChart1, - ItemFlag_COUNT = 128, + ItemFlag_COUNT = 128, }; typedef s32 ItemId; enum ItemId_ { + /* 0x00 */ ItemId_None = 0, /* 0x01 */ ItemId_SmallKey = 1, /* 0x02 */ ItemId_GreenRupee = 2, /* 0x03 */ ItemId_OshusSword = 3, /* 0x04 */ ItemId_WoodenShield = 4, - + /* 0x05 */ ItemId_Unk_5 = 5, + /* 0x06 */ ItemId_Unk_6 = 6, /* 0x07 */ ItemId_BombBag = 7, /* 0x08 */ ItemId_Bow = 8, /* 0x09 */ ItemId_BigGreenRupee = 9, /* 0x0a */ ItemId_HeartContainer = 10, - + /* 0x0b */ ItemId_Unk_11 = 11, /* 0x0c */ ItemId_Boomerang = 12, /* 0x0d */ ItemId_Scoop = 13, /* 0x0e */ ItemId_BombchuBag = 14, /* 0x0f */ ItemId_BossKey = 15, - + /* 0x10 */ ItemId_Unk_16 = 16, + /* 0x11 */ ItemId_Unk_17 = 17, /* 0x12 */ ItemId_PhantomHourglass = 18, /* 0x13 */ ItemId_SWSeaChart = 19, /* 0x14 */ ItemId_NWSeaChart = 20, /* 0x15 */ ItemId_SESeaChart = 21, /* 0x16 */ ItemId_NESeaChart = 22, - + /* 0x17 */ ItemId_Unk_23 = 23, /* 0x18 */ ItemId_BlueRupee = 24, /* 0x19 */ ItemId_RedRupee = 25, /* 0x1a */ ItemId_BigRedRupee = 26, /* 0x1b */ ItemId_GoldRupee = 27, - + /* 0x1c */ ItemId_Unk_28 = 28, + /* 0x1d */ ItemId_Unk_29 = 29, + /* 0x1e */ ItemId_Unk_30 = 30, /* 0x1f */ ItemId_Hammer = 31, /* 0x20 */ ItemId_Rope = 32, /* 0x21 */ ItemId_SquareCrystal = 33, @@ -84,7 +128,7 @@ enum ItemId_ { /* 0x24 */ ItemId_FishingRod = 36, /* 0x25 */ ItemId_Cannon = 37, /* 0x26 */ ItemId_SunKey = 38, - + /* 0x27 */ ItemId_Unk_39 = 39, /* 0x28 */ ItemId_Quiver = 40, /* 0x29 */ ItemId_BigBombBag = 41, /* 0x2a */ ItemId_BigBombchuBag = 42, @@ -177,12 +221,14 @@ enum ItemId_ { /* 0x7d */ ItemId_Unk_125 = 125, /* 0x7e */ ItemId_Unk_126 = 126, /* 0x7f */ ItemId_CycloneSlate = 127, - + /* 0x80 */ ItemId_Unk_128 = 128, /* 0x81 */ ItemId_Rupoor10 = 129, /* 0x82 */ ItemId_Rupoor50 = 130, - + /* 0x83 */ ItemId_Unk_131 = 131, + /* 0x84 */ ItemId_Unk_132 = 132, /* 0x85 */ ItemId_Unk_133 = 133, - + /* 0x86 */ ItemId_Unk_134 = 134, + /* 0x87 */ ItemId_Unk_135 = 135, /* 0x88 */ ItemId_Unk_136 = 136, }; diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 7acaf4a3..e50fb673 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -1,18 +1,29 @@ #pragma once +extern "C" { + #include +} + #include "global.h" #include "types.h" #include "lib/math.h" #include "Actor/ActorNavi.hpp" +#include "DTCM/UnkStruct_027e0f78.hpp" +#include "Save/AdventureFlags.hpp" #include "Item/Item.hpp" #include "Map/MapManager.hpp" #include "Player/EquipItem.hpp" +#include "Player/HealthManager.hpp" +#include "Sound/Sfx.hpp" #include "System/SysNew.hpp" #include "System/OverlayManager.hpp" #include "Render/ModelRender.hpp" #define MAX_HOURGLASS_SECONDS 1500 // 25 minutes +#define MAX_AMMO_UPGRADE 2 +#define MAX_UNK_0BA 9 +#define MAX_POTIONS 2 typedef s32 FairyId; enum FairyId_ { @@ -80,7 +91,7 @@ typedef u8 Potion; enum Potion_ { Potion_None, Potion_Red, - Potion_Blue, + Potion_Purple, Potion_Yellow, Potion_COUNT, }; @@ -198,23 +209,23 @@ private: /* 0b4 */ u16 mQuiverSize; /* 0b6 */ u16 mBombBagSize; /* 0b8 */ u16 mBombchuBagSize; - /* 0ba */ unk16 mUnk_0ba; // only between 0 and 9 - /* 0bc */ Potion mPotions[2]; + /* 0ba */ u16 mUnk_0ba; // only between 0 and 9 + /* 0bc */ Potion mPotions[MAX_POTIONS]; /* 0be */ unk8 mUnk_0be[2]; // padding? /* 0c0 */ ItemModel *mItemModels[ItemModelId_COUNT]; /* 100 */ ItemModel *mDungeonItemModels[DungeonItemModelId_COUNT]; // non-null in dungeons/caves /* 114 */ ModelRender *mUnk_114; /* 118 */ ItemId mFanfareItem; - /* 11c */ unk32 mUnk_11c; + /* 11c */ SfxId mFanfareSfx; /* 120 */ void *mFanfareItemModel; /* 124 */ void *mUnk_124; /* 128 */ ItemFlags mItemFlags; /* 138 */ u32 mSalvagedTreasureFlags; /* 13c */ ShipPartPricesShown mShipPartPricesShown; /* 148 */ u32 mTreasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)]; - /* 14c */ unk8 mUnk_14c; + /* 14c */ bool mMuteNextFanfare; /* 14d */ u8 mUnk_14d; - /* 14e */ unk8 mUnk_14e[0x2]; + /* 14e */ unk8 mUnk_14e[0x2]; // padding? /* 150 */ public: @@ -268,6 +279,7 @@ public: void LoadFanfareItem(ItemId id); bool GetFanfareItemScale(Vec3p *pScale) const; void LoadDungeonItemModels(); + static void PlayItemFanfareSfx(ItemId item); // Ship ShipType GetEquippedShipPart(ShipPart part) const; @@ -297,12 +309,12 @@ public: bool HasItem(ItemFlag item) const; void AddItem(ItemFlag item); void RemoveItem(ItemFlag item); - void GiveItem(ItemId id, unk32 param2, unk32 param3); + void GiveItem(ItemId id); void GiveEquipItem(ItemFlag item, u16 ammo); // Rupees - u32 GetMaxRupees() const; - void GiveRupees(u16 amount, unk32 param2); + s32 GetMaxRupees() const; + void GiveRupees(s16 amount, bool param2); // Potion void SetPotion(u32 index, Potion potion); @@ -311,11 +323,12 @@ public: bool HasPurplePotion() const; void UnequipPotion(); - // Unknown - void func_ov00_020ae350() const; + // Keys + unk32 GetNumKeys() const; void GiveKeys(u32 amount); - void func_ov00_020ae4dc(unk32 param1); // sets mUnk_0ba - void func_ov00_020ae648(unk32 param1, unk32 param2, unk32 param3); + + // Unknown + void func_ov00_020ae4dc(s32 param1); }; extern ItemManager *gItemManager; diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 1768ae85..352cae1b 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -8,6 +8,8 @@ #include "Physics/AABB.hpp" #include "System/SysNew.hpp" +#define MAX_KEYS 8 + typedef unk32 CourseType; enum CourseType_ { CourseType_Normal = 0, diff --git a/include/Player/HealthManager.hpp b/include/Player/HealthManager.hpp new file mode 100644 index 00000000..5ebb7181 --- /dev/null +++ b/include/Player/HealthManager.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "System/SysNew.hpp" + +class HealthManager : public SysObject { +public: + /* 00 */ u16 mMaxHealth; + /* 02 */ u16 mHealth; + /* 04 */ s16 mMaxShipHealth; + /* 06 */ s16 mShipHealth; + /* 08 */ u16 mSalvageArmHealth; + /* 0a */ s16 mFlags; + /* 0c */ unk16 mUnk_0c; + /* 0e */ unk8 mUnk_0e; + /* 0f */ unk8 mUnk_0f; + /* 10 */ +}; + +extern HealthManager *gHealthManager; diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index 411d3a55..bfe511f9 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -9,7 +9,33 @@ typedef u32 AdventureFlag; enum AdventureFlag_ { - AdventureFlag_COUNT = 391, + /* 0x09 */ AdventureFlag_SWSeaChart = 9, + /* 0x0a */ AdventureFlag_NWSeaChart = 10, + /* 0x0b */ AdventureFlag_SESeaChart = 11, + /* 0x0c */ AdventureFlag_NESeaChart = 12, + + /* 0x13 */ AdventureFlag_Hourglass = 19, + + /* 0x16 */ AdventureFlag_SunKey = 22, + /* 0x17 */ AdventureFlag_Unk_23 = 23, + + /* 0x2b */ AdventureFlag_FishingRod = 43, + + /* 0x30 */ AdventureFlag_Cannon = 48, + + /* 0x7d */ AdventureFlag_Azurine = 125, + /* 0x7e */ AdventureFlag_Crimsonine = 126, + /* 0x7f */ AdventureFlag_Aquanine = 127, + /* 0x80 */ AdventureFlag_Unk_128 = 128, + + /* 0x8c */ AdventureFlag_SalvageArm = 140, + + /* 0x126 */ AdventureFlag_ReceivedGoldenChimney = 294, + /* 0x127 */ AdventureFlag_ReceivedGoldenHandrail = 295, + /* 0x128 */ AdventureFlag_ReceivedGoldenCannon = 296, + /* 0x129 */ AdventureFlag_ReceivedGoldenHull = 297, + + /* 0x187 */ AdventureFlag_COUNT = 391, }; struct FlagsUnk2 { @@ -46,6 +72,7 @@ struct FlagsUnk { }; class AdventureFlags : public SysObject { +public: /* 00 */ unk32 mFlags[16]; /* 40 */ CutsceneHandler *mCutsceneHandler; /* 44 */ void *mUnk_44; diff --git a/include/Sound/Sfx.hpp b/include/Sound/Sfx.hpp new file mode 100644 index 00000000..38b66d51 --- /dev/null +++ b/include/Sound/Sfx.hpp @@ -0,0 +1,221 @@ +#pragma once + +#include "global.h" +#include "types.h" + +typedef u32 SfxId; +enum SfxId_ { + SfxId_None = 0x0, + + SfxId_Music_StoryIntro = 0x2, + SfxId_Music_StoryOutsetIsland = 0x3, + SfxId_Music_StoryZeldasLullaby = 0x4, + SfxId_Music_DarkKingGanon = 0x5, + SfxId_Music_TheHeroOfTheWinds = 0x6, + SfxId_Music_OffToTheSeas = 0x7, + SfxId_Music_ThePirateShip_1 = 0x8, + SfxId_Music_TheKingOfTheOceans = 0x9, + SfxId_Music_InTheDarkDungeon_1 = 0xa, + SfxId_Music_LinebecksTheme = 0xb, + SfxId_Fanfare_KeyDizzy = 0xc, + SfxId_Music_MagicInTheAir_1 = 0xd, + SfxId_Music_TheSandsOfTime_1 = 0xe, + SfxId_Fanfare_Discovery_1 = 0xf, + SfxId_Music_MagicInTheAir_2 = 0x10, + SfxId_Music_TheSandsOfTime_2 = 0x11, + SfxId_Fanfare_Discovery_2 = 0x12, + SfxId_Music_MagicInTheAir_3 = 0x13, + + SfxId_Music_MagicInTheAir_4 = 0x15, + SfxId_Music_Credits = 0x16, + + SfxId_Music_DarkMemories = 0x18, + SfxId_Music_TheSandsOfTime_3 = 0x19, + SfxId_Fanfare_Discovery_3 = 0x1a, + + SfxId_Fanfare_Nothing_1 = 0x1c, + SfxId_Music_TheSandsOfTime_4 = 0x1d, + SfxId_Music_ZeldasLullaby = 0x1e, + + SfxId_Music_BellumLoop = 0x21, + + SfxId_Music_ThePirateShip_2 = 0x25, + + SfxId_Music_FairyFountain = 0x27, + SfxId_Fanfare_Treasure = 0x28, + SfxId_Fanfare_Rupee = 0x29, + SfxId_Fanfare_GoldRupee = 0x2a, + SfxId_Fanfare_Rupoor = 0x2b, + SfxId_Fanfare_Nothing_2 = 0x2c, + SfxId_Fanfare_HeartContainer = 0x2d, + SfxId_Fanfare_Gem = 0x2e, + SfxId_Fanfare_Discovery_4 = 0x2f, + SfxId_Music_Indoors_1 = 0x30, + SfxId_Music_Indoors_2 = 0x31, + SfxId_Music_Lithoroves = 0x32, + SfxId_Music_Indoors_3 = 0x33, + SfxId_Music_AstridsTheme = 0x34, + + SfxId_Music_Indoors_4 = 0x38, + SfxId_Music_Indoors_5 = 0x39, + SfxId_Music_Indoors_6 = 0x3a, + SfxId_Music_Indoors_7 = 0x3b, + SfxId_Music_Indoors_8 = 0x3c, + + SfxId_Music_ThePirateShip_3 = 0x3e, + SfxId_Music_BeedlesShopShip_1 = 0x3f, + SfxId_Music_BeedlesShopShip_2 = 0x40, + + SfxId_Music_Indoors_9 = 0x42, + SfxId_Music_Indoors_10 = 0x43, + SfxId_Music_Indoors_11 = 0x44, + SfxId_Music_Indoors_12 = 0x45, + SfxId_Music_Indoors_13 = 0x46, + SfxId_Music_DangerInTheGreatBlueSea_1 = 0x47, + SfxId_Music_DangerInTheGreatBlueSea_2 = 0x48, + SfxId_Music_TheDarkCaves_1 = 0x49, + SfxId_Fanfare_OhNo = 0x4a, + SfxId_Music_GameOver = 0x4b, + SfxId_Fanfare_TempleOfTheOceanKing = 0x4c, + SfxId_Music_EnemyBattle_1 = 0x4d, + SfxId_Music_MercayIsland_1 = 0x4e, + SfxId_Music_UnchartedTerritory_1 = 0x4f, + SfxId_Music_MercayIsland_2 = 0x50, + SfxId_Music_UnchartedTerritory_2 = 0x51, + SfxId_Music_MercayIsland_3 = 0x52, + SfxId_Music_UnchartedTerritory_3 = 0x53, + SfxId_Music_UnchartedTerritory_4 = 0x54, + SfxId_Music_UnchartedTerritory_5 = 0x55, + SfxId_Music_MercayIsland_4 = 0x56, + SfxId_Music_UnchartedTerritory_6 = 0x57, + SfxId_Music_TheGorons = 0x58, + SfxId_Music_UnchartedTerritory_7 = 0x59, + SfxId_Music_UnchartedTerritory_8 = 0x5a, + SfxId_Music_UnchartedTerritory_9 = 0x5b, + SfxId_Music_UnchartedTerritory_10 = 0x5c, + SfxId_Music_MercayIsland_5 = 0x5d, + SfxId_Music_UnchartedTerritory_11 = 0x5e, + SfxId_Music_UnchartedTerritory_12 = 0x5f, + + SfxId_Music_MercayIsland_6 = 0x61, + SfxId_Music_MercayIsland_7 = 0x62, + SfxId_Music_MercayIsland_8 = 0x63, + SfxId_Music_UnchartedTerritory_13 = 0x64, + + SfxId_Music_GhostShip = 0x66, + SfxId_Music_ChasingTheGhostShip = 0x67, + SfxId_Music_EnemyBattle_2 = 0x68, + SfxId_Music_JoleneAppears = 0x69, + SfxId_Music_JoleneAppearsLoop = 0x6a, + SfxId_Music_JoleneVsLink_1 = 0x6b, + SfxId_Music_JoleneVsLink_2 = 0x6c, + SfxId_Music_JoleneVsLinkEnd = 0x6d, + SfxId_Music_InTheDarkDungeon_2 = 0x6e, + SfxId_Music_InTheDarkDungeon_3 = 0x6f, + + SfxId_Music_InTheDarkDungeon_4 = 0x72, + + SfxId_Music_InTheDarkDungeon_5 = 0x75, + + SfxId_Music_InTheDarkDungeon_6 = 0x78, + SfxId_Music_InTheDarkDungeon_7 = 0x79, + SfxId_Music_InTheDarkDungeon_8 = 0x7a, + SfxId_Music_InTheDarkDungeon_9 = 0x7b, + SfxId_Music_TheDarkCaves_2 = 0x7c, + + SfxId_Music_InTheDarkDungeon_10 = 0x7f, + SfxId_Music_TheDarkCaves_3 = 0x80, + + SfxId_Music_InTheDarkDungeon_11 = 0x83, + SfxId_Music_TheDarkCaves_4 = 0x84, + + SfxId_Music_InTheDarkDungeon_12 = 0x87, + SfxId_Music_TheDarkCaves_5 = 0x88, + SfxId_Music_InTheDarkDungeon_13 = 0x89, + SfxId_Music_InTheDarkDungeon_14 = 0x8b, + SfxId_Music_InTheDarkDungeon_15 = 0x8c, + SfxId_Music_InTheDarkDungeon_16 = 0x8d, + SfxId_Music_InTheDarkDungeon_17 = 0x8e, + SfxId_Music_InTheDarkDungeon_18 = 0x8f, + SfxId_Music_InTheDarkDungeon_19 = 0x90, + SfxId_Music_InTheDarkDungeon_20 = 0x91, + SfxId_Music_InTheDarkDungeon_21 = 0x92, + SfxId_Music_InTheDarkDungeon_22 = 0x93, + SfxId_Music_InTheDarkDungeon_23 = 0x94, + SfxId_Music_InTheDarkDungeon_24 = 0x95, + SfxId_Music_InTheDarkDungeon_25 = 0x96, + SfxId_Music_TheDarkCaves_6 = 0x97, + SfxId_Music_TheDarkCaves_7 = 0x98, + SfxId_Music_TheDarkCaves_8 = 0x99, + SfxId_Music_TheDarkCaves_9 = 0x9a, + SfxId_Music_TheDarkCaves_10 = 0x9b, + + SfxId_Music_InTheDarkDungeon_26 = 0x9e, + SfxId_Music_InTheDarkDungeon_27 = 0x9f, + SfxId_Music_InTheDarkDungeon_28 = 0xa0, + SfxId_Music_TheDarkCaves_11 = 0xa1, + SfxId_Music_TheDarkCaves_12 = 0xa2, + SfxId_Music_InTheDarkDungeon_29 = 0xa3, + SfxId_Music_TheDarkCaves_13 = 0xa4, + SfxId_Music_TheDarkCaves_14 = 0xa5, + + SfxId_Music_PhantomChase_1 = 0xa7, + SfxId_Music_FencingPractice_1 = 0xa8, + SfxId_Music_FencingPractice_2 = 0xa9, + SfxId_Music_FencingPractice_3 = 0xaa, + SfxId_Music_FencingPractice_4 = 0xab, + SfxId_Music_FencingPractice_5 = 0xac, + SfxId_Music_FencingPractice_6 = 0xad, + SfxId_Music_FencingPractice_7 = 0xae, + SfxId_Music_FencingPractice_8 = 0xaf, + SfxId_Music_FencingPractice_9 = 0xb0, + SfxId_Music_FencingPractice_10 = 0xb1, + SfxId_Music_FencingPractice_11 = 0xb2, + SfxId_Music_FencingPractice_12 = 0xb3, + SfxId_Mandolin_Chord_1 = 0xb4, + SfxId_Mandolin_Chord_2 = 0xb5, + SfxId_Mandolin_Chord_3 = 0xb6, + SfxId_Mandolin_Chord_4 = 0xb7, + SfxId_Mandolin_Chord_5 = 0xb8, + SfxId_Mandolin_Chord_6 = 0xb9, + SfxId_Mandolin_Chord_7 = 0xba, + SfxId_Mandolin_Chord_8 = 0xbb, + SfxId_Music_BeginContactMode = 0xbc, + SfxId_Fanfare_Checkpoint_1 = 0xbd, + SfxId_Fanfare_Checkpoint_2 = 0xbe, + SfxId_Fanfare_Checkpoint_3 = 0xbf, + SfxId_Fanfare_Checkpoint_4 = 0xc0, + SfxId_Fanfare_Checkpoint_5 = 0xc1, + SfxId_Fanfare_Victory = 0xc2, + SfxId_Drumroll = 0xc3, + SfxId_Fanfare_Stumble = 0xc4, + SfxId_Music_BossBattle_1 = 0xc5, + SfxId_Music_BossBattle_2 = 0xc6, + SfxId_Music_BossBattle_3 = 0xc7, + SfxId_Music_BossBattle_4 = 0xc8, + SfxId_Music_BossBattle_5 = 0xc9, + SfxId_Music_BossBattle_6 = 0xca, + SfxId_Music_BossBattle_7 = 0xcb, + + SfxId_Music_SpinSpinSpin_1 = 0xcf, + + SfxId_Music_SpinSpinSpin_2 = 0xd2, + SfxId_Music_FencingPractice_13 = 0xd3, + SfxId_Music_FencingPracticeStart = 0xd4, + SfxId_Music_BattleStageSelection_1 = 0xd5, + SfxId_Music_FencingPractice_14 = 0xd6, + SfxId_Music_FencingPractice_15 = 0xd7, + SfxId_Music_FencingPractice_16 = 0xd8, + SfxId_Music_FencingPractice_17 = 0xd9, + SfxId_Music_IntoTheCrystalBall = 0xe0, + + SfxId_Music_PhantomChase_2 = 0xe2, + SfxId_Fanfare_GreatLoss = 0xe3, + SfxId_Fanfare_Incoming = 0xe4, + SfxId_Fanfare_GoalReached = 0xe5, + SfxId_Fanfare_LostGame_1 = 0xe6, + SfxId_Fanfare_LostGame_2 = 0xe7, + SfxId_Fanfare_BattleStart = 0xe8, + SfxId_Music_BattleEnd = 0xe9, + SfxId_Music_BattleStageSelection_2 = 0xea, +}; diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index a9c5ae5d..d34e9a40 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -1,7 +1,8 @@ #include "Item/ItemManager.hpp" -extern u32 *data_027e0ce0[]; +static const char *sShipPartTypes[] = { "anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg" }; +extern u32 *data_027e0ce0[]; THUMB ItemManager* ItemManager::Create() { gItemManager = new(data_027e0ce0[1], 4) ItemManager(); return gItemManager; @@ -379,3 +380,703 @@ THUMB void ItemManager::RemoveItem(ItemFlag item) { (*mAmmo)[item] = 0; } } + +extern ItemModel **data_027e1058; +extern ItemModel **data_027e105c; +extern "C" ItemModel* func_ov00_02079ffc(void*, const char *modelName, const char *textureName, unk32 param4, unk8 param5, unk8 param6, bool param7); +extern "C" ItemModel* LoadTreasureItemFanfare(ItemModel**, s32 treasureType, bool, bool); +static char *sDefaultItemModel = "key"; +static char *sItemModelNames[70] = { + [ItemId_None] = "key", + [ItemId_SmallKey] = "key", + [ItemId_GreenRupee] = "rupee_g", + [ItemId_OshusSword] = "swA", + [ItemId_WoodenShield] = "shA", + [ItemId_Unk_5] = NULL, + [ItemId_Unk_6] = "force_y", + [ItemId_BombBag] = "bomb\0\0\0", + [ItemId_Bow] = "bow", + [ItemId_BigGreenRupee] = "rupee_g", + [ItemId_HeartContainer] = "heart_utu\0\0", + [ItemId_Unk_11] = NULL, + [ItemId_Boomerang] = "boomerang\0\0", + [ItemId_Scoop] = "scp", + [ItemId_BombchuBag] = "bomchu\0", + [ItemId_BossKey] = "bosskey", + [ItemId_Unk_16] = "rev_bin", + [ItemId_Unk_17] = NULL, + [ItemId_PhantomHourglass] = NULL, + [ItemId_SWSeaChart] = "mapSea\0", + [ItemId_NWSeaChart] = "mapSea\0", + [ItemId_SESeaChart] = "mapSea\0", + [ItemId_NESeaChart] = "mapSea\0", + [ItemId_Unk_23] = NULL, + [ItemId_BlueRupee] = "rupee_b", + [ItemId_RedRupee] = "rupee_r", + [ItemId_BigRedRupee] = "rupee_r", + [ItemId_GoldRupee] = "rupee_go\0\0\0", + [ItemId_Unk_28] = "force_y", + [ItemId_Unk_29] = "force_r", + [ItemId_Unk_30] = "force_b", + [ItemId_Hammer] = "ham", + [ItemId_Rope] = "rope\0\0\0", + [ItemId_SquareCrystal] = "cstl_c\0", + [ItemId_RoundCrystal] = "cstl_s\0", + [ItemId_TriangleCrystal] = "cstl_t\0", + [ItemId_FishingRod] = "fp\0", + [ItemId_Cannon] = NULL, + [ItemId_SunKey] = "key_su\0", + [ItemId_Unk_39] = NULL, + [ItemId_Quiver] = "arrowpod\0\0\0", + [ItemId_BigBombBag] = "bmbagM\0", + [ItemId_BigBombchuBag] = "bcbagM\0", + [ItemId_Unk_43] = NULL, + [ItemId_KingsKey] = "key_ki\0", + [ItemId_PowerGem] = "minaP\0\0", + [ItemId_WisdomGem] = "minaC\0\0", + [ItemId_CourageGem] = "minaY\0\0", + [ItemId_PinkCoral] = NULL, + [ItemId_WhitePearlLoop] = NULL, + [ItemId_DarkPearlLoop] = NULL, + [ItemId_ZoraScale] = NULL, + [ItemId_GoronAmber] = NULL, + [ItemId_RutoCrown] = NULL, + [ItemId_HelmarocPlume] = NULL, + [ItemId_RegalRing] = NULL, + [ItemId_GhostKey] = "key_gh\0", + [ItemId_FreebieCard] = "tic_tada\0\0\0", + [ItemId_ComplimentCard] = "tic_ohome\0\0", + [ItemId_ComplimentaryCard] = "tic_rare\0\0\0", + [ItemId_RegalNecklace] = "neckl\0\0", + [ItemId_SalvageArm] = "slvarm\0", + [ItemId_HerosNewClothes] = NULL, + [ItemId_Kaleidoscope] = "telescope\0\0", + [ItemId_GuardNotebook] = "notebook\0\0\0", + [ItemId_JolenesLetter] = "letter\0", + [ItemId_PrizePostcard] = "card\0\0\0", + [ItemId_WoodHeart] = "marron\0", + [ItemId_PhantomSwordBlade] = "swBedge", + [ItemId_PhantomSword] = NULL, +}; +static char *sItemModelNames2[8] = { + [ItemId_SwordsmanScroll - ItemId_SwordsmanScroll] = "makimono\0\0\0", + [ItemId_Crimsonine - ItemId_SwordsmanScroll] = "hagaH\0\0", + [ItemId_Azurine - ItemId_SwordsmanScroll] = "hagaK\0\0", + [ItemId_Aquanine - ItemId_SwordsmanScroll] = "hagaS\0\0", + [ItemId_RedPotion - ItemId_SwordsmanScroll] = "rev_bin", + [ItemId_PurplePotion - ItemId_SwordsmanScroll] = "rev_binP\0\0\0", + [ItemId_YellowPotion - ItemId_SwordsmanScroll] = "rev_binY\0\0\0", + [ItemId_SandOfHours - ItemId_SwordsmanScroll] = "sand_m\0", +}; +static char *sItemModelNames3[9] = { + [ItemId_CycloneSlate - ItemId_CycloneSlate] = "compass", + [ItemId_Unk_128 - ItemId_CycloneSlate] = "lure\0\0\0", + [ItemId_Rupoor10 - ItemId_CycloneSlate] = "rupee_bb\0\0\0", + [ItemId_Rupoor50 - ItemId_CycloneSlate] = "rupee_bb\0\0\0", + [ItemId_Unk_131 - ItemId_CycloneSlate] = NULL, + [ItemId_Unk_132 - ItemId_CycloneSlate] = NULL, + [ItemId_Unk_133 - ItemId_CycloneSlate] = NULL, + [ItemId_Unk_134 - ItemId_CycloneSlate] = NULL, + [ItemId_Unk_135 - ItemId_CycloneSlate] = NULL, +}; +char *sSpecialItemModelNames[7] = { + "mapTakara\0\0", + "arrowpodL\0\0", + "bmbagL\0", + "bcbagL\0", + "Player/get/gd_\0", + ".nsbmd\0", + ".nsbtx\0", +}; +THUMB void ItemManager::LoadFanfareItem(ItemId id) { + mFanfareItem = id; + + ItemModel *model; + if ( + id == ItemId_Unk_43 || + id == ItemId_Cannon || + (id >= ItemId_GOLDEN_SHIP_START && id <= ItemId_GOLDEN_SHIP_END) || + id == ItemId_Unk_126 || + id == ItemId_Unk_133 + ) { + model = *data_027e1058; + } else if ( + id >= ItemId_TREASURE_START && + id <= ItemId_TREASURE_END + ) { + model = LoadTreasureItemFanfare(data_027e105c, id - ItemId_TREASURE_START, true, false); + } else if (id == ItemId_Unk_125) { + model = *data_027e105c; + } else { + char modelName[0x80] = {}; + char textureName[0x80] = {}; + const char *itemName = NULL; + if (id == ItemId_Quiver && (s32) mQuiverSize >= 1) { + itemName = sSpecialItemModelNames[1]; + } else if (id == ItemId_BigBombBag && (s32) mBombBagSize >= 1) { + itemName = sSpecialItemModelNames[2]; + } else if (id == ItemId_BigBombchuBag && (s32) mBombchuBagSize >= 1) { + itemName = sSpecialItemModelNames[3]; + } else if (id == ItemId_HerosNewClothes) { + itemName = sShipPartTypes[11]; + } else if (id < ItemId_Unk_70) { + itemName = sItemModelNames[id]; + } else if (id >= ItemId_SwordsmanScroll && id < ItemId_GoldenChimney) { + itemName = sItemModelNames2[id - ItemId_SwordsmanScroll]; + } else if (id >= ItemId_CycloneSlate && id < ItemId_Unk_136) { + itemName = sItemModelNames3[id - ItemId_CycloneSlate]; + } else if (id >= ItemId_TREASURE_CHART_START && id <= ItemId_TREASURE_CHART_END) { + itemName = sSpecialItemModelNames[0]; + } + if (!itemName) { + itemName = sDefaultItemModel; + } + strcat(modelName, sSpecialItemModelNames[4]); + strcat(modelName, itemName); + strcat(modelName, sSpecialItemModelNames[5]); + strcat(textureName, sSpecialItemModelNames[4]); + strcat(textureName, itemName); + strcat(textureName, sSpecialItemModelNames[6]); + model = func_ov00_02079ffc(mFanfareItemModel, modelName, textureName, 0, 0, 0, true); + } + mUnk_114->vfunc_0c(model); +} + +THUMB bool ItemManager::GetFanfareItemScale(Vec3p *scale) const { + switch (mFanfareItem) { + case ItemId_BigGreenRupee: + case ItemId_BigRedRupee: + case ItemId_GoldRupee: + case ItemId_Rupoor50: + scale->x = FLOAT_TO_Q20(1.4); + scale->y = FLOAT_TO_Q20(1.4); + scale->z = FLOAT_TO_Q20(1.4); + return true; + } + return false; +} + +extern "C" void GiveShipPart(ShipPart part, ShipType type); +extern "C" void EquipLinebeckCannon(); +THUMB void ItemManager::GiveItem(ItemId id) { + switch (id) { + case ItemId_SmallKey: { + this->GiveKeys(1); + } break; + + case ItemId_GreenRupee: { + this->GiveRupees(1, true); + } break; + + case ItemId_BlueRupee: { + this->GiveRupees(5, true); + } break; + + case ItemId_RedRupee: { + this->GiveRupees(20, true); + } break; + + case ItemId_BigGreenRupee: { + this->GiveRupees(100, true); + } break; + + case ItemId_BigRedRupee: { + this->GiveRupees(200, true); + } break; + + case ItemId_GoldRupee: { + this->GiveRupees(300, true); + } break; + + case ItemId_OshusSword: { + SET_FLAG(mItemFlags.flags, ItemFlag_OshusSword); + this->GetEquipItem(ItemFlag_OshusSword)->GiveAmmo(1); + } break; + + case ItemId_WoodenShield: { + SET_FLAG(mItemFlags.flags, ItemFlag_WoodenShield); + this->GetEquipItem(ItemFlag_WoodenShield)->GiveAmmo(1); + } break; + + case ItemId_BombBag: { + this->GiveEquipItem(ItemFlag_BombBag, 10); + } break; + + case ItemId_BombchuBag: { + this->GiveEquipItem(ItemFlag_BombchuBag, 10); + } break; + + case ItemId_Bow: { + this->GiveEquipItem(ItemFlag_Bow, 20); + } break; + + case ItemId_Boomerang: { + this->GiveEquipItem(ItemFlag_Boomerang, 1); + } break; + + case ItemId_Scoop: { + this->GiveEquipItem(ItemFlag_Shovel, 1); + } break; + + case ItemId_Hammer: { + this->GiveEquipItem(ItemFlag_Hammer, 1); + } break; + + case ItemId_Rope: { + this->GiveEquipItem(ItemFlag_GrapplingHook, 1); + } break; + + case ItemId_PhantomHourglass: { + SET_FLAG(mItemFlags.flags, ItemFlag_Hourglass); + gAdventureFlags->Set(AdventureFlag_Hourglass, true); + } break; + + case ItemId_SWSeaChart: { + SET_FLAG(mItemFlags.flags, ItemFlag_SeaChartSW); + gAdventureFlags->Set(AdventureFlag_SWSeaChart, true); + } break; + + case ItemId_NWSeaChart: { + SET_FLAG(mItemFlags.flags, ItemFlag_SeaChartNW); + gAdventureFlags->Set(AdventureFlag_NWSeaChart, true); + } break; + + case ItemId_SESeaChart: { + SET_FLAG(mItemFlags.flags, ItemFlag_SeaChartSE); + gAdventureFlags->Set(AdventureFlag_SESeaChart, true); + } break; + + case ItemId_NESeaChart: { + SET_FLAG(mItemFlags.flags, ItemFlag_SeaChartNE); + gAdventureFlags->Set(AdventureFlag_NESeaChart, true); + } break; + + case ItemId_FishingRod: { + SET_FLAG(mItemFlags.flags, ItemFlag_FishingRod); + gAdventureFlags->Set(AdventureFlag_FishingRod, true); + } break; + + case ItemId_Cannon: { + SET_FLAG(mItemFlags.flags, ItemFlag_Cannon); + gAdventureFlags->Set(AdventureFlag_Cannon, true); + GiveShipPart(ShipPart_Cannon, ShipType_Linebeck); + EquipLinebeckCannon(); + } break; + + case ItemId_SunKey: { + SET_FLAG(mItemFlags.flags, ItemFlag_SunKey); + gAdventureFlags->Set(AdventureFlag_SunKey, true); + } break; + + case ItemId_Unk_39: { + SET_FLAG(mItemFlags.flags, ItemFlag_Unk_39); + gAdventureFlags->Set(AdventureFlag_Unk_23, true); + } break; + + case ItemId_Quiver: { + this->UpgradeQuiver(); + } break; + + case ItemId_BigBombBag: { + this->UpgradeBombBag(); + } break; + + case ItemId_BigBombchuBag: { + this->UpgradeBombchuBag(); + } break; + + case ItemId_KingsKey: { + SET_FLAG(mItemFlags.flags, ItemFlag_KingsKey); + } break; + + case ItemId_GhostKey: { + SET_FLAG(mItemFlags.flags, ItemFlag_GhostKey); + } break; + + case ItemId_PowerGem: { + mNumGems[Gem_Power] += 1; + } break; + + case ItemId_WisdomGem: { + mNumGems[Gem_Wisdom] += 1; + } break; + + case ItemId_CourageGem: { + mNumGems[Gem_Courage] += 1; + } break; + + case ItemId_SalvageArm: { + SET_FLAG(mItemFlags.flags, ItemFlag_SalvageArm); + gAdventureFlags->Set(AdventureFlag_SalvageArm, true); + gHealthManager->mSalvageArmHealth = 5; + } break; + + case ItemId_SwordsmanScroll: { + SET_FLAG(mItemFlags.flags, ItemFlag_SwordsmansScroll); + } break; + + case ItemId_Crimsonine: { + gAdventureFlags->Set(AdventureFlag_Crimsonine, true); + } break; + + case ItemId_Azurine: { + gAdventureFlags->Set(AdventureFlag_Azurine, true); + } break; + + case ItemId_Aquanine: { + gAdventureFlags->Set(AdventureFlag_Aquanine, true); + } break; + + case ItemId_SpiritOfPowerUpgradeLvl1: { + SET_FLAG(mItemFlags.flags, ItemFlag_PowerLv1); + } break; + + case ItemId_SpiritOfWisdomUpgradeLvl1: { + SET_FLAG(mItemFlags.flags, ItemFlag_WisdomLv1); + } break; + + case ItemId_SpiritOfCourageUpgradeLvl1: { + SET_FLAG(mItemFlags.flags, ItemFlag_CourageLv1); + } break; + + case ItemId_SpiritOfPowerUpgradeLvl2: { + SET_FLAG(mItemFlags.flags, ItemFlag_PowerLv2); + } break; + + case ItemId_SpiritOfWisdomUpgradeLvl2: { + SET_FLAG(mItemFlags.flags, ItemFlag_WisdomLv2); + } break; + + case ItemId_SpiritOfCourageUpgradeLvl2: { + SET_FLAG(mItemFlags.flags, ItemFlag_CourageLv2); + } break; + + case ItemId_RedPotion: { + for (s32 i = 0; i < MAX_POTIONS; ++i) { + if (mPotions[i] != Potion_None) continue; + this->SetPotion(i, Potion_Red); + break; + } + } break; + + case ItemId_PurplePotion: { + for (s32 i = 0; i < MAX_POTIONS; ++i) { + if (mPotions[i] != Potion_None) continue; + this->SetPotion(i, Potion_Purple); + break; + } + } break; + + case ItemId_YellowPotion: { + for (s32 i = 0; i < MAX_POTIONS; ++i) { + if (mPotions[i] != Potion_None) continue; + this->SetPotion(i, Potion_Yellow); + break; + } + } break; + + case ItemId_SandOfHours: { + mHourglassSandFrames += 3600; + } break; + + case ItemId_GoldenChimney: { + gAdventureFlags->Set(AdventureFlag_ReceivedGoldenChimney, true); + GiveShipPart(ShipPart_Chimney, ShipType_Golden); + } break; + + case ItemId_GoldenHandrail: { + gAdventureFlags->Set(AdventureFlag_ReceivedGoldenHandrail, true); + GiveShipPart(ShipPart_Handrail, ShipType_Golden); + } break; + + case ItemId_GoldenCannon: { + gAdventureFlags->Set(AdventureFlag_ReceivedGoldenCannon, true); + GiveShipPart(ShipPart_Cannon, ShipType_Golden); + } break; + + case ItemId_GoldenHull: { + gAdventureFlags->Set(AdventureFlag_ReceivedGoldenHull, true); + GiveShipPart(ShipPart_Hull, ShipType_Golden); + } break; + + case ItemId_CycloneSlate: { + SET_FLAG(mItemFlags.flags, ItemFlag_CycloneSlate); + } break; + + case ItemId_Unk_128: { + SET_FLAG(mItemFlags.flags, ItemFlag_Unk_47); + } break; + + case ItemId_Rupoor10: { + this->GiveRupees(-10, true); + } break; + + case ItemId_Rupoor50: { + this->GiveRupees(-50, true); + } break; + + case ItemId_None: break; + case ItemId_Unk_5: break; + case ItemId_Unk_16: break; + case ItemId_Unk_131: break; + case ItemId_Unk_132: break; + + default: { + if (ItemId_TREASURE_CHART_START <= id && id <= ItemId_TREASURE_CHART_END) { + SET_FLAG(mItemFlags.flags, id + ItemFlag_TREASURE_CHART_START - ItemId_TREASURE_CHART_START); + } + } break; + } + if ( + gAdventureFlags->Get(AdventureFlag_Azurine) && + gAdventureFlags->Get(AdventureFlag_Crimsonine) && + gAdventureFlags->Get(AdventureFlag_Aquanine) + ) { + gAdventureFlags->Set(AdventureFlag_Unk_128, true); + } +} + +THUMB void ItemManager::GiveEquipItem(ItemFlag item, u16 ammo) { + u16 flag = item; + SET_FLAG(mItemFlags.flags, flag); + this->GetEquipItem(item)->GiveAmmo(ammo); + if (mEquippedItem == ItemFlag_None) { + this->mEquippedItem = item; + this->mEquipLoadTimer = 1; + } +} + +THUMB void ItemManager::UnequipPotion() { + switch (mEquippedItem) { + case ItemFlag_PotionA: + case ItemFlag_PotionB: { + this->EquipPreviousItem(); + } break; + } +} + +ARM s32 ItemManager::GetMaxRupees() const { + return 9999; +} + +extern void *data_027e103c; +extern "C" s32 func_ov00_020cf374(void *param1, bool param2); +extern "C" void func_ov05_02104004(void *param1); +ARM void ItemManager::GiveRupees(s16 amount, bool param2) { + s32 newRupees = mNumRupees + amount; + if (newRupees > this->GetMaxRupees()) { + newRupees = this->GetMaxRupees(); + } else if (newRupees < 0) { + newRupees = 0; + } + + s32 currRupees = func_ov00_020cf374(data_027e103c, true); + if (param2) { + currRupees = mNumRupees; + if (currRupees != newRupees) { + func_ov05_02104004(data_027e103c); + } + } + mNumRupees = newRupees; +} + +ARM unk32 ItemManager::GetNumKeys() const { + return gMapManager->GetNumKeys(); +} + +THUMB void ItemManager::GiveKeys(u32 amount) { + s32 keys = amount + gMapManager->GetNumKeys(); + if (keys >= MAX_KEYS) keys = MAX_KEYS; + if (keys <= 0) keys = 0; + gMapManager->SetNumKeys(keys); +} + +ARM ItemFlag ItemManager::GetEquippedItem() const { + if (mForcedItem != ItemFlag_None) return mForcedItem; + return mEquippedItem; +} + +ARM bool ItemManager::SetEquippedItem(ItemFlag equipId) { + mPrevEquippedItem = mEquippedItem; + mEquippedItem = equipId; + mEquipLoadTimer = 2; + return true; +} + +ARM void ItemManager::EquipPreviousItem() { + this->SetEquippedItem(mPrevEquippedItem); +} + +THUMB void ItemManager::ForceEquipItem(ItemFlag equipId) { + for (ItemFlag i = ItemFlag_EQUIP_START; i < ItemFlag_EQUIP_END; ++i) { + if (i == equipId) continue; + (*mEquipItems)[i - ItemFlag_EQUIP_START]->UpdateInUse(0); + } + mForcedItem = equipId; + mEquipLoadTimer = 1; +} + +THUMB bool ItemManager::ClearForcedEquipItem() { + mForcedItem = ItemFlag_None; + if (mEquippedItem != ItemFlag_None) return this->SetEquippedItem(mEquippedItem); + return false; +} + +ARM void ItemManager::UpdateSwordShieldInUse() { + this->GetEquipItem(ItemFlag_OshusSword)->UpdateInUse(1); + this->GetEquipItem(ItemFlag_WoodenShield)->UpdateInUse(1); +} + +THUMB void ItemManager::UpgradeQuiver() { + if (mQuiverSize < MAX_AMMO_UPGRADE) mQuiverSize += 1; + (*mAmmo)[ItemFlag_Bow] = this->GetMaxAmmo(ItemFlag_Bow); +} + +THUMB void ItemManager::UpgradeBombBag() { + if (mBombBagSize < MAX_AMMO_UPGRADE) mBombBagSize += 1; + (*mAmmo)[ItemFlag_BombBag] = this->GetMaxAmmo(ItemFlag_BombBag); +} + +THUMB void ItemManager::UpgradeBombchuBag() { + if (mBombchuBagSize < MAX_AMMO_UPGRADE) mBombchuBagSize += 1; + (*mAmmo)[ItemFlag_BombchuBag] = this->GetMaxAmmo(ItemFlag_BombchuBag); +} + +ARM void ItemManager::func_ov00_020ae4dc(s32 param1) { + s32 newValue = mUnk_0ba + param1; + if (newValue > MAX_UNK_0BA) { + mUnk_0ba = MAX_UNK_0BA; + } else if (mUnk_0ba < -param1) { + mUnk_0ba = 0; + } else { + mUnk_0ba = newValue; + } +} + +ARM void ItemManager::SetPotion(u32 index, Potion potion) { + mPotions[index] = potion; + if (potion == Potion_None) { + RESET_FLAG(mItemFlags.flags, index + ItemFlag_PotionA); + } else { + SET_FLAG(mItemFlags.flags, index + ItemFlag_PotionA); + } +} + +ARM bool ItemManager::HasPotion(u32 index) const { + switch (mPotions[index]) { + case Potion_Red: + case Potion_Purple: + case Potion_Yellow: + return true; + + case Potion_None: + default: + return false; + } +} + +ARM bool ItemManager::HasAllPotions() const { + for (s32 i = 0; i < MAX_POTIONS; ++i) { + if (!this->HasPotion(i)) return false; + } + return true; +} + +ARM bool ItemManager::HasPurplePotion() const { + for (s32 i = 0; i < MAX_POTIONS; ++i) { + if (mPotions[i] == Potion_Purple) return true; + } + return false; +} + +extern "C" void func_020196bc(ItemModel *param1, unk32 param2); +extern "C" void func_020196fc(ItemModel *param1, unk32 param2); +THUMB void ItemManager::LoadDungeonItemModels() { + for (s32 i = 0; i < DungeonItemModelId_COUNT; ++i) { + if (mDungeonItemModels[i] == NULL) continue; + + u16 unk1, unk2; + switch (i) { + case DungeonItemModelId_RoundCrystal: + case DungeonItemModelId_SquareCrystal: + case DungeonItemModelId_TriangleCrystal: { + unk1 = data_027e0f78->mUnk_1e; + unk2 = data_027e0f78->mUnk_1c; + } break; + + default: { + unk1 = data_027e0f78->mUnk_1a; + unk2 = data_027e0f78->mUnk_18; + } break; + } + func_020196bc(mDungeonItemModels[i], unk1); + func_020196fc(mDungeonItemModels[i], unk2); + } +} + +extern unk32 data_ov00_020eec68; +extern "C" void PlaySoundEffect(void *param1, SfxId sfx); +THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) { + if (gItemManager->mMuteNextFanfare == true) { + gItemManager->mMuteNextFanfare = false; + return; + } + SfxId sfx; + switch (item) { + case ItemId_PowerGem: + case ItemId_WisdomGem: + case ItemId_CourageGem: { + sfx = SfxId_Fanfare_Gem; + } break; + + case ItemId_GoldRupee: { + sfx = SfxId_Fanfare_GoldRupee; + } break; + + case ItemId_SmallKey: + case ItemId_GreenRupee: + case ItemId_BlueRupee: + case ItemId_RedRupee: { + sfx = SfxId_Fanfare_Rupee; + } break; + + case ItemId_Rupoor10: + case ItemId_Rupoor50: { + sfx = SfxId_Fanfare_Rupoor; + } break; + + case ItemId_None: + case ItemId_HerosNewClothes: { + sfx = SfxId_Fanfare_Nothing_2; + } break; + + case ItemId_HeartContainer: { + sfx = SfxId_Fanfare_HeartContainer; + } break; + + default: { + sfx = SfxId_Fanfare_Treasure; + } break; + } + if (gItemManager->mFanfareSfx != SfxId_None) { + sfx = gItemManager->mFanfareSfx; + gItemManager->mFanfareSfx = SfxId_None; + } + PlaySoundEffect(&data_ov00_020eec68, sfx); +} + +THUMB bool ItemManager::HasShipPartPriceShown(ShipPart part, ShipType type) const { + return GET_FLAG(mShipPartPricesShown.flags, part * ShipType_COUNT + type); +} + +THUMB void ItemManager::AddShipPartPriceShown(ShipPart part, ShipType type) { + SET_FLAG(mShipPartPricesShown.flags, part * ShipType_COUNT + type); +} + +THUMB bool ItemManager::HasTreasurePriceShown(Treasure treasure) const { + return GET_FLAG(mTreasurePriceShownFlags, treasure); +} + +THUMB void ItemManager::AddTreasurePriceShown(Treasure treasure) { + SET_FLAG(mTreasurePriceShownFlags, treasure); +} diff --git a/tools/lcf.py b/tools/lcf.py index f0fc74d8..a77690d9 100644 --- a/tools/lcf.py +++ b/tools/lcf.py @@ -78,7 +78,6 @@ ov00 = Overlay(name='ov00', after='ARM9', objects=[ 'src/00_Core/Item/Item.cpp', 'asm/ov00/Item/Item.s', 'src/00_Core/Item/ItemManager.cpp', - 'asm/ov00/Item/ItemManager.s', 'src/00_Core/Player/LinkStateRoll.cpp', 'asm/ov00/Player/LinkStateRoll.s', 'src/00_Core/Player/PlayerControl.cpp', diff --git a/tools/m2ctx.py b/tools/m2ctx.py index 7bb5885a..1ddb71d7 100755 --- a/tools/m2ctx.py +++ b/tools/m2ctx.py @@ -18,7 +18,8 @@ args = parser.parse_args() CXX_FLAGS = [ '-nostdinc', '-Iinclude', - '-Ilibs/c/include' + '-Ilibs/c/include', + '-Ilibs/cpp/include' ] script_dir = Path(os.path.dirname(os.path.realpath(__file__)))