diff --git a/include/d/d_s_name.h b/include/d/d_s_name.h index babdbeec5..66c4159e7 100644 --- a/include/d/d_s_name.h +++ b/include/d/d_s_name.h @@ -2,6 +2,7 @@ #define D_S_NAME #include "d/d_drawlist.h" +#include "f_op/f_op_camera.h" #include "f_op/f_op_msg_mng.h" #include "f_op/f_op_scene.h" #include "m_Do/m_Do_MemCardRWmng.h" @@ -16,6 +17,10 @@ class dMCloth_c; class dName_c; class mDoDvdThd_toMainRam_c; +class dScnName_camera_c : public camera_class { +public: +}; + class dSn_HIO_c : public JORReflexible { public: dSn_HIO_c(); @@ -126,22 +131,7 @@ public: /* 0x01C4 */ request_of_phase_process_class mPhs; /* 0x01CC */ JKRHeap* heap; /* 0x01D0 */ JKRHeap* oldHeap; - /* 0x01D4 */ u8 field_0x1d4[0x29C - 0x1D4]; - /* 0x029C */ f32 field_0x29c; - /* 0x02A0 */ f32 field_0x2a0; - /* 0x02A4 */ f32 field_0x2a4; - /* 0x02A8 */ f32 field_0x2a8; - /* 0x02AC */ Vec field_0x2ac; - /* 0x02B8 */ Vec field_0x2b8; - /* 0x02C4 */ u8 field_0x2c4[0x2D0 - 0x2C4]; - /* 0x02D0 */ s16 field_0x2d0; - /* 0x02D4 */ Mtx44 field_0x2d4; - /* 0x0314 */ Mtx field_0x314; - /* 0x0344 */ Mtx field_0x344; - /* 0x0374 */ Mtx field_0x374; - /* 0x03A4 */ u8 field_0x3a4[0x3B4 - 0x3A4]; - /* 0x03B4 */ Mtx field_0x3b4; - /* 0x03E4 */ u8 field_0x3e4[0x40C - 0x3E4]; + /* 0x01D4 */ dScnName_camera_c mCamera; /* 0x040C */ JKRMemArchive* mArchive; /* 0x0410 */ mDoDvdThd_toMainRam_c* field_0x410; /* 0x0414 */ dDlst_BTICN_c btnIcon; diff --git a/include/f_op/f_op_camera.h b/include/f_op/f_op_camera.h index f1ca544ee..80dfcbfc9 100644 --- a/include/f_op/f_op_camera.h +++ b/include/f_op/f_op_camera.h @@ -17,12 +17,11 @@ public: /* 0x22E */ s8 mPrm3; /* 0x22F */ s8 field_0x22f; /* 0x230 */ csXyz mAngle; - /* 0x238 */ int field_0x238; -}; // size = 0x23C -STATIC_ASSERT(sizeof(camera_class) == 0x23C); +}; // size = 0x238 class camera_process_class : public camera_class { public: + /* 0x238 */ int field_0x238; /* 0x23C */ request_of_phase_process_class phase_request; /* 0x244 */ dCamera_c mCamera; }; // size = 0xA44 diff --git a/src/d/d_s_name.cpp b/src/d/d_s_name.cpp index 2d11a790c..5dc384eaa 100644 --- a/src/d/d_s_name.cpp +++ b/src/d/d_s_name.cpp @@ -13,6 +13,7 @@ #include "d/d_menu_save.h" #include "d/d_name.h" #include "f_ap/f_ap_game.h" +#include "f_op/f_op_camera_mng.h" #include "f_op/f_op_draw_iter.h" #include "f_op/f_op_kankyo_mng.h" #include "f_op/f_op_overlap_mng.h" @@ -112,13 +113,16 @@ cPhs_State dScnName_c::create() { oldHeap = mDoExt_setCurrentHeap(heap); mArchive = new JKRMemArchive(); mArchive->mountFixed(dComIfG_getStageRes("Stage", 0x17), JKRMEMBREAK_FLAG_UNKNOWN0); + cloth_create(); buttonIconCreate(); + dFs_c = new dFile_select_c(); JUT_ASSERT(470, dFs_c != NULL); dFs_c->field_0x0 = mArchive; savePicDatabuf = new (0x20) card_pictdata[3 * 3]; JUT_ASSERT(476, savePicDatabuf != NULL); + if (fpcM_GetName(this) == fpcNm_NAME_SCENE_e) { dFs_c->setUseType(0); dNm_c = new dName_c(); @@ -131,6 +135,7 @@ cPhs_State dScnName_c::create() { dComIfGs_setNewFile(0); dComIfGs_setNoFile(0); } + if (fpcM_GetName(this) == fpcNm_NAMEEX_SCENE_e) { dComIfGs_setClearCount(1); dFs_c->setUseType(1); @@ -141,34 +146,37 @@ cPhs_State dScnName_c::create() { dFe_c = NULL; dNm_c = NULL; } + dFs_c->_create(); + g_snHIO.mNo = mDoHIO_root.m_subroot.createChild("名前登録シーン", &g_snHIO); + dComIfGp_setWindowNum(1); dComIfGp_setWindow(0, 0.0f, 0.0f, mDoMch_render_c::getFbWidth(), mDoMch_render_c::getEfbHeight(), 0.0f, 1.0f, 0, 2); - dComIfGp_setCamera(0, (camera_class*)&field_0x1d4); - field_0x29c = 5.0f; - field_0x2a0 = 160000.0f; - field_0x2a4 = 60.0f; + dComIfGp_setCamera(0, &mCamera); + + fopCamM_SetNear(&mCamera, 5.0f); + fopCamM_SetFar(&mCamera, 160000.0f); + fopCamM_SetFovy(&mCamera, 60.0f); f32 aspect = dComIfGp_getWindow(0)->getViewPort()->mWidth / dComIfGp_getWindow(0)->getViewPort()->mHeight; - field_0x2a8 = aspect * fapGmHIO_getAspectRatio(); - field_0x2ac.x = 9377.0f; - field_0x2ac.y = 0.0; - field_0x2ac.z = 7644.0; - field_0x2b8.x = 0.0; - field_0x2b8.y = 6311.0; - field_0x2b8.z = 1000.0; - field_0x2d0 = 0; + fopCamM_SetAspect(&mCamera, aspect * fapGmHIO_getAspectRatio()); + fopCamM_SetEye(&mCamera, 9377.0f, 0.0f, 7644.0f); + fopCamM_SetCenter(&mCamera, 0.0f, 6311.0f, 1000.0f); + fopCamM_SetBank(&mCamera, 0); + dComIfGp_setPlayer(0, NULL); dComIfGd_setWindow(dComIfGp_getWindow(0)); dComIfGd_setViewport(dComIfGp_getWindow(0)->getViewPort()); - dComIfGd_setView((view_class*)&field_0x1d4); + dComIfGd_setView(&mCamera.view); mDoGph_gInf_c::offAutoForcus(); setView(); + dKy_setLight_init(); fopKyM_Create(fpcNm_KYEFF_e, 0, 0); fopKyM_Create(fpcNm_KYEFF2_e, 0, 0); fpcSCtRq_Request(fpcLy_CurrentLayer(), fpcNm_VRBOX_e, NULL, NULL, NULL); fpcSCtRq_Request(fpcLy_CurrentLayer(), fpcNm_VRBOX2_e, NULL, NULL, NULL); + g_env_light.mVrSkyColor.r = 0x50; g_env_light.mVrSkyColor.g = 0x78; g_env_light.mVrSkyColor.b = 0xff; @@ -181,8 +189,10 @@ cPhs_State dScnName_c::create() { g_env_light.mVrKasumiMaeColor.g = 0xe5; g_env_light.mVrKasumiMaeColor.b = 0xff; g_env_light.mVrKasumiMaeColor.a = 0xff; + field_0x558 = g_snHIO.field_0x5; field_0x1bb8 = 0; + if (fpcM_GetName(this) == fpcNm_NAME_SCENE_e) { mMainProc = 0; field_0x556 = 0; @@ -191,6 +201,7 @@ cPhs_State dScnName_c::create() { mMainProc = 10; mDrawProc = 3; } + JFWDisplay::getManager()->setTickRate(OS_TIMER_CLOCK / 30); } return rt; @@ -336,15 +347,16 @@ BOOL dScnName_c::execute() { /* 80230678-80230714 .text setView__10dScnName_cFv */ void dScnName_c::setView() { - C_MTXPerspective(field_0x2d4, field_0x2a4, field_0x2a8, field_0x29c, field_0x2a0); - mDoMtx_lookAt(field_0x314, &field_0x2ac, &field_0x2b8, field_0x2d0); - mDoMtx_inverse(field_0x314, field_0x344); - mDoMtx_copy(field_0x314, field_0x3b4); - field_0x3b4[0][3] = 0.0f; - field_0x3b4[1][3] = 0.0f; - field_0x3b4[2][3] = 0.0f; - j3dSys.setViewMtx(field_0x314); - mDoMtx_concatProjView(field_0x2d4, field_0x314, field_0x374); + camera_class* camera = &mCamera; + C_MTXPerspective(camera->view.mProjMtx, camera->view.mFovy, camera->view.mAspect, camera->view.mNear, camera->view.mFar); + mDoMtx_lookAt(camera->view.mViewMtx, &camera->view.mLookat.mEye, &camera->view.mLookat.mCenter, camera->view.mBank); + cMtx_inverse(camera->view.mViewMtx, camera->view.mInvViewMtx); + MTXCopy(camera->view.mViewMtx, camera->view.mViewMtxNoTrans); + camera->view.mViewMtxNoTrans[0][3] = 0.0f; + camera->view.mViewMtxNoTrans[1][3] = 0.0f; + camera->view.mViewMtxNoTrans[2][3] = 0.0f; + j3dSys.setViewMtx(camera->view.mViewMtx); + cMtx_concatProjView(camera->view.mProjMtx, camera->view.mViewMtx, camera->view.mProjViewMtx); } /* 80230714-802307EC .text draw__10dScnName_cFv */