diff --git a/include/d/d_com/d_com_inf_game/asm/func_8002E4CC.s b/include/d/d_com/d_com_inf_game/asm/func_8002E4CC.s deleted file mode 100644 index 2d4e26840d..0000000000 --- a/include/d/d_com/d_com_inf_game/asm/func_8002E4CC.s +++ /dev/null @@ -1,64 +0,0 @@ -/* 8002E4CC 0002B40C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8002E4D0 0002B410 7C 08 02 A6 */ mflr r0 -/* 8002E4D4 0002B414 90 01 00 24 */ stw r0, 0x24(r1) -/* 8002E4D8 0002B418 39 61 00 20 */ addi r11, r1, 0x20 -/* 8002E4DC 0002B41C 48 33 3C F9 */ bl _savegpr_27 -/* 8002E4E0 0002B420 7C 7E 1B 78 */ mr r30, r3 -/* 8002E4E4 0002B424 3B E0 00 00 */ li r31, 0 -/* 8002E4E8 0002B428 3B 60 00 00 */ li r27, 0 -/* 8002E4EC 0002B42C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002E4F0 0002B430 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002E4F4 0002B434 3B 83 00 9C */ addi r28, r3, 0x9c -/* 8002E4F8 0002B438 57 DD 06 3E */ clrlwi r29, r30, 0x18 -lbl_8002E4FC: -/* 8002E4FC 0002B43C 7F 83 E3 78 */ mr r3, r28 -/* 8002E500 0002B440 7F 64 DB 78 */ mr r4, r27 -/* 8002E504 0002B444 38 A0 00 01 */ li r5, 1 -/* 8002E508 0002B448 48 00 4B 29 */ bl getItem__17dSv_player_item_cCFib -/* 8002E50C 0002B44C 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8002E510 0002B450 7C 1D 00 40 */ cmplw r29, r0 -/* 8002E514 0002B454 40 82 00 10 */ bne lbl_8002E524 -/* 8002E518 0002B458 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 8002E51C 0002B45C 38 03 00 01 */ addi r0, r3, 1 -/* 8002E520 0002B460 54 1F 06 3E */ clrlwi r31, r0, 0x18 -lbl_8002E524: -/* 8002E524 0002B464 3B 7B 00 01 */ addi r27, r27, 1 -/* 8002E528 0002B468 2C 1B 00 3C */ cmpwi r27, 0x3c -/* 8002E52C 0002B46C 41 80 FF D0 */ blt lbl_8002E4FC -/* 8002E530 0002B470 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002E534 0002B474 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002E538 0002B478 88 63 00 13 */ lbz r3, 0x13(r3) -/* 8002E53C 0002B47C 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 8002E540 0002B480 7C 00 18 40 */ cmplw r0, r3 -/* 8002E544 0002B484 40 82 00 10 */ bne lbl_8002E554 -/* 8002E548 0002B488 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 8002E54C 0002B48C 38 03 00 01 */ addi r0, r3, 1 -/* 8002E550 0002B490 54 1F 06 3E */ clrlwi r31, r0, 0x18 -lbl_8002E554: -/* 8002E554 0002B494 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002E558 0002B498 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002E55C 0002B49C 88 63 00 14 */ lbz r3, 0x14(r3) -/* 8002E560 0002B4A0 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 8002E564 0002B4A4 7C 00 18 40 */ cmplw r0, r3 -/* 8002E568 0002B4A8 40 82 00 10 */ bne lbl_8002E578 -/* 8002E56C 0002B4AC 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 8002E570 0002B4B0 38 03 00 01 */ addi r0, r3, 1 -/* 8002E574 0002B4B4 54 1F 06 3E */ clrlwi r31, r0, 0x18 -lbl_8002E578: -/* 8002E578 0002B4B8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002E57C 0002B4BC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002E580 0002B4C0 88 63 00 15 */ lbz r3, 0x15(r3) -/* 8002E584 0002B4C4 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 8002E588 0002B4C8 7C 00 18 40 */ cmplw r0, r3 -/* 8002E58C 0002B4CC 40 82 00 10 */ bne lbl_8002E59C -/* 8002E590 0002B4D0 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 8002E594 0002B4D4 38 03 00 01 */ addi r0, r3, 1 -/* 8002E598 0002B4D8 54 1F 06 3E */ clrlwi r31, r0, 0x18 -lbl_8002E59C: -/* 8002E59C 0002B4DC 7F E3 FB 78 */ mr r3, r31 -/* 8002E5A0 0002B4E0 39 61 00 20 */ addi r11, r1, 0x20 -/* 8002E5A4 0002B4E4 48 33 3C 7D */ bl _restgpr_27 -/* 8002E5A8 0002B4E8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8002E5AC 0002B4EC 7C 08 03 A6 */ mtlr r0 -/* 8002E5B0 0002B4F0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8002E5B4 0002B4F4 4E 80 00 20 */ blr diff --git a/include/d/d_com/d_com_inf_game/asm/func_8002EDE0.s b/include/d/d_com/d_com_inf_game/asm/func_8002EDE0.s deleted file mode 100644 index 7ca00604c1..0000000000 --- a/include/d/d_com/d_com_inf_game/asm/func_8002EDE0.s +++ /dev/null @@ -1,35 +0,0 @@ -/* 8002EDE0 0002BD20 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8002EDE4 0002BD24 7C 08 02 A6 */ mflr r0 -/* 8002EDE8 0002BD28 90 01 00 14 */ stw r0, 0x14(r1) -/* 8002EDEC 0002BD2C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8002EDF0 0002BD30 93 C1 00 08 */ stw r30, 8(r1) -/* 8002EDF4 0002BD34 3B C0 00 00 */ li r30, 0 -/* 8002EDF8 0002BD38 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002EDFC 0002BD3C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002EE00 0002BD40 3B E3 01 14 */ addi r31, r3, 0x114 -lbl_8002EE04: -/* 8002EE04 0002BD44 7F E3 FB 78 */ mr r3, r31 -/* 8002EE08 0002BD48 57 C4 06 3E */ clrlwi r4, r30, 0x18 -/* 8002EE0C 0002BD4C 48 00 55 91 */ bl isLightDropGetFlag__16dSv_light_drop_cCFUc -/* 8002EE10 0002BD50 2C 03 00 00 */ cmpwi r3, 0 -/* 8002EE14 0002BD54 41 82 00 24 */ beq lbl_8002EE38 -/* 8002EE18 0002BD58 7F E3 FB 78 */ mr r3, r31 -/* 8002EE1C 0002BD5C 57 C4 06 3E */ clrlwi r4, r30, 0x18 -/* 8002EE20 0002BD60 48 00 55 21 */ bl getLightDropNum__16dSv_light_drop_cCFUc -/* 8002EE24 0002BD64 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8002EE28 0002BD68 28 00 00 10 */ cmplwi r0, 0x10 -/* 8002EE2C 0002BD6C 40 80 00 0C */ bge lbl_8002EE38 -/* 8002EE30 0002BD70 38 60 00 01 */ li r3, 1 -/* 8002EE34 0002BD74 48 00 00 14 */ b lbl_8002EE48 -lbl_8002EE38: -/* 8002EE38 0002BD78 3B DE 00 01 */ addi r30, r30, 1 -/* 8002EE3C 0002BD7C 2C 1E 00 03 */ cmpwi r30, 3 -/* 8002EE40 0002BD80 41 80 FF C4 */ blt lbl_8002EE04 -/* 8002EE44 0002BD84 38 60 00 00 */ li r3, 0 -lbl_8002EE48: -/* 8002EE48 0002BD88 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8002EE4C 0002BD8C 83 C1 00 08 */ lwz r30, 8(r1) -/* 8002EE50 0002BD90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8002EE54 0002BD94 7C 08 03 A6 */ mtlr r0 -/* 8002EE58 0002BD98 38 21 00 10 */ addi r1, r1, 0x10 -/* 8002EE5C 0002BD9C 4E 80 00 20 */ blr diff --git a/include/d/d_com/d_com_inf_game/asm/func_8002F2AC.s b/include/d/d_com/d_com_inf_game/asm/func_8002F2AC.s deleted file mode 100644 index dd6295659d..0000000000 --- a/include/d/d_com/d_com_inf_game/asm/func_8002F2AC.s +++ /dev/null @@ -1,4 +0,0 @@ -/* 8002F2AC 0002C1EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002F2B0 0002C1F0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002F2B4 0002C1F4 38 63 00 8E */ addi r3, r3, 0x8e -/* 8002F2B8 0002C1F8 4E 80 00 20 */ blr diff --git a/include/d/d_com/d_com_inf_game/asm/func_8002F2CC.s b/include/d/d_com/d_com_inf_game/asm/func_8002F2CC.s deleted file mode 100644 index 0ec43d1595..0000000000 --- a/include/d/d_com/d_com_inf_game/asm/func_8002F2CC.s +++ /dev/null @@ -1,4 +0,0 @@ -/* 8002F2CC 0002C20C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002F2D0 0002C210 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002F2D4 0002C214 A8 63 00 8C */ lha r3, 0x8c(r3) -/* 8002F2D8 0002C218 4E 80 00 20 */ blr diff --git a/include/d/d_com/d_com_inf_game/asm/func_8002F2DC.s b/include/d/d_com/d_com_inf_game/asm/func_8002F2DC.s deleted file mode 100644 index b0cc5af5ad..0000000000 --- a/include/d/d_com/d_com_inf_game/asm/func_8002F2DC.s +++ /dev/null @@ -1,5 +0,0 @@ -/* 8002F2DC 0002C21C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 8002F2E0 0002C220 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 8002F2E4 0002C224 88 03 00 97 */ lbz r0, 0x97(r3) -/* 8002F2E8 0002C228 7C 03 07 74 */ extsb r3, r0 -/* 8002F2EC 0002C22C 4E 80 00 20 */ blr diff --git a/include/d/d_com/d_com_inf_game/asm/func_8002F310.s b/include/d/d_com/d_com_inf_game/asm/func_8002F310.s deleted file mode 100644 index 2954c7c7ce..0000000000 --- a/include/d/d_com/d_com_inf_game/asm/func_8002F310.s +++ /dev/null @@ -1 +0,0 @@ -/* 8002F310 0002C250 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_com/d_com_inf_game/d_com_inf_game.h b/include/d/d_com/d_com_inf_game/d_com_inf_game.h index c24c05b758..0cf015ec79 100644 --- a/include/d/d_com/d_com_inf_game/d_com_inf_game.h +++ b/include/d/d_com/d_com_inf_game/d_com_inf_game.h @@ -107,8 +107,12 @@ public: dStage_roomControl_c& getRoomControl() { return mRoomControl; } item_func& getGiveItem() { return give_item; } u8& getUnkHeart() { return unk_heart; } - void setUnkWarashibe1(u8 num) { unkWarashibe1 = num; } - void setUnkWarashibe2(u8 num) { unkWarashibe2 = num; } + void setItem(u8 slot, u8 i_no) { + mItemSlot = slot; + mItemID = i_no; + } + void setUnkWarashibe1(u8 num) { mItemSlot = num; } + void setUnkWarashibe2(u8 num) { mItemID = num; } void setZStatus(u8 status, u8 unk) { mZStatus = status; unkZStatus = unk; @@ -171,7 +175,9 @@ private: /* 0x04DA8 */ u8 field_0x4da8[0x5C]; /* 0x04E04 */ u32 field_0x4e04; /* 0x04E08 */ u8 field_0x4e08[0x4]; - /* 0x04E0C */ u8 field_0x4e0c[0x4]; + /* 0x04E0C */ u8 field_0x4e0c; + /* 0x04E0D */ u8 field_0x4e0d; + /* 0x04E0E */ u8 field_0x4e0e[0x2]; /* 0x04E10 */ dDlst_window_c mDrawlistWindow; /* 0x04ED4 */ dComIfG_camera_info_class mCameraInfo; /* 0x04E60 */ u8 field_0x4e60[0x28]; @@ -191,8 +197,8 @@ private: /* 0x04F13 */ u8 field_0x4f13[0x3]; /* 0x04F16 */ u8 unkZStatus; /* 0x04F17 */ u8 field_0x4f17[0x2E]; - /* 0x04F45 */ u8 unkWarashibe1; - /* 0x04F46 */ u8 unkWarashibe2; + /* 0x04F45 */ u8 mItemSlot; + /* 0x04F46 */ u8 mItemID; /* 0x04F47 */ u8 field_0x4f47[0x13]; /* 0x04F5A */ u8 mNowVibration; /* 0x04F5B */ u8 field_0x4f5b[0x23]; @@ -217,6 +223,9 @@ public: // temp for setWarashibeItem void setPlayUnkWarashibe1(u8 num) { play.setUnkWarashibe1(num); } void setPlayUnkWarashibe2(u8 num) { play.setUnkWarashibe2(num); } + void setWorldDark(u8 state) { mWorldDark = state; } + u8 setWorldDark() { return mWorldDark; } + dSv_player_c& getPlayer() { return info.getPlayer(); } dSv_save_c& getSaveFile() { return info.getSaveFile(); } u32 getNowVibration() { return play.getNowVibration(); } @@ -243,18 +252,18 @@ private: /* 0x1D4F8 */ dRes_info_c resource_info2; /* 0x1D51C */ u8 unk20[0x8DC]; /* 0x1DDF8 */ u8 unk21; - /* 0x1DDF9 */ u8 unk22; - /* 0x1DDFA */ u8 unk23; - /* 0x1DDFB */ u8 unk24; - /* 0x1DDFC */ u8 unk25; + /* 0x1DDF9 */ u8 mWorldDark; + /* 0x1DDFA */ u8 mUnk; + /* 0x1DDFB */ u8 mPolyDamage; + /* 0x1DDFC */ u8 mGrassHide; /* 0x1DDFD */ u8 unk26[0x3]; // probably padding /* 0x1DE00 */ u8 unk27; /* 0x1DE01 */ u8 unk28[0x3]; // probably padding /* 0x1DE04 */ u8 unk29; /* 0x1DE05 */ u8 unk30[0x3]; // probably padding /* 0x1DE08 */ u8 unk31; - /* 0x1DE09 */ u8 unk32; - /* 0x1DE0A */ u8 unk33; + /* 0x1DE09 */ u8 mTargetWarpPt; + /* 0x1DE0A */ u8 mSelectWarpPt; /* 0x1DE0B */ u8 unk34[0x5]; // probably padding }; #pragma pack(pop) @@ -434,5 +443,41 @@ inline void dComIfGs_offEventBit(u16 event) { inline int dComIfGs_isEventBit(u16 event) { return g_dComIfG_gameInfo.getSaveFile().getEventFlags().isEventBit(event); } +inline const char* dComIfGs_getLastWarpMarkStageName(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerLastMarkInfo().getName(); +} +inline cXyz dComIfGs_getLastWarpMarkPlayerPos(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerLastMarkInfo().getPos(); +} +inline s16 dComIfGs_getLastWarpMarkPlayerAngleY(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerLastMarkInfo().getAngleY(); +} +inline s8 dComIfGs_getLastWarpMarkRoomNo(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerLastMarkInfo().getRoomNo(); +} +inline char dComIfGs_getLastWarpAcceptStage(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerLastMarkInfo().getWarpAcceptStage(); +} +inline u8 dComIfGs_getSelectEquipClothes(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerStatusA().getSelectEquip(CLOTHING_BITFIELD); +} +inline u8 dComIfGs_getSelectEquipSword(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerStatusA().getSelectEquip(SWORD_BITFIELD); +} +inline u8 dComIfGs_getSelectEquipShield(void) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerStatusA().getSelectEquip(SHIELD_BITFIELD); +} +inline u8 dComIfGs_getLightDropNum(u8 area_id) { + return g_dComIfG_gameInfo.getSaveFile().getLightDrop().getLightDropNum(area_id); +} +inline u8 dComIfGs_getSelectItemIndex(int idx) { + return g_dComIfG_gameInfo.getPlayer().getPlayerStatusA().getSelectItemIndex(idx); +} +inline void dComIfGp_setItem(u8 slot, u8 i_no) { + g_dComIfG_gameInfo.getPlay().setItem(slot, i_no); +} +inline u32 dComIfGp_getNowVibration(void) { + return g_dComIfG_gameInfo.getPlay().getNowVibration(); +} #endif \ No newline at end of file diff --git a/include/d/d_save/d_save/asm/func_80033494.s b/include/d/d_save/d_save/asm/func_80033494.s deleted file mode 100644 index 0e0b32d5c0..0000000000 --- a/include/d/d_save/d_save/asm/func_80033494.s +++ /dev/null @@ -1,35 +0,0 @@ -/* 80033494 000303D4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80033498 000303D8 7C 08 02 A6 */ mflr r0 -/* 8003349C 000303DC 90 01 00 24 */ stw r0, 0x24(r1) -/* 800334A0 000303E0 39 61 00 20 */ addi r11, r1, 0x20 -/* 800334A4 000303E4 48 32 ED 39 */ bl _savegpr_29 -/* 800334A8 000303E8 3B A0 00 00 */ li r29, 0 -/* 800334AC 000303EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 800334B0 000303F0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 800334B4 000303F4 3B E3 00 9C */ addi r31, r3, 0x9c -lbl_800334B8: -/* 800334B8 000303F8 7F E3 FB 78 */ mr r3, r31 -/* 800334BC 000303FC 38 1D 00 0B */ addi r0, r29, 0xb -/* 800334C0 00030400 54 1E 06 3E */ clrlwi r30, r0, 0x18 -/* 800334C4 00030404 7F C4 F3 78 */ mr r4, r30 -/* 800334C8 00030408 38 A0 00 01 */ li r5, 1 -/* 800334CC 0003040C 4B FF FB 65 */ bl getItem__17dSv_player_item_cCFib -/* 800334D0 00030410 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 800334D4 00030414 28 00 00 FF */ cmplwi r0, 0xff -/* 800334D8 00030418 40 82 00 18 */ bne lbl_800334F0 -/* 800334DC 0003041C 7F E3 FB 78 */ mr r3, r31 -/* 800334E0 00030420 7F C4 F3 78 */ mr r4, r30 -/* 800334E4 00030424 38 A0 00 60 */ li r5, 0x60 -/* 800334E8 00030428 4B FF FA D1 */ bl setItem__17dSv_player_item_cFiUc -/* 800334EC 0003042C 48 00 00 10 */ b lbl_800334FC -lbl_800334F0: -/* 800334F0 00030430 3B BD 00 01 */ addi r29, r29, 1 -/* 800334F4 00030434 2C 1D 00 04 */ cmpwi r29, 4 -/* 800334F8 00030438 41 80 FF C0 */ blt lbl_800334B8 -lbl_800334FC: -/* 800334FC 0003043C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80033500 00030440 48 32 ED 29 */ bl _restgpr_29 -/* 80033504 00030444 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80033508 00030448 7C 08 03 A6 */ mtlr r0 -/* 8003350C 0003044C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80033510 00030450 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_save/d_save/asm/func_80033514.s b/include/d/d_save/d_save/asm/func_80033514.s deleted file mode 100644 index e153d264e8..0000000000 --- a/include/d/d_save/d_save/asm/func_80033514.s +++ /dev/null @@ -1,36 +0,0 @@ -/* 80033514 00030454 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80033518 00030458 7C 08 02 A6 */ mflr r0 -/* 8003351C 0003045C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80033520 00030460 39 61 00 20 */ addi r11, r1, 0x20 -/* 80033524 00030464 48 32 EC B5 */ bl _savegpr_28 -/* 80033528 00030468 7C 9C 23 78 */ mr r28, r4 -/* 8003352C 0003046C 3B A0 00 00 */ li r29, 0 -/* 80033530 00030470 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha -/* 80033534 00030474 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l -/* 80033538 00030478 3B E3 00 9C */ addi r31, r3, 0x9c -lbl_8003353C: -/* 8003353C 0003047C 7F E3 FB 78 */ mr r3, r31 -/* 80033540 00030480 38 1D 00 0B */ addi r0, r29, 0xb -/* 80033544 00030484 54 1E 06 3E */ clrlwi r30, r0, 0x18 -/* 80033548 00030488 7F C4 F3 78 */ mr r4, r30 -/* 8003354C 0003048C 38 A0 00 01 */ li r5, 1 -/* 80033550 00030490 4B FF FA E1 */ bl getItem__17dSv_player_item_cCFib -/* 80033554 00030494 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80033558 00030498 28 00 00 FF */ cmplwi r0, 0xff -/* 8003355C 0003049C 40 82 00 18 */ bne lbl_80033574 -/* 80033560 000304A0 7F E3 FB 78 */ mr r3, r31 -/* 80033564 000304A4 7F C4 F3 78 */ mr r4, r30 -/* 80033568 000304A8 7F 85 E3 78 */ mr r5, r28 -/* 8003356C 000304AC 4B FF FA 4D */ bl setItem__17dSv_player_item_cFiUc -/* 80033570 000304B0 48 00 00 10 */ b lbl_80033580 -lbl_80033574: -/* 80033574 000304B4 3B BD 00 01 */ addi r29, r29, 1 -/* 80033578 000304B8 2C 1D 00 04 */ cmpwi r29, 4 -/* 8003357C 000304BC 41 80 FF C0 */ blt lbl_8003353C -lbl_80033580: -/* 80033580 000304C0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80033584 000304C4 48 32 EC A1 */ bl _restgpr_28 -/* 80033588 000304C8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8003358C 000304CC 7C 08 03 A6 */ mtlr r0 -/* 80033590 000304D0 38 21 00 20 */ addi r1, r1, 0x20 -/* 80033594 000304D4 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_save/d_save/d_save.h b/include/d/d_save/d_save/d_save.h index 0e1093059d..adbe7868d3 100644 --- a/include/d/d_save/d_save/d_save.h +++ b/include/d/d_save/d_save/d_save.h @@ -330,7 +330,7 @@ public: u16& getLife() { return mCurrentHealth; } u16& getRupee() { return mCurrentRupees; } u16& getOil() { return mCurrentLanternOil; } - u8& getSelectEquip(int item) { return mEquipment[item]; } + u8 getSelectEquip(int item) const { return mEquipment[item]; } void setWalletLV(u8 lv) { mCurrentWallet = lv; } void setOil(u16 oil) { mCurrentLanternOil = oil; } void setMaxOil(u16 max) { mMaxLanternOil = max; } @@ -434,13 +434,19 @@ public: void init(void); void setWarpItemData(const char*, const cXyz&, s16, s8, u8, u8); + const char* getName(void) { return mOoccooStage; } + cXyz getPos(void) { return mOoccooPosition; } + s16 getAngleY(void) { return mOoccooXRotation; } + s8 getRoomNo(void) { return mOoccooRoomId; } + char getWarpAcceptStage(void) { return mWarpAcceptStage; } + private: cXyz mOoccooPosition; s16 mOoccooXRotation; char mOoccooStage[8]; u8 mOoccooSpawnId; - u8 mOoccooRoomId; - char unk24; + s8 mOoccooRoomId; + char mWarpAcceptStage; u8 unk25[3]; }; diff --git a/include/functions.h b/include/functions.h index b0ae7cb65a..54b2092cf6 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2221,7 +2221,7 @@ void fopAcM_orderDoorEvent(void); void daAlink_c_NS_procIronBallSubjectInit(void); void daAlink_c_NS_procLadderUpStartInit(void); void func_8012F1F0(void); -void dComIfGs_getWarpPlayerAngleY(void); +s16 dComIfGs_getWarpPlayerAngleY(void); void func_80141594(void); void func_8010D38C(void); void daAlink_c_NS_checkCoachGuardGame(void); @@ -3091,7 +3091,7 @@ void func_800F9ABC(void); void cM3dGPla_NS_ctor(void); void daAlink_c_NS_setSingleAnimeWolf(void); void mDoExt_MtxCalcOldFrame_NS_initOldFrameMorf(void); -void dComIfGs_getWarpStageName(void); +const char* dComIfGs_getWarpStageName(void); void daAlink_c_NS_procCanoeBoomerangSubjectInit(void); void daAlink_c_NS_procWolfDamageInit(void); void daAlink_c_NS_setRoofHangHandOnSE(void); @@ -3660,7 +3660,7 @@ void fopAcM_createChild(void); void func_800F3894(void); void daAlink_c_NS_initGrabNextMode(void); void func_800F3580(void); -void dComIfGs_getWarpRoomNo(void); +int dComIfGs_getWarpRoomNo(void); void func_801416D4(void); void func_8014166C(void); void func_800F2AD8(void); @@ -6536,14 +6536,14 @@ void dComIfGp_checkEmptySubHeap2D(void); void dComIfGp_createSubExpHeap2D(void); void dComIfGp_destroySubExpHeap2D(void); void dComIfGp_getNowLevel(void); -void dComIfGp_isLightDropMapVisible(void); +BOOL dComIfGp_isLightDropMapVisible(void); void dComIfGp_ret_wp_set(void); void dComIfGp_searchUseSubHeap2D(void); void dComIfGp_setNextStage_X1_(void); -void dComIfGp_world_dark_set(void); +void dComIfGp_world_dark_set(u8); void dComIfGs_BossLife_public_Set(void); void dComIfGs_checkGetInsectNum(void); -void dComIfGs_checkGetItem(void); +u8 dComIfGs_checkGetItem(u8); void dComIfGs_gameStart(void); void dComIfGs_getWarpMarkFlag(void); void dComIfGs_isDungeonItemWarp(void); diff --git a/src/d/d_com/d_com_inf_game.cpp b/src/d/d_com/d_com_inf_game.cpp index fe0b702ed7..8e1c0681cd 100644 --- a/src/d/d_com/d_com_inf_game.cpp +++ b/src/d/d_com/d_com_inf_game.cpp @@ -8,10 +8,22 @@ #include "m_Do/m_Do_controller_pad/m_Do_controller_pad.h" #include "m_Do/m_Do_ext/m_Do_ext.h" +// memset first arg is wrong +#ifdef NONMATCHING +void dComIfG_play_c::ct(void) { + field_0x4e0c = 0; + field_0x4e04 = 0; + field_0x4e0d = 0; + + memset((void*)(this + 0x5024), 0, 8); + init(); +} +#else asm void dComIfG_play_c::ct(void) { nofralloc #include "d/d_com/d_com_inf_game/asm/func_8002B1DC.s" } +#endif asm void dComIfG_play_c::init(void) { nofralloc @@ -569,15 +581,29 @@ asm void dComIfGp_getSubHeap2D(void) { // dComIfGs_checkGetInsectNum__Fv // dComIfGs_checkGetInsectNum(void) -asm void dComIfGs_checkGetInsectNum(void) { - nofralloc +asm void dComIfGs_checkGetInsectNum(void){nofralloc #include "d/d_com/d_com_inf_game/asm/func_8002E428.s" } -// dComIfGs_checkGetItem__FUc -// dComIfGs_checkGetItem(unsigned char) -asm void dComIfGs_checkGetItem(void){nofralloc -#include "d/d_com/d_com_inf_game/asm/func_8002E4CC.s" +u8 dComIfGs_checkGetItem(u8 i_no) { + u8 count = 0; + + for (int i = 0; i < 60; i++) { + if (i_no == dComIfGs_getItem(i, true)) { + count++; + } + } + if (dComIfGs_getSelectEquipClothes() == i_no) { + count++; + } + if (dComIfGs_getSelectEquipSword() == i_no) { + count++; + } + if (dComIfGs_getSelectEquipShield() == i_no) { + count++; + } + + return count; } u8 dComIfGs_getBottleMax(void) { @@ -643,16 +669,17 @@ asm void dComIfGp_calcNowRegion(void) { // dComIfG_getNowCalcRegion__Fv // dComIfG_getNowCalcRegion(void) -asm void dComIfG_getNowCalcRegion(void) { - nofralloc +asm void dComIfG_getNowCalcRegion(void){nofralloc #include "d/d_com/d_com_inf_game/asm/func_8002EC54.s" } -// dComIfGp_isLightDropMapVisible__Fv -// dComIfGp_isLightDropMapVisible(void) -asm void dComIfGp_isLightDropMapVisible(void) { - nofralloc -#include "d/d_com/d_com_inf_game/asm/func_8002EDE0.s" +BOOL dComIfGp_isLightDropMapVisible(void) { + for (int i = 0; i < 3; i++) { + if (dComIfGs_isLightDropGetFlag(i) != FALSE && dComIfGs_getLightDropNum(i) < 16) { + return TRUE; + } + } + return FALSE; } // dComIfGp_getNowLevel__Fv @@ -720,32 +747,22 @@ void dComIfGs_setLastWarpMarkItemData(const char* stage, cXyz pos, s16 angle, s8 room, unk1, unk2); } -// dComIfGs_getWarpStageName__Fv -// dComIfGs_getWarpStageName(void) -asm void dComIfGs_getWarpStageName(void) { - nofralloc -#include "d/d_com/d_com_inf_game/asm/func_8002F2AC.s" +const char* dComIfGs_getWarpStageName(void) { + return dComIfGs_getLastWarpMarkStageName(); } // dComIfGs_getWarpPlayerPos__Fv // dComIfGs_getWarpPlayerPos(void) -asm void dComIfGs_getWarpPlayerPos(void) { - nofralloc +asm void dComIfGs_getWarpPlayerPos(void){nofralloc #include "d/d_com/d_com_inf_game/asm/func_8002F2BC.s" } -// dComIfGs_getWarpPlayerAngleY__Fv -// dComIfGs_getWarpPlayerAngleY(void) -asm void dComIfGs_getWarpPlayerAngleY(void) { - nofralloc -#include "d/d_com/d_com_inf_game/asm/func_8002F2CC.s" +s16 dComIfGs_getWarpPlayerAngleY(void) { + return dComIfGs_getLastWarpMarkPlayerAngleY(); } -// dComIfGs_getWarpRoomNo__Fv -// dComIfGs_getWarpRoomNo(void) -asm void dComIfGs_getWarpRoomNo(void) { - nofralloc -#include "d/d_com/d_com_inf_game/asm/func_8002F2DC.s" +int dComIfGs_getWarpRoomNo(void) { + return dComIfGs_getLastWarpMarkRoomNo(); } // dComIfGs_getWarpMarkFlag__Fv @@ -755,11 +772,8 @@ asm void dComIfGs_getWarpMarkFlag(void) { #include "d/d_com/d_com_inf_game/asm/func_8002F2F0.s" } -// dComIfGs_setWarpMarkFlag__FUc -// dComIfGs_setWarpMarkFlag(unsigned char) -asm void dComIfGs_setWarpMarkFlag(void) { - nofralloc -#include "d/d_com/d_com_inf_game/asm/func_8002F310.s" +void dComIfGs_setWarpMarkFlag(void) { + return; } // __ct__19dComIfG_resLoader_cFv @@ -813,17 +827,33 @@ asm void dComIfGp_ret_wp_set(void) { // dComIfGp_world_dark_set__FUc // dComIfGp_world_dark_set(unsigned char) -asm void dComIfGp_world_dark_set(void) { + +// matches but dComIfG_inf_c structure is wrong +#ifdef NONMATCHING +void dComIfGp_world_dark_set(u8 state) { + g_dComIfG_gameInfo.setWorldDark(state); +} +#else +asm void dComIfGp_world_dark_set(u8) { nofralloc #include "d/d_com/d_com_inf_game/asm/func_8002F504.s" } +#endif // dComIfGp_world_dark_get__Fv // dComIfGp_world_dark_get(void) + +// same issue as above +#ifdef NONMATCHING +u8 dComIfGp_world_dark_get(void) { + return g_dComIfG_gameInfo.getWorldDark(); +} +#else asm void dComIfGp_world_dark_get(void) { nofralloc #include "d/d_com/d_com_inf_game/asm/func_8002F518.s" } +#endif // dComIfG_TimerStart__Fis // dComIfG_TimerStart(int, short) diff --git a/src/d/d_save/d_save.cpp b/src/d/d_save/d_save.cpp index dc3db16b18..1bc3fd417a 100644 --- a/src/d/d_save/d_save.cpp +++ b/src/d/d_save/d_save.cpp @@ -5,6 +5,10 @@ #include "d/d_save/d_save_init/d_save_init.h" #include "os/OS.h" +inline int dComIfGs_isItemFirstBit(u8 i_no) { + return g_dComIfG_gameInfo.getSaveFile().getPlayerGetItem().isFirstBit(i_no); +} + u8 dSv_item_rename(u8 item_id) { switch (item_id) { case OIL_BOTTLE_2: @@ -95,7 +99,7 @@ u16 dSv_player_status_a_c::getRupeeMax(void) const { BOOL dSv_player_status_a_c::isMagicFlag(u8 i_magic) const { if (i_magic == 0) { - return g_dComIfG_gameInfo.getSaveFile().getEventFlags().isEventBit(0x2304); + return dComIfGs_isEventBit(0x2304); } return (this->mMagicFlag & (u8)(1 << i_magic)) ? TRUE : FALSE; } @@ -227,7 +231,7 @@ void dSv_player_last_mark_info_c::init(void) { this->mOoccooXRotation = 0; this->mOoccooRoomId = 0; this->mOoccooSpawnId = 0; - this->unk24 = -1; + this->mWarpAcceptStage = -1; for (int i = 0; i < 3; i++) { this->unk25[i] = 0; @@ -259,8 +263,7 @@ void dSv_player_item_c::setItem(int item_slot, u8 item_id) { int select_item_index = DEFAULT_SELECT_ITEM_INDEX; do { - if (item_slot == g_dComIfG_gameInfo.getSaveFile().getPlayerStatusA().getSelectItemIndex( - select_item_index)) { + if (item_slot == dComIfGs_getSelectItemIndex(select_item_index)) { dComIfGp_setSelectItem(select_item_index); } select_item_index++; @@ -268,11 +271,6 @@ void dSv_player_item_c::setItem(int item_slot, u8 item_id) { } #ifdef NONMATCHING - -inline u8 dComIfGs_getSelectItemIndex(int idx) { - return g_dComIfG_gameInfo.getPlayer().getPlayerStatusA().getSelectItemIndex(idx); -} - u8 dSv_player_item_c::getItem(int item_idx, bool isComboItem) const { if (item_idx < MAX_ITEM_SLOTS) { if (isComboItem) { @@ -425,42 +423,23 @@ asm void dSv_player_item_c::setEmptyBottleItemIn(u8 i_item_id) { } #endif -// r30 and r31 registers swapped -#ifdef NONMATCHING void dSv_player_item_c::setEmptyBottle(void) { for (int i = 0; i < 4; i++) { - if (g_dComIfG_gameInfo.info.getSaveFile().getPlayerItem().getItem((u8)(i + 11), true) == - NO_ITEM) { - g_dComIfG_gameInfo.info.getSaveFile().getPlayerItem().setItem((u8)(i + 11), - EMPTY_BOTTLE); + if (dComIfGs_getItem((u8)(i + 11), true) == NO_ITEM) { + dComIfGs_setItem((u8)(i + 11), EMPTY_BOTTLE); return; } } } -#else -asm void dSv_player_item_c::setEmptyBottle(void) { - nofralloc -#include "d/d_save/d_save/asm/func_80033494.s" -} -#endif -// same issue as the one above this -#ifdef NONMATCHING void dSv_player_item_c::setEmptyBottle(u8 item_id) { for (int i = 0; i < 4; i++) { - if (g_dComIfG_gameInfo.info.getSaveFile().getPlayerItem().getItem((u8)(i + 11), true) == - NO_ITEM) { - g_dComIfG_gameInfo.info.getSaveFile().getPlayerItem().setItem((u8)(i + 11), item_id); + if (dComIfGs_getItem((u8)(i + 11), true) == NO_ITEM) { + dComIfGs_setItem((u8)(i + 11), item_id); return; } } } -#else -asm void dSv_player_item_c::setEmptyBottle(u8 item_id) { - nofralloc -#include "d/d_save/d_save/asm/func_80033514.s" -} -#endif asm void dSv_player_item_c::setEquipBottleItemIn(u8, u8) { nofralloc @@ -488,10 +467,8 @@ int dSv_player_item_c::checkInsectBottle(void) { int i = 0; int j = 0; for (; i < 0x18; i++) { - // replace these with dComIfGs_isItemFirstBit and dComIfGs_isEventBit later - if (g_dComIfG_gameInfo.getSaveFile().getPlayerGetItem().isFirstBit(192 + i) && - !g_dComIfG_gameInfo.getSaveFile().getEventFlags().isEventBit( - lbl_803A7288.unk0[0x191 + j])) { + if (dComIfGs_isItemFirstBit(192 + i) && + !dComIfGs_isEventBit(lbl_803A7288.unk0[0x191 + j])) { return 1; } j += 1; @@ -576,14 +553,14 @@ u8 dSv_player_item_c::checkBombBag(u8 param_1) { void dSv_player_item_c::setWarashibeItem(u8 i_item_id) { u32 select_item_index; - g_dComIfG_gameInfo.getSaveFile().getPlayer().getPlayerItem().setItem(SLOT_21, i_item_id); + dComIfGs_setItem(SLOT_21, i_item_id); + // inline should be used, but it wrongly swaps instruction order ?? + // dComIfGp_setItem(SLOT_21, i_item_id); g_dComIfG_gameInfo.setPlayUnkWarashibe1(SLOT_21); g_dComIfG_gameInfo.setPlayUnkWarashibe2(i_item_id); for (int i = 0; i < 4; i++) { - select_item_index = - g_dComIfG_gameInfo.getSaveFile().getPlayer().getPlayerStatusA().getSelectItemIndex( - (u8)i); + select_item_index = dComIfGs_getSelectItemIndex((u8)i); if (select_item_index == SLOT_21) { dComIfGp_setSelectItem((u8)i); } @@ -616,21 +593,18 @@ void dSv_player_item_c::setRodTypeLevelUp(void) { void dSv_player_item_c::setBaitItem(u8 param_1) { switch (param_1) { case BEE_CHILD: { - g_dComIfG_gameInfo.getSaveFile().getPlayerGetItem().isFirstBit(ZORAS_JEWEL) ? - this->mItems[SLOT_20] = JEWEL_BEE_ROD : - this->mItems[SLOT_20] = BEE_ROD; + dComIfGs_isItemFirstBit(ZORAS_JEWEL) ? this->mItems[SLOT_20] = JEWEL_BEE_ROD : + this->mItems[SLOT_20] = BEE_ROD; break; } case WORM: { - g_dComIfG_gameInfo.getSaveFile().getPlayerGetItem().isFirstBit(ZORAS_JEWEL) ? - this->mItems[SLOT_20] = JEWEL_WORM_ROD : - this->mItems[SLOT_20] = WORM_ROD; + dComIfGs_isItemFirstBit(ZORAS_JEWEL) ? this->mItems[SLOT_20] = JEWEL_WORM_ROD : + this->mItems[SLOT_20] = WORM_ROD; break; } case NO_ITEM: { - g_dComIfG_gameInfo.getSaveFile().getPlayerGetItem().isFirstBit(ZORAS_JEWEL) ? - this->mItems[SLOT_20] = JEWEL_ROD : - this->mItems[SLOT_20] = FISHING_ROD_1; + dComIfGs_isItemFirstBit(ZORAS_JEWEL) ? this->mItems[SLOT_20] = JEWEL_ROD : + this->mItems[SLOT_20] = FISHING_ROD_1; break; } } @@ -704,7 +678,7 @@ void dSv_player_item_record_c::setBottleNum(u8 i_bottleIdx, u8 bottle_num) { u8 dSv_player_item_record_c::addBottleNum(u8 i_bottleIdx, s16 param_2) { int iVar3 = this->mBottles[i_bottleIdx] + param_2; - g_dComIfG_gameInfo.getSaveFile().getPlayerItem().getItem((u8)(i_bottleIdx + 0xB), true); + dComIfGs_getItem((u8)(i_bottleIdx + 0xB), true); if (iVar3 < 0) { this->mBottles[i_bottleIdx] = 0; @@ -748,7 +722,7 @@ u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { u8 iVar3; iVar3 = 0x1; - if (g_dComIfG_gameInfo.getSaveFile().getPlayerGetItem().isFirstBit(BOMB_BAG_LV2)) { + if (dComIfGs_isItemFirstBit(BOMB_BAG_LV2)) { iVar3 = 0x2; } @@ -944,7 +918,7 @@ void dSv_player_config_c::init(void) { } u32 dSv_player_config_c::checkVibration(void) const { - return _sRumbleSupported & 0x80000000 ? g_dComIfG_gameInfo.getNowVibration() : 0; + return _sRumbleSupported & 0x80000000 ? dComIfGp_getNowVibration() : 0; } u8 dSv_player_config_c::getSound(void) {