From d92f32f54109aeade1e5305b4084ba14af368dbd Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 Nov 2020 19:57:23 -0500 Subject: [PATCH] dSv_player_collect_c ok --- asm/d/com/inf/d_com_inf_game.s | 14 +++---- asm/d/d_item.s | 20 +++++----- asm/d/d_meter2.s | 8 ++-- asm/d/d_save.s | 69 ---------------------------------- asm/d/file/d_file_select.s | 10 ++--- asm/d/menu/d_menu_collect.s | 10 ++--- include/d_save.h | 6 +-- include/func_800341E8.s | 8 ++++ src/d/d_save/d_save.cpp | 63 ++++++++++++++++++++----------- 9 files changed, 84 insertions(+), 124 deletions(-) create mode 100644 include/func_800341E8.s diff --git a/asm/d/com/inf/d_com_inf_game.s b/asm/d/com/inf/d_com_inf_game.s index d6f197886b7..516e8c6ea27 100644 --- a/asm/d/com/inf/d_com_inf_game.s +++ b/asm/d/com/inf/d_com_inf_game.s @@ -4490,7 +4490,7 @@ lbl_8002EF08: /* 8002EF10 0002BE50 38 63 01 00 */ addi r3, r3, 0x100 /* 8002EF14 0002BE54 38 80 00 01 */ li r4, 1 /* 8002EF18 0002BE58 38 A0 00 00 */ li r5, 0 -/* 8002EF1C 0002BE5C 48 00 52 CD */ bl dSv_player_collect_c_NS_setCollect +/* 8002EF1C 0002BE5C 48 00 52 CD */ bl setCollect__20dSv_player_collect_cFiUc /* 8002EF20 0002BE60 48 00 00 54 */ b lbl_8002EF74 lbl_8002EF24: /* 8002EF24 0002BE64 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -4498,7 +4498,7 @@ lbl_8002EF24: /* 8002EF2C 0002BE6C 38 63 01 00 */ addi r3, r3, 0x100 /* 8002EF30 0002BE70 38 80 00 01 */ li r4, 1 /* 8002EF34 0002BE74 38 A0 00 01 */ li r5, 1 -/* 8002EF38 0002BE78 48 00 52 B1 */ bl dSv_player_collect_c_NS_setCollect +/* 8002EF38 0002BE78 48 00 52 B1 */ bl setCollect__20dSv_player_collect_cFiUc /* 8002EF3C 0002BE7C 48 00 00 38 */ b lbl_8002EF74 lbl_8002EF40: /* 8002EF40 0002BE80 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -4506,7 +4506,7 @@ lbl_8002EF40: /* 8002EF48 0002BE88 38 63 01 00 */ addi r3, r3, 0x100 /* 8002EF4C 0002BE8C 38 80 00 01 */ li r4, 1 /* 8002EF50 0002BE90 38 A0 00 02 */ li r5, 2 -/* 8002EF54 0002BE94 48 00 52 95 */ bl dSv_player_collect_c_NS_setCollect +/* 8002EF54 0002BE94 48 00 52 95 */ bl setCollect__20dSv_player_collect_cFiUc /* 8002EF58 0002BE98 48 00 00 1C */ b lbl_8002EF74 lbl_8002EF5C: /* 8002EF5C 0002BE9C 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -4514,7 +4514,7 @@ lbl_8002EF5C: /* 8002EF64 0002BEA4 38 63 01 00 */ addi r3, r3, 0x100 /* 8002EF68 0002BEA8 38 80 00 01 */ li r4, 1 /* 8002EF6C 0002BEAC 38 A0 00 03 */ li r5, 3 -/* 8002EF70 0002BEB0 48 00 52 79 */ bl dSv_player_collect_c_NS_setCollect +/* 8002EF70 0002BEB0 48 00 52 79 */ bl setCollect__20dSv_player_collect_cFiUc lbl_8002EF74: /* 8002EF74 0002BEB4 3C 60 80 40 */ lis r3, lbl_804061C0@ha /* 8002EF78 0002BEB8 38 63 61 C0 */ addi r3, r3, lbl_804061C0@l @@ -4549,7 +4549,7 @@ lbl_8002EFD0: /* 8002EFD8 0002BF18 38 63 01 00 */ addi r3, r3, 0x100 /* 8002EFDC 0002BF1C 38 80 00 02 */ li r4, 2 /* 8002EFE0 0002BF20 38 A0 00 00 */ li r5, 0 -/* 8002EFE4 0002BF24 48 00 52 05 */ bl dSv_player_collect_c_NS_setCollect +/* 8002EFE4 0002BF24 48 00 52 05 */ bl setCollect__20dSv_player_collect_cFiUc /* 8002EFE8 0002BF28 48 00 00 38 */ b lbl_8002F020 lbl_8002EFEC: /* 8002EFEC 0002BF2C 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -4557,7 +4557,7 @@ lbl_8002EFEC: /* 8002EFF4 0002BF34 38 63 01 00 */ addi r3, r3, 0x100 /* 8002EFF8 0002BF38 38 80 00 02 */ li r4, 2 /* 8002EFFC 0002BF3C 38 A0 00 01 */ li r5, 1 -/* 8002F000 0002BF40 48 00 51 E9 */ bl dSv_player_collect_c_NS_setCollect +/* 8002F000 0002BF40 48 00 51 E9 */ bl setCollect__20dSv_player_collect_cFiUc /* 8002F004 0002BF44 48 00 00 1C */ b lbl_8002F020 lbl_8002F008: /* 8002F008 0002BF48 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -4565,7 +4565,7 @@ lbl_8002F008: /* 8002F010 0002BF50 38 63 01 00 */ addi r3, r3, 0x100 /* 8002F014 0002BF54 38 80 00 02 */ li r4, 2 /* 8002F018 0002BF58 38 A0 00 02 */ li r5, 2 -/* 8002F01C 0002BF5C 48 00 51 CD */ bl dSv_player_collect_c_NS_setCollect +/* 8002F01C 0002BF5C 48 00 51 CD */ bl setCollect__20dSv_player_collect_cFiUc lbl_8002F020: /* 8002F020 0002BF60 3C 60 80 40 */ lis r3, lbl_804061C0@ha /* 8002F024 0002BF64 38 63 61 C0 */ addi r3, r3, lbl_804061C0@l diff --git a/asm/d/d_item.s b/asm/d/d_item.s index 23f021e942a..6fdb2c761b1 100644 --- a/asm/d/d_item.s +++ b/asm/d/d_item.s @@ -386,7 +386,7 @@ lbl_80097F18: /* 80098464 000953A4 38 63 01 00 */ addi r3, r3, 0x100 /* 80098468 000953A8 38 80 00 01 */ li r4, 1 /* 8009846C 000953AC 38 A0 00 00 */ li r5, 0 -/* 80098470 000953B0 4B F9 BD 79 */ bl dSv_player_collect_c_NS_setCollect +/* 80098470 000953B0 4B F9 BD 79 */ bl setCollect__20dSv_player_collect_cFiUc /* 80098474 000953B4 38 60 00 28 */ li r3, 0x28 /* 80098478 000953B8 4B F9 6A 49 */ bl dComIfGs_setSelectEquipSword /* 8009847C 000953BC 80 01 00 14 */ lwz r0, 0x14(r1) @@ -401,7 +401,7 @@ lbl_80097F18: /* 800984A0 000953E0 38 63 01 00 */ addi r3, r3, 0x100 /* 800984A4 000953E4 38 80 00 01 */ li r4, 1 /* 800984A8 000953E8 38 A0 00 01 */ li r5, 1 -/* 800984AC 000953EC 4B F9 BD 3D */ bl dSv_player_collect_c_NS_setCollect +/* 800984AC 000953EC 4B F9 BD 3D */ bl setCollect__20dSv_player_collect_cFiUc /* 800984B0 000953F0 38 60 00 29 */ li r3, 0x29 /* 800984B4 000953F4 4B F9 6A 0D */ bl dComIfGs_setSelectEquipSword /* 800984B8 000953F8 80 01 00 14 */ lwz r0, 0x14(r1) @@ -416,7 +416,7 @@ lbl_80097F18: /* 800984DC 0009541C 38 63 01 00 */ addi r3, r3, 0x100 /* 800984E0 00095420 38 80 00 02 */ li r4, 2 /* 800984E4 00095424 38 A0 00 00 */ li r5, 0 -/* 800984E8 00095428 4B F9 BD 01 */ bl dSv_player_collect_c_NS_setCollect +/* 800984E8 00095428 4B F9 BD 01 */ bl setCollect__20dSv_player_collect_cFiUc /* 800984EC 0009542C 38 60 00 2A */ li r3, 0x2a /* 800984F0 00095430 4B F9 6A A5 */ bl dComIfGs_setSelectEquipShield /* 800984F4 00095434 80 01 00 14 */ lwz r0, 0x14(r1) @@ -455,7 +455,7 @@ lbl_80097F18: /* 80098578 000954B8 38 63 01 00 */ addi r3, r3, 0x100 /* 8009857C 000954BC 38 80 00 00 */ li r4, 0 /* 80098580 000954C0 38 A0 00 00 */ li r5, 0 -/* 80098584 000954C4 4B F9 BC 65 */ bl dSv_player_collect_c_NS_setCollect +/* 80098584 000954C4 4B F9 BC 65 */ bl setCollect__20dSv_player_collect_cFiUc /* 80098588 000954C8 38 60 00 2F */ li r3, 0x2f /* 8009858C 000954CC 4B F9 69 25 */ bl dComIfGs_setSelectEquipClothes /* 80098590 000954D0 80 01 00 14 */ lwz r0, 0x14(r1) @@ -545,7 +545,7 @@ lbl_80098680: /* 800986D8 00095618 38 63 01 00 */ addi r3, r3, 0x100 /* 800986DC 0009561C 38 80 00 01 */ li r4, 1 /* 800986E0 00095620 38 A0 00 02 */ li r5, 2 -/* 800986E4 00095624 4B F9 BB 05 */ bl dSv_player_collect_c_NS_setCollect +/* 800986E4 00095624 4B F9 BB 05 */ bl setCollect__20dSv_player_collect_cFiUc /* 800986E8 00095628 38 60 00 3F */ li r3, 0x3f /* 800986EC 0009562C 4B F9 67 D5 */ bl dComIfGs_setSelectEquipSword /* 800986F0 00095630 88 AD 87 E4 */ lbz r5, lbl_80450D64-_SDA_BASE_(r13) @@ -698,7 +698,7 @@ lbl_80098680: /* 8009893C 0009587C 38 63 01 00 */ addi r3, r3, 0x100 /* 80098940 00095880 38 80 00 01 */ li r4, 1 /* 80098944 00095884 38 A0 00 03 */ li r5, 3 -/* 80098948 00095888 4B F9 B8 A1 */ bl dSv_player_collect_c_NS_setCollect +/* 80098948 00095888 4B F9 B8 A1 */ bl setCollect__20dSv_player_collect_cFiUc /* 8009894C 0009588C 38 60 00 49 */ li r3, 0x49 /* 80098950 00095890 38 80 00 00 */ li r4, 0 /* 80098954 00095894 48 18 5B DD */ bl dMeter2Info_setSword @@ -1857,7 +1857,7 @@ lbl_80098F68: /* 80099B3C 00096A7C 38 63 01 00 */ addi r3, r3, 0x100 /* 80099B40 00096A80 38 80 00 01 */ li r4, 1 /* 80099B44 00096A84 38 A0 00 00 */ li r5, 0 -/* 80099B48 00096A88 4B F9 A6 C1 */ bl dSv_player_collect_c_NS_isCollect +/* 80099B48 00096A88 4B F9 A6 C1 */ bl isCollect__20dSv_player_collect_cCFiUc /* 80099B4C 00096A8C 80 01 00 14 */ lwz r0, 0x14(r1) /* 80099B50 00096A90 7C 08 03 A6 */ mtlr r0 /* 80099B54 00096A94 38 21 00 10 */ addi r1, r1, 0x10 @@ -1870,7 +1870,7 @@ lbl_80098F68: /* 80099B70 00096AB0 38 63 01 00 */ addi r3, r3, 0x100 /* 80099B74 00096AB4 38 80 00 01 */ li r4, 1 /* 80099B78 00096AB8 38 A0 00 01 */ li r5, 1 -/* 80099B7C 00096ABC 4B F9 A6 8D */ bl dSv_player_collect_c_NS_isCollect +/* 80099B7C 00096ABC 4B F9 A6 8D */ bl isCollect__20dSv_player_collect_cCFiUc /* 80099B80 00096AC0 80 01 00 14 */ lwz r0, 0x14(r1) /* 80099B84 00096AC4 7C 08 03 A6 */ mtlr r0 /* 80099B88 00096AC8 38 21 00 10 */ addi r1, r1, 0x10 @@ -1948,7 +1948,7 @@ lbl_80098F68: /* 80099CA8 00096BE8 38 63 01 00 */ addi r3, r3, 0x100 /* 80099CAC 00096BEC 38 80 00 00 */ li r4, 0 /* 80099CB0 00096BF0 38 A0 00 00 */ li r5, 0 -/* 80099CB4 00096BF4 4B F9 A5 55 */ bl dSv_player_collect_c_NS_isCollect +/* 80099CB4 00096BF4 4B F9 A5 55 */ bl isCollect__20dSv_player_collect_cCFiUc /* 80099CB8 00096BF8 80 01 00 14 */ lwz r0, 0x14(r1) /* 80099CBC 00096BFC 7C 08 03 A6 */ mtlr r0 /* 80099CC0 00096C00 38 21 00 10 */ addi r1, r1, 0x10 @@ -2204,7 +2204,7 @@ lbl_80098F68: /* 8009A0A8 00096FE8 38 63 01 00 */ addi r3, r3, 0x100 /* 8009A0AC 00096FEC 38 80 00 01 */ li r4, 1 /* 8009A0B0 00096FF0 38 A0 00 03 */ li r5, 3 -/* 8009A0B4 00096FF4 4B F9 A1 55 */ bl dSv_player_collect_c_NS_isCollect +/* 8009A0B4 00096FF4 4B F9 A1 55 */ bl isCollect__20dSv_player_collect_cCFiUc /* 8009A0B8 00096FF8 80 01 00 14 */ lwz r0, 0x14(r1) /* 8009A0BC 00096FFC 7C 08 03 A6 */ mtlr r0 /* 8009A0C0 00097000 38 21 00 10 */ addi r1, r1, 0x10 diff --git a/asm/d/d_meter2.s b/asm/d/d_meter2.s index 7cbcc3628f4..1e91a10d9d3 100644 --- a/asm/d/d_meter2.s +++ b/asm/d/d_meter2.s @@ -501,7 +501,7 @@ dMeter2_c_NS__execute: /* 8021F154 0021C094 3B C3 01 00 */ addi r30, r3, 0x100 /* 8021F158 0021C098 7F C3 F3 78 */ mr r3, r30 /* 8021F15C 0021C09C 38 80 00 00 */ li r4, 0 -/* 8021F160 0021C0A0 4B E1 51 31 */ bl dSv_player_collect_c_NS_isCollectMirror +/* 8021F160 0021C0A0 4B E1 51 31 */ bl isCollectMirror__20dSv_player_collect_cCFUc /* 8021F164 0021C0A4 2C 03 00 00 */ cmpwi r3, 0 /* 8021F168 0021C0A8 40 82 00 2C */ bne lbl_8021F194 /* 8021F16C 0021C0AC 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -513,11 +513,11 @@ dMeter2_c_NS__execute: /* 8021F184 0021C0C4 41 82 00 10 */ beq lbl_8021F194 /* 8021F188 0021C0C8 7F C3 F3 78 */ mr r3, r30 /* 8021F18C 0021C0CC 38 80 00 00 */ li r4, 0 -/* 8021F190 0021C0D0 4B E1 50 E1 */ bl dSv_player_collect_c_NS_onCollectMirror +/* 8021F190 0021C0D0 4B E1 50 E1 */ bl onCollectMirror__20dSv_player_collect_cFUc lbl_8021F194: /* 8021F194 0021C0D4 7F C3 F3 78 */ mr r3, r30 /* 8021F198 0021C0D8 38 80 00 03 */ li r4, 3 -/* 8021F19C 0021C0DC 4B E1 50 B1 */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 8021F19C 0021C0DC 4B E1 50 B1 */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 8021F1A0 0021C0E0 2C 03 00 00 */ cmpwi r3, 0 /* 8021F1A4 0021C0E4 40 82 00 2C */ bne lbl_8021F1D0 /* 8021F1A8 0021C0E8 3C 60 80 40 */ lis r3, lbl_804061C0@ha @@ -529,7 +529,7 @@ lbl_8021F194: /* 8021F1C0 0021C100 41 82 00 10 */ beq lbl_8021F1D0 /* 8021F1C4 0021C104 7F C3 F3 78 */ mr r3, r30 /* 8021F1C8 0021C108 38 80 00 03 */ li r4, 3 -/* 8021F1CC 0021C10C 4B E1 50 61 */ bl dSv_player_collect_c_NS_onCollectCrystal +/* 8021F1CC 0021C10C 4B E1 50 61 */ bl onCollectCrystal__20dSv_player_collect_cFUc lbl_8021F1D0: /* 8021F1D0 0021C110 7F A3 EB 78 */ mr r3, r29 /* 8021F1D4 0021C114 48 00 05 DD */ bl dMeter2_c_NS_checkStatus diff --git a/asm/d/d_save.s b/asm/d/d_save.s index 880c7d81761..79ee7b9f2cd 100644 --- a/asm/d/d_save.s +++ b/asm/d/d_save.s @@ -2,75 +2,6 @@ .section .text, "ax" # 80032918 -.global dSv_player_collect_c_NS_setCollect -dSv_player_collect_c_NS_setCollect: -/* 800341E8 00031128 7C E3 20 AE */ lbzx r7, r3, r4 -/* 800341EC 0003112C 38 C0 00 01 */ li r6, 1 -/* 800341F0 00031130 54 A0 06 3E */ clrlwi r0, r5, 0x18 -/* 800341F4 00031134 7C C0 00 30 */ slw r0, r6, r0 -/* 800341F8 00031138 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 800341FC 0003113C 7C E0 03 78 */ or r0, r7, r0 -/* 80034200 00031140 7C 03 21 AE */ stbx r0, r3, r4 -/* 80034204 00031144 4E 80 00 20 */ blr - -.global dSv_player_collect_c_NS_isCollect -dSv_player_collect_c_NS_isCollect: -/* 80034208 00031148 38 C0 00 01 */ li r6, 1 -/* 8003420C 0003114C 54 A0 06 3E */ clrlwi r0, r5, 0x18 -/* 80034210 00031150 7C C0 00 30 */ slw r0, r6, r0 -/* 80034214 00031154 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 80034218 00031158 7C 03 20 AE */ lbzx r0, r3, r4 -/* 8003421C 0003115C 7C A3 00 38 */ and r3, r5, r0 -/* 80034220 00031160 30 03 FF FF */ addic r0, r3, -1 -/* 80034224 00031164 7C 60 19 10 */ subfe r3, r0, r3 -/* 80034228 00031168 4E 80 00 20 */ blr - -.global dSv_player_collect_c_NS_onCollectCrystal -dSv_player_collect_c_NS_onCollectCrystal: -/* 8003422C 0003116C 88 C3 00 09 */ lbz r6, 9(r3) -/* 80034230 00031170 38 A0 00 01 */ li r5, 1 -/* 80034234 00031174 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 80034238 00031178 7C A0 00 30 */ slw r0, r5, r0 -/* 8003423C 0003117C 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 80034240 00031180 7C C0 03 78 */ or r0, r6, r0 -/* 80034244 00031184 98 03 00 09 */ stb r0, 9(r3) -/* 80034248 00031188 4E 80 00 20 */ blr - -.global dSv_player_collect_c_NS_isCollectCrystal -dSv_player_collect_c_NS_isCollectCrystal: -/* 8003424C 0003118C 88 A3 00 09 */ lbz r5, 9(r3) -/* 80034250 00031190 38 60 00 01 */ li r3, 1 -/* 80034254 00031194 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 80034258 00031198 7C 60 00 30 */ slw r0, r3, r0 -/* 8003425C 0003119C 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 80034260 000311A0 7C A3 00 38 */ and r3, r5, r0 -/* 80034264 000311A4 30 03 FF FF */ addic r0, r3, -1 -/* 80034268 000311A8 7C 60 19 10 */ subfe r3, r0, r3 -/* 8003426C 000311AC 4E 80 00 20 */ blr - -.global dSv_player_collect_c_NS_onCollectMirror -dSv_player_collect_c_NS_onCollectMirror: -/* 80034270 000311B0 88 C3 00 0A */ lbz r6, 0xa(r3) -/* 80034274 000311B4 38 A0 00 01 */ li r5, 1 -/* 80034278 000311B8 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 8003427C 000311BC 7C A0 00 30 */ slw r0, r5, r0 -/* 80034280 000311C0 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 80034284 000311C4 7C C0 03 78 */ or r0, r6, r0 -/* 80034288 000311C8 98 03 00 0A */ stb r0, 0xa(r3) -/* 8003428C 000311CC 4E 80 00 20 */ blr - -.global dSv_player_collect_c_NS_isCollectMirror -dSv_player_collect_c_NS_isCollectMirror: -/* 80034290 000311D0 88 A3 00 0A */ lbz r5, 0xa(r3) -/* 80034294 000311D4 38 60 00 01 */ li r3, 1 -/* 80034298 000311D8 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 8003429C 000311DC 7C 60 00 30 */ slw r0, r3, r0 -/* 800342A0 000311E0 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 800342A4 000311E4 7C A3 00 38 */ and r3, r5, r0 -/* 800342A8 000311E8 30 03 FF FF */ addic r0, r3, -1 -/* 800342AC 000311EC 7C 60 19 10 */ subfe r3, r0, r3 -/* 800342B0 000311F0 4E 80 00 20 */ blr - .global dSv_player_wolf_c_NS_init dSv_player_wolf_c_NS_init: /* 800342B4 000311F4 38 A0 00 00 */ li r5, 0 diff --git a/asm/d/file/d_file_select.s b/asm/d/file/d_file_select.s index 3a2162c2761..de82e4be047 100644 --- a/asm/d/file/d_file_select.s +++ b/asm/d/file/d_file_select.s @@ -3171,7 +3171,7 @@ lbl_801863AC: lbl_801863B8: /* 801863B8 001832F8 7F 83 E3 78 */ mr r3, r28 /* 801863BC 001832FC 57 64 06 3E */ clrlwi r4, r27, 0x18 -/* 801863C0 00183300 4B EA DE D1 */ bl dSv_player_collect_c_NS_isCollectMirror +/* 801863C0 00183300 4B EA DE D1 */ bl isCollectMirror__20dSv_player_collect_cCFUc /* 801863C4 00183304 2C 03 00 00 */ cmpwi r3, 0 /* 801863C8 00183308 41 82 00 14 */ beq lbl_801863DC /* 801863CC 0018330C 3B 7B 00 01 */ addi r27, r27, 1 @@ -3185,7 +3185,7 @@ lbl_801863DC: lbl_801863E8: /* 801863E8 00183328 7F 83 E3 78 */ mr r3, r28 /* 801863EC 0018332C 57 44 06 3E */ clrlwi r4, r26, 0x18 -/* 801863F0 00183330 4B EA DE 5D */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 801863F0 00183330 4B EA DE 5D */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 801863F4 00183334 2C 03 00 00 */ cmpwi r3, 0 /* 801863F8 00183338 41 82 00 14 */ beq lbl_8018640C /* 801863FC 0018333C 3B 5A 00 01 */ addi r26, r26, 1 @@ -3205,7 +3205,7 @@ lbl_8018641C: /* 8018642C 0018336C 41 82 00 18 */ beq lbl_80186444 /* 80186430 00183370 38 7F 01 00 */ addi r3, r31, 0x100 /* 80186434 00183374 38 80 00 00 */ li r4, 0 -/* 80186438 00183378 4B EA DE 59 */ bl dSv_player_collect_c_NS_isCollectMirror +/* 80186438 00183378 4B EA DE 59 */ bl isCollectMirror__20dSv_player_collect_cCFUc /* 8018643C 0018337C 2C 03 00 00 */ cmpwi r3, 0 /* 80186440 00183380 41 82 00 2C */ beq lbl_8018646C lbl_80186444: @@ -3216,7 +3216,7 @@ lbl_80186444: /* 80186454 00183394 41 82 00 28 */ beq lbl_8018647C /* 80186458 00183398 38 7F 01 00 */ addi r3, r31, 0x100 /* 8018645C 0018339C 38 80 00 03 */ li r4, 3 -/* 80186460 001833A0 4B EA DD ED */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 80186460 001833A0 4B EA DD ED */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 80186464 001833A4 2C 03 00 00 */ cmpwi r3, 0 /* 80186468 001833A8 40 82 00 14 */ bne lbl_8018647C lbl_8018646C: @@ -3229,7 +3229,7 @@ lbl_8018647C: /* 80186480 001833C0 48 00 A0 21 */ bl dFile_select3D_c_NS_freeHeap /* 80186484 001833C4 38 7F 01 00 */ addi r3, r31, 0x100 /* 80186488 001833C8 38 80 00 03 */ li r4, 3 -/* 8018648C 001833CC 4B EA DD C1 */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 8018648C 001833CC 4B EA DD C1 */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 80186490 001833D0 2C 03 00 00 */ cmpwi r3, 0 /* 80186494 001833D4 40 82 00 0C */ bne lbl_801864A0 /* 80186498 001833D8 57 A0 06 3F */ clrlwi. r0, r29, 0x18 diff --git a/asm/d/menu/d_menu_collect.s b/asm/d/menu/d_menu_collect.s index 5799b45dc6a..abd7cae7c92 100644 --- a/asm/d/menu/d_menu_collect.s +++ b/asm/d/menu/d_menu_collect.s @@ -8232,7 +8232,7 @@ dMenu_Collect3D_c_NS_getCrystalNum: lbl_801B745C: /* 801B745C 001B439C 7F E3 FB 78 */ mr r3, r31 /* 801B7460 001B43A0 57 A4 06 3E */ clrlwi r4, r29, 0x18 -/* 801B7464 001B43A4 4B E7 CD E9 */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 801B7464 001B43A4 4B E7 CD E9 */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 801B7468 001B43A8 2C 03 00 00 */ cmpwi r3, 0 /* 801B746C 001B43AC 41 82 00 14 */ beq lbl_801B7480 /* 801B7470 001B43B0 3B BD 00 01 */ addi r29, r29, 1 @@ -8263,7 +8263,7 @@ dMenu_Collect3D_c_NS_getMirrorNum: lbl_801B74C4: /* 801B74C4 001B4404 7F E3 FB 78 */ mr r3, r31 /* 801B74C8 001B4408 57 A4 06 3E */ clrlwi r4, r29, 0x18 -/* 801B74CC 001B440C 4B E7 CD C5 */ bl dSv_player_collect_c_NS_isCollectMirror +/* 801B74CC 001B440C 4B E7 CD C5 */ bl isCollectMirror__20dSv_player_collect_cCFUc /* 801B74D0 001B4410 2C 03 00 00 */ cmpwi r3, 0 /* 801B74D4 001B4414 41 82 00 14 */ beq lbl_801B74E8 /* 801B74D8 001B4418 3B BD 00 01 */ addi r29, r29, 1 @@ -8304,7 +8304,7 @@ lbl_801B752C: /* 801B7550 001B4490 38 63 61 C0 */ addi r3, r3, lbl_804061C0@l /* 801B7554 001B4494 38 63 01 00 */ addi r3, r3, 0x100 /* 801B7558 001B4498 38 80 00 00 */ li r4, 0 -/* 801B755C 001B449C 4B E7 CD 35 */ bl dSv_player_collect_c_NS_isCollectMirror +/* 801B755C 001B449C 4B E7 CD 35 */ bl isCollectMirror__20dSv_player_collect_cCFUc /* 801B7560 001B44A0 2C 03 00 00 */ cmpwi r3, 0 /* 801B7564 001B44A4 41 82 00 34 */ beq lbl_801B7598 lbl_801B7568: @@ -8317,7 +8317,7 @@ lbl_801B7568: /* 801B7580 001B44C0 38 63 61 C0 */ addi r3, r3, lbl_804061C0@l /* 801B7584 001B44C4 38 63 01 00 */ addi r3, r3, 0x100 /* 801B7588 001B44C8 38 80 00 03 */ li r4, 3 -/* 801B758C 001B44CC 4B E7 CC C1 */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 801B758C 001B44CC 4B E7 CC C1 */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 801B7590 001B44D0 2C 03 00 00 */ cmpwi r3, 0 /* 801B7594 001B44D4 40 82 00 0C */ bne lbl_801B75A0 lbl_801B7598: @@ -8328,7 +8328,7 @@ lbl_801B75A0: /* 801B75A4 001B44E4 38 63 61 C0 */ addi r3, r3, lbl_804061C0@l /* 801B75A8 001B44E8 38 63 01 00 */ addi r3, r3, 0x100 /* 801B75AC 001B44EC 38 80 00 03 */ li r4, 3 -/* 801B75B0 001B44F0 4B E7 CC 9D */ bl dSv_player_collect_c_NS_isCollectCrystal +/* 801B75B0 001B44F0 4B E7 CC 9D */ bl isCollectCrystal__20dSv_player_collect_cCFUc /* 801B75B4 001B44F4 2C 03 00 00 */ cmpwi r3, 0 /* 801B75B8 001B44F8 40 82 00 10 */ bne lbl_801B75C8 /* 801B75BC 001B44FC 4B FF FE E1 */ bl dMenu_Collect3D_c_NS_getMirrorNum diff --git a/include/d_save.h b/include/d_save.h index 7a0284814d0..2a4be32ae3f 100644 --- a/include/d_save.h +++ b/include/d_save.h @@ -292,11 +292,11 @@ class dSv_player_collect_c { public: void init(void); void setCollect(int, u8); - u8 isCollect(int, u8) const; + bool isCollect(int, u8) const; void onCollectCrystal(u8); - u8 isCollectCrystal(u8) const; + bool isCollectCrystal(u8) const; void onCollectMirror(u8); - u8 isCollectMirror(u8) const; + bool isCollectMirror(u8) const; private: u8 unk0[8]; diff --git a/include/func_800341E8.s b/include/func_800341E8.s new file mode 100644 index 00000000000..51b52e629d6 --- /dev/null +++ b/include/func_800341E8.s @@ -0,0 +1,8 @@ +/* 800341E8 00031128 7C E3 20 AE */ lbzx r7, r3, r4 +/* 800341EC 0003112C 38 C0 00 01 */ li r6, 1 +/* 800341F0 00031130 54 A0 06 3E */ clrlwi r0, r5, 0x18 +/* 800341F4 00031134 7C C0 00 30 */ slw r0, r6, r0 +/* 800341F8 00031138 54 00 06 3E */ clrlwi r0, r0, 0x18 +/* 800341FC 0003113C 7C E0 03 78 */ or r0, r7, r0 +/* 80034200 00031140 7C 03 21 AE */ stbx r0, r3, r4 +/* 80034204 00031144 4E 80 00 20 */ blr \ No newline at end of file diff --git a/src/d/d_save/d_save.cpp b/src/d/d_save/d_save.cpp index 8f1a2693aba..1c71c28e6ed 100644 --- a/src/d/d_save/d_save.cpp +++ b/src/d/d_save/d_save.cpp @@ -629,7 +629,6 @@ void dSv_player_item_max_c::setBombNum(u8 bomb_id,u8 bomb_max) { // this is close, the isFirstBit keeps screwing everything up :( // u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { -// u8 uVar2; // u8 iVar3; // iVar3 = 0x1; @@ -638,12 +637,11 @@ void dSv_player_item_max_c::setBombNum(u8 bomb_id,u8 bomb_max) { // } // switch (param_1) { -// case WATER_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); break; -// case REGULAR_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); break; -// case BOMBLINGS: return (u8)(this->unk_ammo_max[0x2] * iVar3); break; -// default: uVar2 = 0; +// case WATER_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); +// case REGULAR_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); +// case BOMBLINGS: return (u8)(this->unk_ammo_max[0x2] * iVar3); +// default: return 0; // } -// return uVar2; // } asm u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { @@ -651,22 +649,45 @@ asm u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { #include "func_800340F8.s" } -// This is a match but the linker refuses to find it's reference. Thank u metrowerks -// void dSv_player_collect_c::init(void) { +void dSv_player_collect_c::init(void) { -// for (int i = 0; i < 8; i++) { -// this->unk0[i] = 0; -// } + for (int i = 0; i < 8; i++) { + this->unk0[i] = 0; + } -// this->unk8 = 0; -// this->crystal = 0; -// this->mirror = 0; -// this->unk11 = 0xFF; -// this->poe_count = 0; -// } - -asm void dSv_player_collect_c::init(void) { - nofralloc - #include "func_800341AC.s" + this->unk8 = 0; + this->crystal = 0; + this->mirror = 0; + this->unk11 = 0xFF; + this->poe_count = 0; } +// very close +// void dSv_player_collect_c::setCollect(int param_1, u8 param_2) { +// this->unk0[param_1] = this->unk0[param_1] | (u8)(1 << param_2); +// } + +asm void dSv_player_collect_c::setCollect(int param_1, u8 param_2) { + nofralloc + #include "func_800341E8.s" +} + +bool dSv_player_collect_c::isCollect(int param_1, u8 param_2) const { + return this->unk0[param_1] & (u8)(1 << param_2) ? true : false; +} + +void dSv_player_collect_c::onCollectCrystal(u8 param_1) { + this->crystal = this->crystal | (u8)(1 << param_1); +} + +bool dSv_player_collect_c::isCollectCrystal(u8 param_1) const { + return this->crystal & (u8)(1 << param_1) ? true : false; +} + +void dSv_player_collect_c::onCollectMirror(u8 param_1) { + this->mirror = this->mirror | (u8)(1 << param_1); +} + +bool dSv_player_collect_c::isCollectMirror(u8 param_1) const { + return this->mirror & (u8)(1 << param_1) ? true : false; +} \ No newline at end of file