d_meter_HIO debug (#2959)

This commit is contained in:
Jcw87
2025-12-16 06:54:05 -08:00
committed by GitHub
parent 80a6fcb319
commit 57188e25f5
15 changed files with 2986 additions and 71 deletions
+27
View File
@@ -11,6 +11,33 @@
#include "SSystem/SComponent/c_math.h"
#include "d/d_com_inf_game.h"
#if DEBUG
dMap_HIO_c g_dMap_HIO;
void dMap_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("エリアマップ パスマップ 調整項目", 0, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("初期化等は 下位フォルダ[パレット]込み です", 0, 0, NULL, -1, -1, 512, 24);
mctx->genButton("初期化", 0x4000003, 0, NULL, -1, -1, 512, 24);
mctx->genButton("HOSTIO順テキストファイル書き出し", 0x4000004, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリ順テキスト書き出し", 0x4000005, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル書き出し", 0x4000006, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル読み込み", 0x4000007, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリダンプ", 0x4000008, 0, NULL, -1, -1, 512, 24);
field_0x8.gen(mctx);
mctx->genButton("ID_INFO_ROOM_MAX_TEXEL", 0x4000009, 0, NULL, -1, -1, 512, 24);
mctx->genButton("ID_INFO_SWITCH", 0x400000a, 0, NULL, -1, -1, 512, 24);
}
dMap_HIO_c::dMap_HIO_c() {
mMySelfPointer = this;
field_0x8.set(l_list);
}
void dMap_HIO_c::listenPropertyEvent(const JORPropertyEvent*) {
// DEBUG NONMATCHING
}
#endif
f32 renderingAmap_c::getIconSize(u8 i_icon) const {
static f32 const l_iconSize[] = {
0.12f, 0.12f, 0.08f, 0.12f, 0.08f, 0.16f, 0.12f, 0.0f, 0.12f,
+169 -11
View File
@@ -6,6 +6,7 @@
#include "d/dolzel.h" // IWYU pragma: keep
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "JSystem/JHostIO/JORFile.h"
#include "JSystem/JUtility/JUTTexture.h"
#include "d/d_com_inf_game.h"
#include "d/d_map_path.h"
@@ -16,11 +17,14 @@ void dMpath_n::dTexObjAggregate_c::create() {
79, 80, 77, 78, 76, 81, 82,
};
for (int i = 0; i < 7; i++) {
mp_texObj[i] = new GXTexObj();
ResTIMG* image = (ResTIMG*)dComIfG_getObjectRes("Always", data[i]);
mDoLib_setResTimgObj(image, mp_texObj[i], 0, NULL);
for (int lp1 = 0; lp1 < 7; lp1++) {
mp_texObj[lp1] = new GXTexObj();
JUT_ASSERT(70, mp_texObj[lp1] != NULL);
ResTIMG* image = (ResTIMG*)dComIfG_getObjectRes("Always", data[lp1]);
JUT_ASSERT(72, image != NULL);
JUT_ASSERT(73, image->minFilter == GX_NEAR);
JUT_ASSERT(74, image->magFilter == GX_NEAR);
mDoLib_setResTimgObj(image, mp_texObj[lp1], 0, NULL);
}
}
@@ -31,6 +35,159 @@ void dMpath_n::dTexObjAggregate_c::remove() {
}
}
#if DEBUG
void dMpath_HIO_n::hioList_c::gen(JORMContext* mctx) {
static const char* number[] = {
"00", "01", "02", "03", "04", "05", "06", "07",
"08", "09", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30", "31",
"32", "33", "34", "35", "36", "37", "38", "39",
"40", "41", "42", "43", "44", "45", "46", "47",
"48", "49", "50", "51", "52", "53", "54", "55",
"56", "57", "58", "59", "60", "61", "62", "63",
};
// DEBUG NONMATCHING
}
void dMpath_HIO_n::hioList_c::update(JORMContext* mctx) {
// DEBUG NONMATCHING
}
u32 dMpath_HIO_n::hioList_c::addString(char* param_1, u32 param_2, u32 param_3) const {
// DEBUG NONMATCHING
}
u32 dMpath_HIO_n::hioList_c::addStringBinary(char* param_1, u32 param_2, u32 param_3) const {
// DEBUG NONMATCHING
}
BOOL dMpath_HIO_file_base_c::writeHostioTextFile(const char* param_1) {
JORFile file;
BOOL result = 0;
const char* r27 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r27 = param_1;
}
if (file.open(JORFile::EFlags_WRITE | JORFile::EFlags_UNK_0x4, r27, NULL, NULL, NULL)) {
const u32 bufSize = 4000;
u32 size = 0;
char buffer[bufSize];
memset(buffer, 0, bufSize);
size = addString(buffer, size, bufSize);
JUT_ASSERT(732, size < bufSize);
file.writeData(buffer, s16(size));
file.close();
OSReport("write append success!::%6d\n", size);
result = 1;
} else {
OSReport("write append failure!\n");
result = 0;
}
return result;
}
BOOL dMpath_HIO_file_base_c::writeBinaryTextFile(const char* param_1) {
JORFile file;
BOOL result = 0;
const char* r27 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r27 = param_1;
}
if (file.open(JORFile::EFlags_WRITE | JORFile::EFlags_UNK_0x4, r27, NULL, NULL, NULL)) {
const u32 bufSize = 10000;
u32 size = 0;
char buffer[bufSize];
memset(buffer, 0, bufSize);
size = addStringBinary(buffer, size, bufSize);
JUT_ASSERT(762, size < bufSize);
file.writeData(buffer, s16(size));
file.close();
OSReport("write append success!::%6d\n", size);
result = 1;
} else {
OSReport("write append failure!\n");
result = 0;
}
return result;
}
BOOL dMpath_HIO_file_base_c::writeBinaryFile(const char* param_1) {
JORFile file;
BOOL result = 0;
const char* r27 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r27 = param_1;
}
if (file.open(JORFile::EFlags_WRITE | JORFile::EFlags_UNK_0x4, r27, NULL, NULL, NULL)) {
const u32 bufSize = 2000;
u32 size = 0;
char buffer[bufSize];
memset(buffer, 0, bufSize);
size = addData(buffer, size, bufSize);
JUT_ASSERT(794, size < bufSize);
file.writeData(buffer, s16(size));
file.close();
OSReport("write append success!::%6d\n", size);
result = 1;
} else {
OSReport("write append failure!\n");
result = 0;
}
return result;
}
void dMpath_HIO_file_base_c::binaryDump(const void* param_1, u32 param_2) {
int r26 = 0;
u8* r30 = (u8*)param_1;
u8* r25 = r30;
int r28;
for (int i = 0; i < param_2; i++, r30++) {
r28 = i % 8;
if (r28 == 0) {
OSReport("%04x : ",i);
}
OSReport("%02x", u8(*r30));
if (r28 == 3) {
OSReport(" - ");
} else if (r28 == 7) {
OSReport("\n");
} else {
OSReport(" ");
}
}
if (r28 != 7) {
OSReport("\n");
}
OSReport("startAdr<%08x>dataSize<%d><0x%04x>\n", param_1, param_2, param_2);
}
bool dMpath_HIO_file_base_c::readBinaryFile(const char* param_1) {
JORFile file;
bool result = false;
const char* r26 = "すべてのファイル(*.*)\0*.*\0";
if (param_1) {
r26 = param_1;
}
if (file.open(JORFile::EFlags_READ, r26, NULL, NULL, NULL)) {
s32 r28 = file.getFileSize();
char* buf = new char[r28];
JUT_ASSERT(855, buf != 0);
file.readData(buf, r28);
copyReadBufToData(buf, r28);
OSReport("write read success!::%6d\n", r28);
result = true;
delete[] buf;
buf = NULL;
file.close();
} else {
OSReport("write append failure!\n");
result = false;
}
return result;
}
#endif
void dDrawPath_c::rendering(dDrawPath_c::line_class const* p_line) {
if (isDrawType(p_line->field_0x0)) {
int width = getLineWidth(p_line->field_0x1);
@@ -94,13 +251,14 @@ void dDrawPath_c::rendering(dDrawPath_c::floor_class const* p_floor) {
}
}
void dDrawPath_c::rendering(dDrawPath_c::room_class const* p_room) {
if (p_room != NULL) {
GXSetArray(GX_VA_POS, p_room->mpFloatData, 8);
floor_class* floor = p_room->mpFloor;
void dDrawPath_c::rendering(dDrawPath_c::room_class const* room) {
JUT_ASSERT(1043, room != NULL);
if (room != NULL) {
GXSetArray(GX_VA_POS, room->mpFloatData, 8);
floor_class* floor = room->mpFloor;
if (floor != NULL) {
for (int i = 0; i < p_room->mFloorNum; i++) {
for (int i = 0; i < room->mFloorNum; i++) {
if (isRenderingFloor(floor->mFloorNo)) {
rendering(floor);
}
@@ -171,7 +329,7 @@ void dRenderingFDAmap_c::setTevSettingIntensityTextureToCI() const {
GXSetNumTevStages(2);
GXSetNumChans(1);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_KONST, GX_CC_TEXC, GX_CC_C1);
+20 -2
View File
@@ -100,6 +100,19 @@ dMf_HIO_c::dMf_HIO_c() {
mMoyaAlpha = 95;
}
#if DEBUG
void dMf_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("\n■枠BTKアニメフレーム", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("フレーム数", &mBackAnimeStep, 0.0, 10.0, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("\n■枠の明度", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("アルファ", &mBaseBackAlpha, 0, 255, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("\n■もやもやBTKアニメフレーム", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("フレーム数", &mTopAnimeStep, 0.0, 10.0, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("\n■もやもやの明度", 0, 0, NULL, -1, -1, 512, 24);
mctx->genSlider("アルファ", &mMoyaAlpha, 0, 255, 0, NULL, -1, -1, 512, 24);
}
#endif
const char* dMenuFmap_getStartStageName(void* i_fieldData) {
static char virtual_stage[8];
stage_stag_info_class* stag_info = dComIfGp_getStage()->getStagInfo();
@@ -115,6 +128,7 @@ const char* dMenuFmap_getStartStageName(void* i_fieldData) {
return virtual_stage;
}
}
JUT_ASSERT(203, 0);
}
return dComIfGp_getStartStageName();
}
@@ -175,6 +189,7 @@ dMenu_Fmap_c::dMenu_Fmap_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
}
mpTalkHeap = JKRCreateExpHeap(0x32000, mpHeap, false);
JUT_ASSERT(359, mpTalkHeap != 0);
field_0x200 = 0;
mIsWarpMap = false;
@@ -323,9 +338,12 @@ dMenu_Fmap_c::~dMenu_Fmap_c() {
void dMenu_Fmap_c::_create() {
mpHeap->getTotalFreeSize();
mpDraw2DBack = new dMenu_Fmap2DBack_c();
JUT_ASSERT(594, mpDraw2DBack != NULL);
mpDraw2DBack->setRegionCursor(dComIfGp_getNowLevel() - 1);
mpDraw2DTop = new dMenu_Fmap2DTop_c(mpHeap, mpStick);
JUT_ASSERT(599, mpDraw2DTop != NULL);
mpMenuFmapMap = new dMenu_FmapMap_c();
JUT_ASSERT(603, mpMenuFmapMap != NULL);
mpMenuFmapMap->_create(dMeter2Info_get2DWidth(), dMeter2Info_get2DHeight(),
dMeter2Info_get2DWidth(), dMeter2Info_get2DHeight(), mpFmapMapRes);
@@ -2225,7 +2243,7 @@ bool dMenu_Fmap_c::readFieldMapData(void** o_data, char const* i_path, bool para
*o_data = res;
return true;
} else {
size = dLib_getExpandSizeFromAramArchive(mpMapArchive, i_path);
size = dLib_getExpandSizeFromAramArchive((JKRAramArchive*)mpMapArchive, i_path);
}
}
@@ -2326,7 +2344,7 @@ bool dMenu_Fmap_c::readRoomDzsData(void** i_data, u32 param_1, char const* i_pat
size = mpMapArchive->getExpandedResSize(res);
mpMapArchive->removeResource(res);
} else {
size = dLib_getExpandSizeFromAramArchive(mpMapArchive, path);
size = dLib_getExpandSizeFromAramArchive((JKRAramArchive*)mpMapArchive, path);
}
*i_data = mpHeap->alloc(size, 0x20);
+139 -10
View File
@@ -1,8 +1,11 @@
#include "d/dolzel.h" // IWYU pragma: keep
#include "JSystem/JHostIO/JORFile.h"
#include "JSystem/JHostIO/JORServer.h"
#include "JSystem/JUtility/JUTTexture.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_com_inf_game.h"
#include "d/d_debug_viewer.h"
#include "d/d_menu_fmap_map.h"
#include "m_Do/m_Do_graphic.h"
@@ -82,9 +85,19 @@ bool renderingFmap_c::isSwitch(dDrawPath_c::group_class const* i_group) {
int renderingFmap_c::getPointStagePathInnerNo(dMenu_Fmap_region_data_c* i_regionData,
f32 i_offsetX, f32 i_offsetY, int i_stageNo,
int* o_stageNo, int* o_roomNo) {
return i_regionData->getPointStagePathInnerNo(mPosX + i_offsetX * mCmPerTexel,
mPosZ + i_offsetY * mCmPerTexel,
i_stageNo, o_stageNo, o_roomNo);
f32 f31 = mPosX + i_offsetX * mCmPerTexel;
f32 f30 = mPosZ + i_offsetY * mCmPerTexel;
int result = i_regionData->getPointStagePathInnerNo(f31, f30, i_stageNo, o_stageNo, o_roomNo);
#if DEBUG
if (o_stageNo) {
dDbVw_Report(48, 72, "stNo%d", *o_stageNo);
}
if (o_roomNo) {
dDbVw_Report(48, 84, "rmNo%d", *o_roomNo);
}
#endif
return result;
}
void renderingFmap_c::preDrawPath() {
@@ -263,9 +276,118 @@ dDrawPath_c::room_class* renderingFmap_c::getNextRoomPointer() {
return room;
}
#if DEBUG
dMfm_HIO_c g_mfmHIO;
dMfm_HIO_c::dMfm_HIO_c() {
mMySelfPointer = this;
field_0xc.set(l_list);
field_0x18 = 0;
}
void dMfm_HIO_c::genMessage(JORMContext* mctx) {
// DEBUG NONMATCHING
mctx->genLabel("フィールドマップ パスマップ 調整項目", 0, 0, NULL, -1, -1, 512, 24);
mctx->genButton("初期化", 0x4000005, 0, NULL, -1, -1, 512, 24);
mctx->genButton("HOSTIO順テキストファイル書き出し", 0x4000006, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリ順テキスト書き出し", 0x4000007, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル書き出し", 0x4000008, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリファイル読み込み", 0x4000009, 0, NULL, -1, -1, 512, 24);
mctx->genButton("バイナリダンプ", 0x400000a, 0, NULL, -1, -1, 512, 24);
mctx->genLabel("■■リソースに入らない調整項目■■", 0, 0, NULL, -1, -1, 512, 24);
field_0xc.gen(mctx);
}
void dMfm_HIO_c::listenPropertyEvent(const JORPropertyEvent* property) {
// DEBUG NONMATCHING
JORReflexible::listenPropertyEvent(property);
if (field_0x18) {
return;
}
if (!dMfm_HIO_prm_res_dst_s::m_res) {
field_0x18 = 1;
JORMessageBox("フィールドマップを開けた状態で操作して下さい","注意!",0x10);
field_0x18 = 0;
return;
}
JORFile file;
JORMContext* mctx;
switch (reinterpret_cast<u32>(property->id)) {
case 0x4000002: {
int i = 0;
if (!field_0x8) {
return;
}
dMenu_Fmap_world_data_c* worldData = field_0x8->getWorldData();
if (!worldData) {
return;
}
for (dMenu_Fmap_region_data_c* regionData = worldData->getMenuFmapRegionTop(); regionData; regionData = regionData->getNextData()) {
int j = 0;
for (dMenu_Fmap_stage_data_c* stageData = regionData->getMenuFmapStageDataTop(); stageData; stageData = stageData->getNextData()) {
dMenu_Fmap_stage_arc_data_c* stageArc = stageData->getStageArc();
if (stageArc) {
OSReport("R<%2d>S<%2d> SaveTable<%2d>ArriveSaveTable<%2d>\n", i, j, stageArc->getSaveTableNo(), stageArc->getVisitedRoomSaveTableNo());
}
dMenu_Fmap_room_data_c* roomData = stageData->getFmapRoomDataTop();
for (int k = 0; roomData; k++) {
roomData = roomData->getNextData();
}
j++;
}
i++;
}
break;
}
case 0x4000006:
writeHostioTextFile(NULL);
break;
case 0x4000007:
writeBinaryTextFile(NULL);
break;
case 0x4000008:
writeBinaryFile(NULL);
break;
case 0x4000009:
readBinaryFile(NULL);
mctx = attachJORMContext(8);
mctx->startUpdateNode(this);
field_0xc.update(mctx);
mctx->endUpdateNode();
releaseJORMContext(mctx);
break;
case 0x4000005:
field_0xc.copySrcToHio();
mctx = attachJORMContext(8);
mctx->startUpdateNode(this);
field_0xc.update(mctx);
mctx->endUpdateNode();
releaseJORMContext(mctx);
break;
case 0x400000a:
binaryDump(dMfm_HIO_prm_res_dst_s::m_res, 366);
break;
}
field_0xc.copyHioToDst();
}
void dMfm_HIO_list_c::copySrcToHio() {
// DEBUG NONMATCHING
}
void dMfm_HIO_list_c::copyHioToDst() {
// DEBUG NONMATCHING
}
void dMfm_HIO_list_c::copyBufToHio(const char*) {
// DEBUG NONMATCHING
}
#endif
void dMenu_FmapMap_c::setFmapPaletteColor(renderingFmap_c::palette_e i_palette, u8 i_r,
u8 i_g, u8 i_b, u8 i_a) {
int color;
JUT_ASSERT(1835, m_palette != NULL);
if (i_a >= 0xe0) {
color = ((i_r & 0xf8) << 7) | ((i_g & 0xf8) << 2) | (i_b >> 3) | (1 << 15);
} else {
@@ -286,13 +408,16 @@ void dMenu_FmapMap_c::setFmapPaletteColor(renderingFmap_c::palette_e i_palette,
}
bool dMenu_FmapMap_c::isFlashRoomNoCheck(int i_roomNo) const {
JUT_ASSERT(1874, mp_roomList != NULL);
JUT_ASSERT(1875, m_roomListNumber != NULL);
bool ret = false;
u8* ptr = mFlashRooms;
for (int i = 0; i < mFlashRoomCount; ptr++, i++) {
u8* ptr = mp_roomList;
for (int i = 0; i < m_roomListNumber; i++) {
if (*ptr == i_roomNo) {
ret = true;
break;
}
ptr++;
}
return ret;
}
@@ -337,8 +462,12 @@ dMenu_FmapMap_c::dMenu_FmapMap_c() {
mLastStageCursor = 0;
mRegionCursor = 0;
mFlashTimer = 0;
mFlashRooms = NULL;
mFlashRoomCount = 0;
mp_roomList = NULL;
m_roomListNumber = 0;
#if DEBUG
dMfm_HIO_prm_res_dst_s::m_res = NULL;
mMySelfPointer = this;
#endif
}
@@ -444,8 +573,8 @@ void dMenu_FmapMap_c::setFlashOn(int i_regionNo, int i_stageNo, u8* i_rooms, int
mFlash = true;
mRegionCursor = i_regionNo;
mStageCursor = (u8)i_stageNo;
mFlashRooms = i_rooms;
mFlashRoomCount = i_roomCount;
mp_roomList = i_rooms;
m_roomListNumber = i_roomCount;
}
const GXColor* dMenu_FmapMap_c::getLineColor(int param_0, int param_1) {
@@ -510,7 +639,7 @@ const GXColor* dMenu_FmapMap_c::getColor(int param_0) {
const GXColor* list = l_dungeon_onColor;
if (mFlash && mRegionCursor == getNowDrawRegionNo() && mStageNo == mStageCursor) {
if (mFlashRooms == NULL) {
if (mp_roomList == NULL) {
list = l_dungeon_pointColor;
} else if (isFlashRoomNoCheck(mRoomNo)) {
list = l_dungeon_pointColor;
+2371 -32
View File
File diff suppressed because it is too large Load Diff
+57
View File
@@ -15,6 +15,58 @@
#include "f_op/f_op_overlap_mng.h"
#include "m_Do/m_Do_controller_pad.h"
#if DEBUG
dMeter_map_HIO_c g_meter_map;
dMeter_map_HIO_c::dMeter_map_HIO_c() {
dMeter_map_HIO_c::mMySelfPointer = this;
field_0x34 = dMap_HIO_c::mMySelfPointer;
field_0x5 = 0;
field_0x6 = 0;
field_0x8 = -38;
field_0xa = 380;
field_0xc = 35;
field_0xe = 380;
field_0x10 = 35;
field_0x12 = 421;
field_0x14 = -36;
field_0x16 = 0;
field_0x17 = 0;
field_0x18 = 1;
field_0x1a = 144;
field_0x1c = 144;
field_0x1e = 216;
field_0x20 = 216;
field_0x22 = 96;
field_0x24 = 96;
field_0x26 = 0;
field_0x2a = 144;
field_0x2c = 0;
field_0x2d = 180;
field_0x2e = 0;
field_0x2f = 0;
field_0x30 = 144;
field_0x32 = 0;
field_0x33 = 0;
}
void dMeter_map_HIO_c::genMessage(JORMContext* mctx) {
// DEBUG NONMATCHING
}
void dMeter_map_HIO_c::listenPropertyEvent(const JORPropertyEvent*) {
// DEBUG NONMATCHING
}
void dMeter_map_HIO_c::update() {
JORMContext* mctx = attachJORMContext(8);
mctx->startUpdateNode(this);
mctx->updateRadioButton(2, &field_0x18, 1);
mctx->endUpdateNode();
releaseJORMContext(mctx);
}
#endif
bool dMeterMap_c::isEnableDispMap() {
bool minimapEnable = false;
stage_stag_info_class* pstag = dComIfGp_getStage()->getStagInfo();
@@ -150,6 +202,11 @@ bool dMeterMap_c::isMapOpenCheck() {
}
dMeterMap_c::dMeterMap_c(J2DScreen* i_scrn) {
#if DEBUG
field_0x4_debug = 0;
field_0x8_debug = 0;
dMeterMap_c::mMySelfPointer = this;
#endif
_create(i_scrn);
}