d_com_inf_game / d_save improvements (#82)

* some dcominfg funcs

* add dcom inlines to d_save

* format

* format
This commit is contained in:
TakaRikka 2021-01-11 08:32:56 -08:00 committed by GitHub
parent 8cf6641bd4
commit 7b97550cee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 163 additions and 292 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +0,0 @@
/* 8002F310 0002C250 4E 80 00 20 */ blr

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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];
};

View File

@ -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);

View File

@ -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)

View File

@ -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,20 +593,17 @@ 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 :
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 :
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 :
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) {