d_event work, build fix

This commit is contained in:
Jasper St. Pierre
2024-01-06 12:09:33 -08:00
parent 63f6eb00c4
commit 2dbee60cf5
8 changed files with 180 additions and 68 deletions
+4
View File
@@ -2400,6 +2400,10 @@ inline dEvent_manager_c* dComIfGp_getPEvtManager() {
return &g_dComIfG_gameInfo.play.getEvtManager();
}
inline u8 dComIfGp_event_getMode() {
return g_dComIfG_gameInfo.play.getEvent().getMode();
}
// Note: Some of the below functions call g_dComIfG_gameInfo.play.getEvtManager(), while others use
// dComIfGp_getPEvtManager(), without a clear pattern for which was chosen.
+1
View File
@@ -101,6 +101,7 @@ public:
void reset() { onEventFlag(8); }
bool runCheck() { return mMode != 0; }
u8 getMode() { return mMode; }
/* 0x00 */ dEvt_order_c mOrder[8];
/* 0xC0 */ s8 mOrderCount;
+46 -2
View File
@@ -30,6 +30,12 @@ public:
/* 0x2C */ s32 mSubstanceSize;
/* 0x30 */ s32 mNextIdx;
/* 0x34 */ u32 field_0x34[3];
char* getName() { return mName; }
s32 getNext() { return mNextIdx; }
s32 getNumber() { return mSubstanceSize; }
s32 getIndex() { return mSubstanceIdx; }
s32 getType() { return mSubstanceType; }
}; // Size: 0x40
class dEvDtCut_c {
@@ -38,12 +44,15 @@ public:
s32 getNext() { return mNextCutIdx; }
u32 getFlagId() { return mFlagIdx; }
u32 getTagId() { return mTagId; }
u32 getStartFlag(int idx) { return mStartFlag[idx]; }
u32 getDataTop() { return mFirstDataIdx; }
char* getName() { return mName; }
public:
/* 0x00 */ char mName[32];
/* 0x20 */ u32 mTagId;
/* 0x24 */ u32 mIndex;
/* 0x28 */ u32 mFlagCheck[3];
/* 0x28 */ u32 mStartFlag[3];
/* 0x34 */ u32 mFlagIdx;
/* 0x38 */ u32 mFirstDataIdx;
/* 0x3C */ u32 mNextCutIdx;
@@ -165,7 +174,42 @@ public:
void advanceCut(dEvDtEvent_c*);
bool advanceCutLocal(dEvDtStaff_c*);
dEvDtCut_c * getCutP(int idx) { return &mCutP[idx]; }
event_binary_data_header* getHeaderP() { return mHeaderP; }
dEvDtStaff_c* getStaffP(int i) { return &mStaffP[i]; }
dEvDtEvent_c* getEventP(int i) { return &mEventP[i]; }
dEvDtData_c* getDataP(int i) { return &mDataP[i]; }
dEvDtCut_c* getCutP(int i) { return &mCutP[i]; }
char* getEventName(int i) { return mEventP[i].getName(); }
int getStaffCurrentCut(int i) { return mStaffP[i].getCurrentCut(); }
dEvDtCut_c* getCutStaffCurrentCutP(int i) { return getCutP(getStaffCurrentCut(i)); }
int getStaffStartCut(int i) { return mStaffP[i].getStartCut(); }
dEvDtCut_c* getCutStaffStartCutP(int i) { return getCutP(getStaffStartCut(i)); }
int* getIDataP(int i) { return &mIDataP[i]; }
f32* getFDataP(int i) { return &mFDataP[i]; }
char* getSDataP(int i) { return &mSDataP[i]; }
u32 getEventTop() { return mHeaderP->eventTop; }
s32 getEventNum() { return mHeaderP->eventNum; }
u32 getStaffTop() { return mHeaderP->staffTop; }
s32 getStaffNum() { return mHeaderP->staffNum; }
u32 getCutTop() { return mHeaderP->cutTop; }
s32 getCutNum() { return mHeaderP->cutNum; }
u32 getDataTop() { return mHeaderP->dataTop; }
s32 getDataNum() { return mHeaderP->dataNum; }
u32 getFDataTop() { return mHeaderP->fDataTop; }
s32 getFDataNum() { return mHeaderP->fDataNum; }
u32 getIDataTop() { return mHeaderP->iDataTop; }
s32 getIDataNum() { return mHeaderP->iDataNum; }
u32 getSDataTop() { return mHeaderP->sDataTop; }
s32 getSDataNum() { return mHeaderP->sDataNum; }
void setHeaderP(event_binary_data_header* p_header) { mHeaderP = p_header; }
void setEventP(dEvDtEvent_c* p_event) { mEventP = p_event; }
void setStaffP(dEvDtStaff_c* p_staff) { mStaffP = p_staff; }
void setCutP(dEvDtCut_c* p_cut) { mCutP = p_cut; }
void setDataP(dEvDtData_c* p_data) { mDataP = p_data; }
void setFDataP(f32* p_fdata) { mFDataP = p_fdata; }
void setIDataP(int* p_idata) { mIDataP = p_idata; }
void setSDataP(char* p_sdata) { mSDataP = p_sdata; }
public:
/* 0x00 */ event_binary_data_header* mHeaderP;
+83 -18
View File
@@ -18,6 +18,13 @@ enum {
dEvtFlag_UNK8_e = 0x08,
};
enum {
dEvtMode_NONE_e,
dEvtMode_TALK_e,
dEvtMode_DEMO_e,
dEvtMode_COMPULSORY_e,
};
/* 8006FE04-8006FE54 .text __ct__14dEvt_control_cFv */
dEvt_control_c::dEvt_control_c() {
remove();
@@ -53,15 +60,15 @@ s32 dEvt_control_c::order(u16 eventType, u16 priority, u16 flag, u16 hindFlag, v
if (mOrderCount == 0) {
mFirstOrderIdx = 0;
pNewOrder->mNextOrderIdx = 0xFF;
pNewOrder->mNextOrderIdx = -1;
} else {
u32 queueIdx = mFirstOrderIdx;
s32 queueIdx = mFirstOrderIdx;
dEvt_order_c* pQueue = &mOrder[queueIdx];
if (pNewOrder->mPriority < pQueue->mPriority) {
mFirstOrderIdx = mOrderCount;
pNewOrder->mNextOrderIdx = queueIdx;
} else {
while ((queueIdx = pQueue->mNextOrderIdx) < 0xFF) {
while ((queueIdx = pQueue->mNextOrderIdx) >= 0) {
pQueue = &mOrder[queueIdx];
if (pNewOrder->mPriority < pQueue->mPriority)
break;
@@ -140,7 +147,7 @@ BOOL dEvt_control_c::talkCheck(dEvt_order_c* order) {
const char* defaultEventName = "DEFAULT_TALK";
fopAc_ac_c* actor2 = order->mActor2;
if (commonCheck(order, dEvtCnd_CANTALK_e, dEvtCmd_INTALK_e)) {
mMode = 1;
mMode = dEvtMode_TALK_e;
if (mEventId == -1) {
if (actor2 != NULL && actor2->mEvtInfo.getEventName() != NULL) {
mEventId = actor2->mEvtInfo.getEventId();
@@ -189,11 +196,13 @@ BOOL dEvt_control_c::photoCheck(dEvt_order_c* order) {
JUT_ASSERT(0x1b5, 0);
mbInPhoto = 1;
mMode = 1;
mMode = dEvtMode_TALK_e;
return TRUE;
} else if (dComIfGp_getPictureStatus() == 0) {
return FALSE;
}
return dComIfGp_getPictureStatus() ? TRUE : FALSE;
return TRUE;
}
/* 800706D8-800707C0 .text catchCheck__14dEvt_control_cFP12dEvt_order_c */
@@ -209,7 +218,7 @@ BOOL dEvt_control_c::catchCheck(dEvt_order_c* order) {
actor2->mEvtInfo.setCommand(dEvtCmd_INCATCH_e);
setParam(order);
mItemNo = dComIfGp_att_getCatchChgItem();
mMode = 2;
mMode = dEvtMode_DEMO_e;
if (mEventId != -1 && !dComIfGp_evmng_order(mEventId))
JUT_ASSERT(0x1e3, 0);
onEventFlag(0x80);
@@ -256,7 +265,7 @@ BOOL dEvt_control_c::demoCheck(dEvt_order_c* order) {
if (actor2 != NULL)
actor2->mEvtInfo.setCommand(dEvtCmd_INDEMO_e);
mMode = 2;
mMode = dEvtMode_DEMO_e;
setParam(order);
afterFlagProc(order);
@@ -295,7 +304,7 @@ BOOL dEvt_control_c::potentialCheck(dEvt_order_c* order) {
return FALSE;
actor1->mEvtInfo.setCommand(dEvtCmd_INDEMO_e);
mMode = 2;
mMode = dEvtMode_DEMO_e;
setParam(order);
afterFlagProc(order);
return TRUE;
@@ -304,7 +313,7 @@ BOOL dEvt_control_c::potentialCheck(dEvt_order_c* order) {
/* 80070B24-80070C54 .text doorCheck__14dEvt_control_cFP12dEvt_order_c */
BOOL dEvt_control_c::doorCheck(dEvt_order_c* order) {
if (commonCheck(order, dEvtCnd_CANDOOR_e, dEvtCmd_INDOOR_e)) {
mMode = 2;
mMode = dEvtMode_DEMO_e;
fopAc_ac_c* actor2 = convPId(mPt2);
if (mEventId == -1 && actor2 != NULL && actor2->mEvtInfo.getEventId() != -1)
mEventId = actor2->mEvtInfo.getEventId();
@@ -329,7 +338,7 @@ BOOL dEvt_control_c::doorCheck(dEvt_order_c* order) {
BOOL dEvt_control_c::itemCheck(dEvt_order_c* order) {
const char* defaultEventName = "DEFAULT_GETITEM";
if (commonCheck(order, dEvtCnd_CANGETITEM_e, dEvtCmd_INGETITEM_e)) {
mMode = 2;
mMode = dEvtMode_DEMO_e;
mEventId = dComIfGp_evmng_getEventIdx(defaultEventName, 0xFF);
if (!dComIfGp_evmng_order(mEventId))
JUT_ASSERT(0x2ea, 0);
@@ -342,19 +351,19 @@ BOOL dEvt_control_c::itemCheck(dEvt_order_c* order) {
/* 80070D1C-80070DD4 .text endProc__14dEvt_control_cFv */
BOOL dEvt_control_c::endProc() {
switch (mMode) {
case 1:
case dEvtMode_TALK_e:
talkEnd();
break;
case 2:
case dEvtMode_DEMO_e:
demoEnd();
break;
case 3:
case dEvtMode_COMPULSORY_e:
break;
default:
JUT_ASSERT(0x315, 0);
}
mMode = 0;
mMode = dEvtMode_NONE_e;
field_0xde = 0xFF;
mEventInfoIdx = 0xFF;
mTalkButton = 0;
@@ -405,12 +414,68 @@ BOOL dEvt_control_c::changeProc() {
/* 80070EA8-80071020 .text checkStart__14dEvt_control_cFv */
BOOL dEvt_control_c::checkStart() {
/* Nonmatching */
if (mOrderCount != 0) {
s8 idx = mFirstOrderIdx;
mOrderCount = 0;
while (true) {
dEvt_order_c* pOrder = &mOrder[idx];
idx = pOrder->mNextOrderIdx;
switch (pOrder->mEventType) {
case dEvtType_TALK_e:
if (talkCheck(pOrder))
return TRUE;
break;
case dEvtType_OTHER_e:
if (demoCheck(pOrder))
return TRUE;
break;
case dEvtType_DOOR_e:
case dEvtType_TREASURE_e:
if (doorCheck(pOrder))
return TRUE;
break;
case dEvtType_COMPULSORY_e:
mMode = dEvtMode_COMPULSORY_e;
setParam(pOrder);
return TRUE;
case dEvtType_POTENTIAL_e:
return potentialCheck(pOrder);
case dEvtType_ITEM_e:
return itemCheck(pOrder);
case dEvtType_SHOWITEM_X_e:
case dEvtType_SHOWITEM_Y_e:
case dEvtType_SHOWITEM_Z_e:
if (talkXyCheck(pOrder))
return TRUE;
break;
case dEvtType_PHOTO_e:
if (photoCheck(pOrder))
return TRUE;
break;
case dEvtType_CATCH_e:
if (catchCheck(pOrder))
return TRUE;
break;
case dEvtType_CHANGE_e:
break;
default:
JUT_ASSERT(0x39c, 0);
break;
}
if (idx < 0)
break;
}
}
return FALSE;
}
/* 80071020-80071048 .text soundProc__14dEvt_control_cFv */
BOOL dEvt_control_c::soundProc() {
if (mEventEndSound != 0 && mMode != 2)
if (mEventEndSound != 0 && mMode != dEvtMode_DEMO_e)
mEventEndSound = 0;
return TRUE;
}
@@ -485,7 +550,7 @@ s32 dEvt_control_c::moveApproval(void* actor) {
return dEvtMove_MOVE_e;
if (fopAcM_checkStatus(i_ac, fopAcStts_UNK800_e))
return dEvtMove_MOVE_e;
if ((g_dComIfG_gameInfo.play.getEvent().mMode == 3 || g_dComIfG_gameInfo.play.getEvent().mMode == 1) && fopAcM_checkStatus(i_ac, fopAcStts_BOSS_e))
if ((dComIfGp_event_getMode() == dEvtMode_COMPULSORY_e || dComIfGp_event_getMode() == dEvtMode_TALK_e) && fopAcM_checkStatus(i_ac, fopAcStts_BOSS_e))
return dEvtMove_NOMOVE_e;
if (chkEventFlag(0x80) && fopAcM_checkStatus(i_ac, fopAcStts_BOSS_e))
return dEvtMove_NOMOVE_e;
+2 -2
View File
@@ -834,8 +834,8 @@ void dEvDtStaff_c::specialProcTimekeeper() {
/* 800735BC-8007364C .text startCheck__10dEvDtCut_cFv */
s32 dEvDtCut_c::startCheck() {
for (s32 i = 0; i < (s32)ARRAY_SIZE(mFlagCheck); i++) {
int flag_id = mFlagCheck[i];
for (s32 i = 0; i < (s32)ARRAY_SIZE(mStartFlag); i++) {
int flag_id = getStartFlag(i);
if (flag_id == -1) {
return i == 0 ? -1 : 1;
}
+33 -35
View File
@@ -100,23 +100,23 @@ enum {
/* 80073A4C-80073BC0 .text getSubstance__16dEvent_manager_cFP11dEvDtData_ci */
void* dEvent_manager_c::getSubstance(dEvDtData_c* data, int type) {
/* Nonmatching */
if (data->mSubstanceIdx < 0 || data->mSubstanceSize <= 0) {
if (data->getIndex() < 0 || data->getNumber() <= 0) {
JUT_ASSERT(0x169, 0);
return NULL;
}
if (type != -1 && type != data->mSubstanceType) {
if (type != -1 && type != data->getType()) {
JUT_ASSERT(0x16e, 0);
}
switch (data->mSubstanceType) {
switch (data->getType()) {
case dEvtSub_FLOAT_e:
case dEvtSub_XYZ_e:
return &mList.mFDataP[data->mSubstanceIdx];
return mList.getFDataP(data->getIndex());
case dEvtSub_INT_e:
return &mList.mIDataP[data->mSubstanceIdx];
return mList.getIDataP(data->getIndex());
case dEvtSub_STR_e:
return &mList.mSDataP[data->mSubstanceIdx];
return mList.getSDataP(data->getIndex());
default:
JUT_ASSERT(0x182, 0);
return NULL;
@@ -128,21 +128,21 @@ void dEvent_manager_c::setData(const char* data) {
if (data == NULL)
return;
mList.mHeaderP = (event_binary_data_header*)data;
if (mList.mHeaderP->eventNum > 0)
mList.mEventP = (dEvDtEvent_c*)(data + mList.mHeaderP->eventTop);
if (mList.mHeaderP->staffNum > 0)
mList.mStaffP = (dEvDtStaff_c*)(data + mList.mHeaderP->staffTop);
if (mList.mHeaderP->cutNum > 0)
mList.mCutP = (dEvDtCut_c*)(data + mList.mHeaderP->cutTop);
if (mList.mHeaderP->dataNum > 0)
mList.mDataP = (dEvDtData_c*)(data + mList.mHeaderP->dataTop);
if (mList.mHeaderP->fDataNum > 0)
mList.mFDataP = (f32*)(data + mList.mHeaderP->fDataTop);
if (mList.mHeaderP->iDataNum > 0)
mList.mIDataP = (int*)(data + mList.mHeaderP->iDataTop);
if (mList.mHeaderP->sDataNum > 0)
mList.mSDataP = (char*)(data + mList.mHeaderP->sDataTop);
mList.setHeaderP((event_binary_data_header*)data);
if (mList.getEventNum() > 0)
mList.setEventP((dEvDtEvent_c*)(data + mList.getEventTop()));
if (mList.getStaffNum() > 0)
mList.setStaffP((dEvDtStaff_c*)(data + mList.getStaffTop()));
if (mList.getCutNum() > 0)
mList.setCutP((dEvDtCut_c*)(data + mList.getCutTop()));
if (mList.getDataNum() > 0)
mList.setDataP((dEvDtData_c*)(data + mList.getDataTop()));
if (mList.getFDataNum() > 0)
mList.setFDataP((f32*)(data + mList.getFDataTop()));
if (mList.getIDataNum() > 0)
mList.setIDataP((int*)(data + mList.getIDataTop()));
if (mList.getSDataNum() > 0)
mList.setSDataP((char*)(data + mList.getSDataTop()));
}
/* 80073C94-80073D10 .text create__16dEvent_manager_cFv */
@@ -235,7 +235,7 @@ void dEvent_manager_c::startProc(dEvDtEvent_c* event) {
dEv_seach_prm prm(NULL, 0, 0);
for (s32 i = 0; i < event->mNStaff; i++) {
s32 staffIdx = event->mStaffIdx[i];
dEvDtStaff_c* staff = &mList.mStaffP[staffIdx];
dEvDtStaff_c* staff = mList.getStaffP(staffIdx);
if (staff->mStaffType == dEvDtStaff_c::NORMAL_e) {
fopAc_ac_c* actor = specialCast(staff->mName, 1);
if (actor == NULL) {
@@ -395,11 +395,10 @@ int dEvent_manager_c::getMyStaffId(const char*, fopAc_ac_c*, int) {
/* 80074718-8007473C .text getIsAddvance__16dEvent_manager_cFi */
BOOL dEvent_manager_c::getIsAddvance(int staffIdx) {
/* Nonmatching */
if (staffIdx == -1)
return FALSE;
return mList.mStaffP[staffIdx].mAdvance;
return mList.getStaffP(staffIdx)->mAdvance;
}
/* 80074824-80074964 .text getMyActIdx__16dEvent_manager_cFiPCPCciii */
@@ -424,7 +423,7 @@ char* dEvent_manager_c::getMyNowCutName(int staffIdx) {
if (staffIdx == -1)
return NULL;
return mList.getCutP(mList.mStaffP[staffIdx].getCurrentCut())->mName;
return mList.getCutStaffCurrentCutP(staffIdx)->getName();
}
/* 800749D0-80074AA0 .text getMyDataP__16dEvent_manager_cFiPCci */
@@ -434,16 +433,16 @@ dEvDtData_c* dEvent_manager_c::getMyDataP(int staffIdx, const char* name, int mo
dEvDtCut_c* cut;
if (mode != 0)
cut = mList.getCutP(mList.mStaffP[staffIdx].getStartCut());
cut = mList.getCutStaffStartCutP(staffIdx);
else
cut = mList.getCutP(mList.mStaffP[staffIdx].getCurrentCut());
cut = mList.getCutStaffCurrentCutP(staffIdx);
s32 dataIdx = cut->mFirstDataIdx;
s32 dataIdx = cut->getDataTop();
while (dataIdx != -1) {
dEvDtData_c* data = &mList.mDataP[dataIdx];
if (strcmp(name, data->mName) == 0)
dEvDtData_c* data = mList.getDataP(dataIdx);
if (strcmp(name, data->getName()) == 0)
return data;
dataIdx = data->mNextIdx;
dataIdx = data->getNext();
}
return NULL;
@@ -471,7 +470,7 @@ void dEvent_manager_c::cutEnd(int staffIdx) {
if (staffIdx == -1)
return;
mFlag.flagSet(mList.getCutP(mList.mStaffP[staffIdx].getCurrentCut())->getFlagId());
getFlags().flagSet(mList.getCutStaffCurrentCutP(staffIdx)->getFlagId());
}
/* 80074B7C-80074BB0 .text getEventPrio__16dEvent_manager_cFs */
@@ -533,14 +532,13 @@ fopAc_ac_c* dEvent_manager_c::specialCast(const char*, int) {
/* 800750FC-80075288 .text setPrmStaff__16dEvent_manager_cFPvi */
void dEvent_manager_c::setPrmStaff(void* work, int staffIdx) {
/* Nonmatching */
dEv_seach_prm* prm = (dEv_seach_prm*)work;
dEvDtStaff_c* staff_data = &mList.mStaffP[staffIdx];
dEvDtStaff_c* staff_data = mList.getStaffP(staffIdx);
JUT_ASSERT(0x66b, staff_data);
JUT_ASSERT(0x66c, prm);
prm->mName = staff_data->getName();
dEvDtData_c* dev_prm_data = getMyDataP(staffIdx, "DEV_PRM_MASK", 0);
dEvDtData_c* dev_prm_data = getMyDataP(staffIdx, "DEV_PRM_MASK", 1);
if (dev_prm_data == NULL) {
prm->mMask = 0;
prm->mValue = 0;
+10 -10
View File
@@ -148,11 +148,11 @@ void dMetronome_c::metronomeMove() {
for (s32 i = 0; i < 21; i++) {
if (i == timer) {
if (i == 10) {
((J2DPicture *)pane_timing[i].scrn)->setBlack(JUtility::TColor(0xFF505000));
((J2DPicture *)pane_timing[i].scrn)->setWhite(JUtility::TColor(0xFF5050FF));
((J2DPicture *)pane_timing[i].pane)->setBlack(JUtility::TColor(0xFF505000));
((J2DPicture *)pane_timing[i].pane)->setWhite(JUtility::TColor(0xFF5050FF));
} else {
((J2DPicture *)pane_timing[i].scrn)->setBlack(JUtility::TColor(0xFFB90000));
((J2DPicture *)pane_timing[i].scrn)->setWhite(JUtility::TColor(0xFFB900FF));
((J2DPicture *)pane_timing[i].pane)->setBlack(JUtility::TColor(0xFFB90000));
((J2DPicture *)pane_timing[i].pane)->setWhite(JUtility::TColor(0xFFB900FF));
}
} else {
if (pane_timing[i].mUserArea != 0 && g_mnHIO.mTimingTrail) {
@@ -181,11 +181,11 @@ void dMetronome_c::metronomeMove() {
white.a = 0xFF;
}
((J2DPicture *)pane_timing[i].scrn)->setBlack(black);
((J2DPicture *)pane_timing[i].scrn)->setWhite(white);
((J2DPicture *)pane_timing[i].pane)->setBlack(black);
((J2DPicture *)pane_timing[i].pane)->setWhite(white);
} else {
((J2DPicture *)pane_timing[i].scrn)->setBlack(JUtility::TColor(0x00000000));
((J2DPicture *)pane_timing[i].scrn)->setWhite(JUtility::TColor(0xFFFFFFFF));
((J2DPicture *)pane_timing[i].pane)->setBlack(JUtility::TColor(0x00000000));
((J2DPicture *)pane_timing[i].pane)->setWhite(JUtility::TColor(0xFFFFFFFF));
}
}
}
@@ -306,7 +306,7 @@ void dMetronome_c::melodyGuideShow(s32 note, s16 no) {
// This is almost J2DPane::setBasePosition
f32 centerX = pane_i11[no].mSize.x / 2.0f;
f32 centerY = pane_i11[no].mSize.y / 2.0f;
J2DScreen * scrn = pane_i11[no].scrn;
J2DScreen* scrn = (J2DScreen*)pane_i11[no].pane;
scrn->mBasePosition.x = centerX;
scrn->mBasePosition.y = centerY;
scrn->mRotationAxis = ROTATE_Z;
@@ -452,7 +452,7 @@ void dMetronome_c::melodyFlash() {
}
for (s32 i = 0; i < mMelodyNum; i++) {
pane_pk[i].mAlphaOrig = g_mnHIO.mAlphaOrig;
pane_pk[i].mInitAlpha = g_mnHIO.mAlphaOrig;
fopMsgM_setNowAlpha(&pane_pk[i], alpha);
}
}
+1 -1
View File
@@ -188,7 +188,7 @@ s32 dPn_c::_create() {
#else
DCStoreRangeNoSync(mpTIMG, 0x3c00);
#endif
((J2DPicture*)dPn_scrn->pane.scrn)->changeTexture(mpTIMG, 0);
((J2DPicture*)dPn_scrn->pane.pane)->changeTexture(mpTIMG, 0);
mState = 3;
}
mDoExt_setCurrentHeap(oldHeap);