summaryrefslogtreecommitdiff
path: root/src/d/d_door.cpp
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2025-06-04 16:50:49 -0400
committerGitHub <noreply@github.com>2025-06-04 16:50:49 -0400
commite24cbed36724b9ae422875a6da46b8c10d69ca19 (patch)
tree144d0841819533767ff69dc541bd655f7adeaab4 /src/d/d_door.cpp
parent08571c4865fed64bb39c422ae0b973f977af93b4 (diff)
Demo work (#786)
* Demo work * Fix PAL * Fix d_door weak func order and link it * Fix d_door for demo * JKernel OK on demo + misc * tag_attention 100% on demo * More demo work and fix some retail fakematches
Diffstat (limited to 'src/d/d_door.cpp')
-rw-r--r--src/d/d_door.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/d/d_door.cpp b/src/d/d_door.cpp
index 9260d010..459ecb6b 100644
--- a/src/d/d_door.cpp
+++ b/src/d/d_door.cpp
@@ -9,7 +9,12 @@
#include "d/res/res_key.h"
#include "d/res/res_hkyo.h"
#include "d/actor/d_a_player.h"
+
+// Fakematch to fix weak function ordering of cSAngle::~cSAngle() and cSGlobe::~cSGlobe().
+#pragma sym off
#include "SSystem/SComponent/c_angle.h"
+#pragma sym on
+#pragma nosyminline off
/* 8006B39C-8006B3A8 .text getSwbit__12dDoor_info_cFv */
u8 dDoor_info_c::getSwbit() {
@@ -111,7 +116,7 @@ s32 dDoor_info_c::frontCheck() {
/* 8006B6F4-8006B824 .text drawCheck_local__12dDoor_info_cFv */
s32 dDoor_info_c::drawCheck_local() {
- if (!adjoinPlayer() && !eventInfo.checkCommandDemoAccrpt() && !eventInfo.checkCommandDoor())
+ if (!adjoinPlayer() && eventInfo.checkCommandDemoAccrpt() == FALSE && eventInfo.checkCommandDoor() == FALSE)
return 0;
if (getFRoomNo() == 0x3F || getBRoomNo() == 0x3F)
@@ -174,7 +179,7 @@ void dDoor_info_c::startDemoProc() {
fopAc_ac_c* player = dComIfGp_getPlayer(0);
mStaffId = dComIfGp_evmng_getMyStaffId("SHUTTER_DOOR");
shape_angle.y = current.angle.y;
- JUT_ASSERT(0x112, player);
+ JUT_ASSERT(VERSION_SELECT(271, 274, 274, 274), player);
s16 delta = player->home.angle.y - home.angle.y;
if (delta < 0)
delta = -delta;
@@ -310,13 +315,11 @@ void dDoor_info_c::closeEndCom() {
cXyz pos(current.pos.x - rad * mAngleVec.x, current.pos.y, current.pos.z - rad * mAngleVec.z);
s8 roomNo = fopAcM_GetRoomNo(player);
- s16 angle;
- if (dot > 0.0f) {
- angle = current.angle.y;
- } else {
- angle = current.angle.y + 0x8000;
- }
- dComIfGs_setRestartRoom(pos, angle, roomNo);
+ dComIfGs_setRestartRoom(
+ pos,
+ dot > 0.0f ? current.angle.y : (s16)(current.angle.y + 0x8000),
+ roomNo
+ );
}
/* 8006C0A4-8006C0EC .text getDemoAction__12dDoor_info_cFv */
@@ -466,7 +469,7 @@ BOOL dDoor_key2_c::keyProc() {
/* 8006C650-8006C764 .text keyCreate_Nkey__12dDoor_key2_cFv */
BOOL dDoor_key2_c::keyCreate_Nkey() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Key", KEY_BDL_VLOCN);
- JUT_ASSERT(0x2cc, modelData != NULL);
+ JUT_ASSERT(VERSION_SELECT(713, 716, 716, 716), modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
if (mpModel == NULL)
@@ -482,7 +485,7 @@ BOOL dDoor_key2_c::keyCreate_Nkey() {
/* 8006C764-8006C910 .text keyCreate_Bkey__12dDoor_key2_cFv */
BOOL dDoor_key2_c::keyCreate_Bkey() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Key", KEY_BDL_VLOCB);
- JUT_ASSERT(0x2e4, modelData != NULL);
+ JUT_ASSERT(VERSION_SELECT(737, 740, 740, 740), modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
if (mpModel == NULL)
@@ -500,7 +503,7 @@ BOOL dDoor_key2_c::keyCreate_Bkey() {
case J3DErrType_OutOfMemory:
return FALSE;
default:
- JUT_ASSERT(0x306, FALSE);
+ JUT_ASSERT(VERSION_SELECT(771, 774, 774, 774), FALSE);
case J3DErrType_Success:
return TRUE;
}
@@ -647,7 +650,7 @@ BOOL dDoor_msg_c::proc(cXyz* pos) {
mState++;
break;
case 2:
- JUT_ASSERT(0x3ba, m_msg);
+ JUT_ASSERT(VERSION_SELECT(951, 954, 954, 954), m_msg);
if (m_msg->mStatus == fopMsgStts_MSG_TYPING_e) {
switch (mMsgId) {
case 0x1BBD:
@@ -659,7 +662,7 @@ BOOL dDoor_msg_c::proc(cXyz* pos) {
}
break;
case 3:
- JUT_ASSERT(0x3ca, m_msg);
+ JUT_ASSERT(VERSION_SELECT(967, 970, 970, 970), m_msg);
if (m_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) {
switch (mMsgId) {
case 0x1BBD:
@@ -709,7 +712,7 @@ BOOL dDoor_hkyo_c::create() {
return TRUE;
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Hkyo", HKYO_BDL_HKYO1);
- JUT_ASSERT(0x41c, modelData != NULL);
+ JUT_ASSERT(VERSION_SELECT(1049, 1052, 1052, 1052), modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000202);
if (mpModel == NULL)