From a791288d953a93368ee44ff28a8cd062cd91b2f1 Mon Sep 17 00:00:00 2001 From: Lurs <2795933+Lurs@users.noreply.github.com> Date: Sun, 15 Mar 2026 20:48:43 +0100 Subject: [PATCH] Fixes #80 ? --- include/d/d_com_inf_game.h | 20 ++++++++++++++++++++ include/d/d_save.h | 24 ++++++++++++++++++++++++ src/d/d_com_inf_game.cpp | 4 ++++ src/d/d_save.cpp | 20 ++++++++++++++++++++ 4 files changed, 68 insertions(+) diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 5f578dd658..73aad5ae51 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1084,7 +1084,11 @@ s32 dComIfGs_isDungeonItemWarp(int i_stageNo); void dComIfGs_BossLife_public_Set(s8); s8 dComIfGs_sense_type_change_Get(); void dComIfGs_sense_type_change_Set(s8); +#if TARGET_PC +cXyz dComIfGs_getWarpPlayerPos(); +#else cXyz& dComIfGs_getWarpPlayerPos(); +#endif const char* dComIfGs_getWarpStageName(); s16 dComIfGs_getWarpPlayerAngleY(); s8 dComIfGs_getWarpRoomNo(); @@ -1174,7 +1178,11 @@ void dComIfGs_setWarpItemData(char const* stage, cXyz pos, s16 angle, s8 roomNo, u8 param_5); void dComIfGs_setLastWarpMarkItemData(const char* stage, cXyz pos, s16 angle, s8 roomNo, u8, u8); const char* dComIfGs_getWarpStageName(); +#if TARGET_PC +cXyz dComIfGs_getWarpPlayerPos(); +#else cXyz& dComIfGs_getWarpPlayerPos(); +#endif s16 dComIfGs_getWarpPlayerAngleY(); s8 dComIfGs_getWarpRoomNo(); u8 dComIfGs_getWarpMarkFlag(); @@ -1420,7 +1428,11 @@ inline BOOL dComIfGs_isTransformLV(int i_no) { return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusB().isTransformLV(i_no); } +#if TARGET_PC +inline cXyz dComIfGs_getHorseRestartPos() { +#else inline cXyz& dComIfGs_getHorseRestartPos() { +#endif return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getPos(); } @@ -1441,7 +1453,11 @@ inline void dComIfGs_setHorseRestart(const char* i_stageName, cXyz& i_pos, s16 i g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().set(i_stageName, i_pos, i_angle, i_roomNo); } +#if TARGET_PC +inline cXyz dComIfGs_getPlayerFieldLastStayPos() { +#else inline cXyz& dComIfGs_getPlayerFieldLastStayPos() { +#endif return g_dComIfG_gameInfo.info.getPlayer().getPlayerFieldLastStayInfo().getPos(); } @@ -1483,7 +1499,11 @@ inline void dComIfGs_setPlayerFieldLastStayInfo(const char* i_stage, cXyz& i_pos i_point, i_region); } +#if TARGET_PC +inline cXyz dComIfGs_getLastWarpMarkPlayerPos() { +#else inline cXyz& dComIfGs_getLastWarpMarkPlayerPos() { +#endif return g_dComIfG_gameInfo.info.getPlayer().getPlayerLastMarkInfo().getPos(); } diff --git a/include/d/d_save.h b/include/d/d_save.h index 4b21e6673e..0228f25f29 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -219,13 +219,21 @@ public: void init(); void set(const char* i_name, const cXyz& i_pos, s16 i_angle, s8 i_roomNo); +#if TARGET_PC + cXyz getPos() { return cXyz(mPos); } +#else cXyz& getPos() { return mPos; } +#endif s16 getAngleY() const { return mAngleY; } const char* getStageName() const { return mName; } s8 getRoomNo() const { return mRoomNo; } private: +#if TARGET_PC + /* 0x00 */ BE(Vec) mPos; +#else /* 0x00 */ cXyz mPos; +#endif /* 0x0C */ BE(s16) mAngleY; /* 0x0E */ char mName[8]; /* 0x16 */ u8 mSpawnId; @@ -257,7 +265,11 @@ public: void onRegionBit(int i_region); void set(const char* i_name, const cXyz& i_pos, s16 i_angle, s8 i_spawn, u8 i_regionNo); +#if TARGET_PC + cXyz getPos() { return cXyz(mPos); } +#else cXyz& getPos() { return mPos; } +#endif s16 getAngleY() { return mAngleY; } char* getName() { return mName; } u8 getRegionNo() const { return mRegionNo; } @@ -267,7 +279,11 @@ public: private: +#if TARGET_PC + /* 0x00 */ BE(Vec) mPos; +#else /* 0x00 */ cXyz mPos; +#endif /* 0x0C */ BE(s16) mAngleY; /* 0x0E */ char mName[8]; /* 0x16 */ s8 mLastSpawnId; @@ -284,7 +300,11 @@ public: void init(); void setWarpItemData(const char* i_name, const cXyz& i_pos, s16 i_angle, s8 i_roomNo, u8, u8); +#if TARGET_PC + cXyz getPos() { return cXyz(mPos); } +#else cXyz& getPos() { return mPos; } +#endif s16 getAngleY() const { return mAngleY; } const char* getName() { return mName; } s8 getRoomNo() const { return mRoomNo; } @@ -293,7 +313,11 @@ public: void resetWarpAcceptStage() { mWarpAcceptStage = -1; } private: +#if TARGET_PC + /* 0x00 */ BE(Vec) mPos; +#else /* 0x00 */ cXyz mPos; +#endif /* 0x0C */ BE(s16) mAngleY; /* 0x0E */ char mName[8]; /* 0x16 */ u8 mSpawnId; diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 4e0f8da165..8da33212cf 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -2660,7 +2660,11 @@ const char* dComIfGs_getWarpStageName() { return dComIfGs_getLastWarpMarkStageName(); } +#if TARGET_PC +cXyz dComIfGs_getWarpPlayerPos() { +#else cXyz& dComIfGs_getWarpPlayerPos() { +#endif return dComIfGs_getLastWarpMarkPlayerPos(); } diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 52daf21404..868dc7cfca 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -197,7 +197,11 @@ BOOL dSv_player_status_b_c::isTransformLV(int i_no) const { void dSv_horse_place_c::init() { strcpy(mName, ""); +#if TARGET_PC + mPos = BE(0.0f, 0.0f, 0.0f); +#else mPos.set(0.0f, 0.0f, 0.0f); +#endif mAngleY = 0; mSpawnId = 0; mRoomNo = 0; @@ -228,7 +232,11 @@ void dSv_player_return_place_c::set(const char* i_name, s8 i_roomNo, u8 i_status void dSv_player_field_last_stay_info_c::init() { strcpy(mName, ""); +#if TARGET_PC + mPos = BE(0.0f, 0.0f, 0.0f); +#else mPos.set(0.0f, 0.0f, 0.0f); +#endif mAngleY = 0; mLastSpawnId = 0; mRegionNo = 1; @@ -244,7 +252,11 @@ void dSv_player_field_last_stay_info_c::set(const char* i_name, const cXyz& i_po s8 i_spawn, u8 i_regionNo) { JUT_ASSERT(468, strlen(i_name) <= 7); strcpy(mName, i_name); +#if TARGET_PC + mPos = i_pos; +#else mPos.set(i_pos); +#endif mAngleY = i_angle; mLastSpawnId = i_spawn; mRegionNo = i_regionNo; @@ -269,7 +281,11 @@ BOOL dSv_player_field_last_stay_info_c::isRegionBit(int i_region) const { void dSv_player_last_mark_info_c::init() { strcpy(mName, ""); +#if TARGET_PC + mPos = BE(0.0f, 0.0f, 0.0f); +#else mPos.set(0.0f, 0.0f, 0.0f); +#endif mAngleY = 0; mRoomNo = 0; mSpawnId = 0; @@ -283,7 +299,11 @@ void dSv_player_last_mark_info_c::init() { void dSv_player_last_mark_info_c::setWarpItemData(const char* i_name, const cXyz& i_pos, s16 i_angle, s8 i_roomNo, u8 unk_4, u8 unk_5) { strcpy(mName, i_name); +#if TARGET_PC + mPos = i_pos; +#else mPos.set(i_pos); +#endif mAngleY = i_angle; mRoomNo = i_roomNo;