mirror of https://github.com/zeldaret/tp.git
874 lines
30 KiB
C++
874 lines
30 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/meter/d_meter_map
|
|
//
|
|
|
|
#include "d/meter/d_meter_map.h"
|
|
#include "Z2AudioLib/Z2AudioMgr.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/menu/d_menu_window.h"
|
|
#include "d/msg/d_msg_object.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
#include "f_op/f_op_overlap_mng.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void isEnableDispMap__11dMeterMap_cFv();
|
|
extern "C" void getMapDispSizeTypeNo__11dMeterMap_cFv();
|
|
extern "C" void isEnableDispMapAndMapDispSizeTypeNo__11dMeterMap_cFv();
|
|
extern "C" void getMapDispEdgeBottomY_Layout__11dMeterMap_cFv();
|
|
extern "C" void isEventRunCheck__11dMeterMap_cFv();
|
|
extern "C" void getMapDispEdgeLeftX_Layout__11dMeterMap_cFv();
|
|
extern "C" void getMapDispEdgeTop__11dMeterMap_cFv();
|
|
extern "C" bool getDispPosInside_OffsetX__11dMeterMap_cFv();
|
|
extern "C" void getDispPosOutSide_OffsetX__11dMeterMap_cFv();
|
|
extern "C" void setDispPosInsideFlg_SE_On__11dMeterMap_cFv();
|
|
extern "C" void setDispPosOutsideFlg_SE_On__11dMeterMap_cFv();
|
|
extern "C" void setMapAlpha__11dMeterMap_cFUc();
|
|
extern "C" void isMapOpenCheck__11dMeterMap_cFv();
|
|
extern "C" void __ct__11dMeterMap_cFP9J2DScreen();
|
|
extern "C" void __dt__11dMeterMap_cFv();
|
|
extern "C" void _create__11dMeterMap_cFP9J2DScreen();
|
|
extern "C" void _delete__11dMeterMap_cFv();
|
|
extern "C" void _move__11dMeterMap_cFUl();
|
|
extern "C" void _draw__11dMeterMap_cFv();
|
|
extern "C" void draw__11dMeterMap_cFv();
|
|
extern "C" void ctrlShowMap__11dMeterMap_cFv();
|
|
extern "C" void checkMoveStatus__11dMeterMap_cFv();
|
|
extern "C" void isShow__11dMeterMap_cFUl();
|
|
extern "C" void isFmapScreen__11dMeterMap_cFv();
|
|
extern "C" void isDmapScreen__11dMeterMap_cFv();
|
|
extern "C" void meter_map_move__11dMeterMap_cFUl();
|
|
extern "C" void keyCheck__11dMeterMap_cFv();
|
|
extern "C" extern char const* const d_meter_d_meter_map__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void fopOvlpM_IsDoingReq__Fv();
|
|
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
|
|
extern "C" void __ct__6dMap_cFiiii();
|
|
extern "C" void _move__6dMap_cFffif();
|
|
extern "C" void _draw__6dMap_cFv();
|
|
extern "C" void dComIfGp_mapShow__Fv();
|
|
extern "C" void dComIfGp_mapHide__Fv();
|
|
extern "C" void dComIfGp_checkMapShow__Fv();
|
|
extern "C" void isDungeonItem__12dSv_memBit_cCFi();
|
|
extern "C" void onEventBit__11dSv_event_cFUs();
|
|
extern "C" void isEventBit__11dSv_event_cCFUs();
|
|
extern "C" void getMapPlayerPos__10dMapInfo_nFv();
|
|
extern "C" void isExistMapPathData__8dMpath_cFv();
|
|
extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
|
|
extern "C" void dMw_LEFT_TRIGGER__Fv();
|
|
extern "C" void dMw_RIGHT_TRIGGER__Fv();
|
|
extern "C" void dMeter2Info_set2DVibration__Fv();
|
|
extern "C" void getStatus__12dMsgObject_cFv();
|
|
extern "C" void cLib_addCalcAngleS__FPsssss();
|
|
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
|
extern "C" void* __nw__FUl();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void __ct__10J2DPictureFPC7ResTIMG();
|
|
extern "C" void _savegpr_27();
|
|
extern "C" void _savegpr_28();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_27();
|
|
extern "C" void _restgpr_28();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" extern void* __vt__12dDlst_base_c[3];
|
|
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
|
|
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
|
|
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
inline BOOL dComIfGp_event_runCheck() {
|
|
return g_dComIfG_gameInfo.play.getEvent().runCheck();
|
|
}
|
|
|
|
inline u16 dComIfGp_event_checkHind(u16 flag) {
|
|
if (!dComIfGp_event_runCheck()) {
|
|
return false;
|
|
}
|
|
return g_dComIfG_gameInfo.play.getEvent().checkHind(flag);
|
|
}
|
|
|
|
inline u16 dComIfGp_event_chkEventFlag(u16 flag) {
|
|
return g_dComIfG_gameInfo.play.getEvent().chkEventFlag(flag);
|
|
}
|
|
|
|
inline dStage_stageDt_c* dComIfGp_getStage() {
|
|
return &g_dComIfG_gameInfo.play.getStage();
|
|
}
|
|
|
|
inline BOOL dComIfGs_isEventBit(u16 id) {
|
|
return g_dComIfG_gameInfo.info.getEvent().isEventBit(id);
|
|
}
|
|
|
|
/* 8020D49C-8020D528 207DDC 008C+00 1/1 0/0 0/0 .text isEnableDispMap__11dMeterMap_cFv */
|
|
bool dMeterMap_c::isEnableDispMap() {
|
|
bool minimapEnable = false;
|
|
stage_stag_info_class* pstag = dComIfGp_getStage()->getStagInfo();
|
|
|
|
if (pstag != NULL && getMapDispSizeTypeNo() != 0) {
|
|
minimapEnable = dStage_stagInfo_GetMiniMap(pstag) != 0;
|
|
}
|
|
|
|
bool enableMap = false;
|
|
if (minimapEnable && dMpath_c::isExistMapPathData()) {
|
|
enableMap = true;
|
|
}
|
|
return enableMap;
|
|
}
|
|
|
|
/* 8020D528-8020D650 207E68 0128+00 3/3 0/0 0/0 .text getMapDispSizeTypeNo__11dMeterMap_cFv */
|
|
// stayNo load block in wrong order
|
|
#ifdef NONMATCHING
|
|
int dMeterMap_c::getMapDispSizeTypeNo() {
|
|
int uvar6 = 7;
|
|
int stayNo = dComIfGp_roomControl_getStayNo();
|
|
|
|
dStage_FileList_dt_c* fList =
|
|
dComIfGp_roomControl_getStatusRoomDt(stayNo)->mRoomDt.getFileListInfo();
|
|
if (fList != NULL) {
|
|
uvar6 = dStage_FileList_dt_getMiniMap(fList);
|
|
}
|
|
|
|
u32 stageMapSizeTypeNo = dStage_stagInfo_GetMiniMap(dComIfGp_getStage()->getStagInfo());
|
|
s32 mapDispType = dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo());
|
|
|
|
if (mapDispType == 1) {
|
|
uvar6 = 1;
|
|
} else if (uvar6 == 7) {
|
|
uvar6 = stageMapSizeTypeNo;
|
|
}
|
|
|
|
int mapDispSizeType = 0;
|
|
switch (uvar6) {
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
if (mapDispType == 1) {
|
|
mapDispSizeType = 4;
|
|
} else {
|
|
mapDispSizeType = 1;
|
|
}
|
|
break;
|
|
case 2:
|
|
if (mapDispType != 1) {
|
|
mapDispSizeType = 2;
|
|
}
|
|
break;
|
|
case 3:
|
|
if (mapDispType == 1) {
|
|
mapDispSizeType = 5;
|
|
} else {
|
|
mapDispSizeType = 3;
|
|
}
|
|
break;
|
|
}
|
|
|
|
return mapDispSizeType;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm int dMeterMap_c::getMapDispSizeTypeNo() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/getMapDispSizeTypeNo__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020D650-8020D690 207F90 0040+00 5/5 3/3 0/0 .text
|
|
* isEnableDispMapAndMapDispSizeTypeNo__11dMeterMap_cFv */
|
|
bool dMeterMap_c::isEnableDispMapAndMapDispSizeTypeNo() {
|
|
if (isEnableDispMap() && getMapDispSizeTypeNo()) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/* 8020D690-8020D698 207FD0 0008+00 2/2 0/0 0/0 .text
|
|
* getMapDispEdgeBottomY_Layout__11dMeterMap_cFv */
|
|
f32 dMeterMap_c::getMapDispEdgeBottomY_Layout() {
|
|
return 421.0f;
|
|
}
|
|
|
|
/* 8020D698-8020D72C 207FD8 0094+00 2/2 0/0 0/0 .text isEventRunCheck__11dMeterMap_cFv */
|
|
// missing gameinfo load
|
|
#ifdef NONMATCHING
|
|
bool dMeterMap_c::isEventRunCheck() {
|
|
if (dComIfGp_event_runCheck()) {
|
|
return true;
|
|
} else if (dMsgObject_isTalkNowCheck()) {
|
|
return true;
|
|
}
|
|
|
|
return dComIfGp_event_runCheck() != field_0x30 ? 1 : 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm bool dMeterMap_c::isEventRunCheck() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/isEventRunCheck__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454828-80454830 002E28 0008+00 3/3 0/0 0/0 .sdata2 @4100 */
|
|
SECTION_SDATA2 static f64 lit_4100 = 4503601774854144.0 /* cast s32 to float */;
|
|
|
|
/* 8020D72C-8020D75C 20806C 0030+00 2/2 0/0 0/0 .text getMapDispEdgeLeftX_Layout__11dMeterMap_cFv
|
|
*/
|
|
#ifdef NONMATCHING
|
|
// matches with literal
|
|
f32 dMeterMap_c::getMapDispEdgeLeftX_Layout() {
|
|
return field_0x28 + 35;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm f32 dMeterMap_c::getMapDispEdgeLeftX_Layout() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/getMapDispEdgeLeftX_Layout__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454830-80454834 002E30 0004+00 2/2 0/0 0/0 .sdata2 @4128 */
|
|
SECTION_SDATA2 static u8 lit_4128[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
/* 80454834-80454838 002E34 0004+00 5/5 0/0 0/0 .sdata2 @4129 */
|
|
SECTION_SDATA2 static f32 lit_4129 = 1.0f;
|
|
|
|
/* 80454838-80454840 002E38 0008+00 1/1 0/0 0/0 .sdata2 @4131 */
|
|
SECTION_SDATA2 static f64 lit_4131 = 4503599627370496.0 /* cast u32 to float */;
|
|
|
|
/* 8020D75C-8020D7E4 20809C 0088+00 0/0 1/1 0/0 .text getMapDispEdgeTop__11dMeterMap_cFv
|
|
*/
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
f32 dMeterMap_c::getMapDispEdgeTop() {
|
|
f32 tmp = 0.0f;
|
|
if (mMap != NULL) {
|
|
tmp = mMap->getTexSizeY() -
|
|
mMap->getTexelPerCm() * (mMap->getPackZ() - mMap->getPackPlusZ()) -
|
|
mMap->getTopEdgePlus();
|
|
}
|
|
return getMapDispEdgeBottomY_Layout() - tmp;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm f32 dMeterMap_c::getMapDispEdgeTop() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/getMapDispEdgeTop__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020D7E4-8020D7EC 208124 0008+00 2/2 0/0 0/0 .text getDispPosInside_OffsetX__11dMeterMap_cFv */
|
|
s16 dMeterMap_c::getDispPosInside_OffsetX() {
|
|
return 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454840-80454844 002E40 0004+00 1/1 0/0 0/0 .sdata2 @4159 */
|
|
SECTION_SDATA2 static f32 lit_4159 = -36.0f;
|
|
|
|
/* 8020D7EC-8020D874 20812C 0088+00 2/2 0/0 0/0 .text getDispPosOutSide_OffsetX__11dMeterMap_cFv
|
|
*/
|
|
// calculation order is wrong
|
|
#ifdef NONMATCHING
|
|
s16 dMeterMap_c::getDispPosOutSide_OffsetX() {
|
|
f32 dvar3 = -36.0f - mSizeW;
|
|
f32 tmp = 0.0f;
|
|
if (mMap != NULL) {
|
|
tmp = (mMap->getTexelPerCm() * mMap->getPackX()) +
|
|
(mMap->getRightEdgePlus() + (mMap->getTexelPerCm() * mMap->getPackPlusZ()));
|
|
tmp += dvar3;
|
|
}
|
|
return tmp - getMapDispEdgeLeftX_Layout();
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm s16 dMeterMap_c::getDispPosOutSide_OffsetX() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/getDispPosOutSide_OffsetX__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020D874-8020D8BC 2081B4 0048+00 2/2 2/2 0/0 .text setDispPosInsideFlg_SE_On__11dMeterMap_cFv
|
|
*/
|
|
void dMeterMap_c::setDispPosInsideFlg_SE_On() {
|
|
if (isEnableDispMapAndMapDispSizeTypeNo()) {
|
|
dComIfGp_mapShow();
|
|
field_0x2d = 1;
|
|
field_0x2e = 7;
|
|
}
|
|
}
|
|
|
|
/* 8020D8BC-8020D8F8 2081FC 003C+00 1/1 2/2 0/0 .text setDispPosOutsideFlg_SE_On__11dMeterMap_cFv
|
|
*/
|
|
void dMeterMap_c::setDispPosOutsideFlg_SE_On() {
|
|
dComIfGp_mapHide();
|
|
field_0x2d = 0;
|
|
field_0x2e = 7;
|
|
}
|
|
|
|
/* 8020D8F8-8020D900 -00001 0008+00 0/0 0/0 0/0 .text setMapAlpha__11dMeterMap_cFUc */
|
|
void dMeterMap_c::setMapAlpha(u8 alpha) {
|
|
mMapAlpha = alpha;
|
|
}
|
|
|
|
/* 8020D900-8020D948 208240 0048+00 3/3 1/1 0/0 .text isMapOpenCheck__11dMeterMap_cFv */
|
|
bool dMeterMap_c::isMapOpenCheck() {
|
|
return dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 7 ? false : true;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 803BF2D8-803BF2F8 -00001 0020+00 1/1 0/0 0/0 .data @4516 */
|
|
SECTION_DATA static void* lit_4516[8] = {
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x1C8),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x184),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x1B4),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x19C),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x1C8),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x1A8),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x1C0),
|
|
(void*)(((char*)ctrlShowMap__11dMeterMap_cFv) + 0x190),
|
|
};
|
|
|
|
/* 8020D948-8020D990 208288 0048+00 0/0 1/1 0/0 .text __ct__11dMeterMap_cFP9J2DScreen */
|
|
dMeterMap_c::dMeterMap_c(J2DScreen* p_scrn) {
|
|
_create(p_scrn);
|
|
}
|
|
|
|
/* 8020D990-8020D9EC 2082D0 005C+00 1/0 0/0 0/0 .text __dt__11dMeterMap_cFv */
|
|
dMeterMap_c::~dMeterMap_c() {
|
|
_delete();
|
|
}
|
|
|
|
/* 8020D9EC-8020DC50 20832C 0264+00 1/1 0/0 0/0 .text _create__11dMeterMap_cFP9J2DScreen
|
|
*/
|
|
// matches with auto gen literals
|
|
#ifdef NONMATCHING
|
|
void dMeterMap_c::_create(J2DScreen* param_0) {
|
|
s32 sizeX;
|
|
s32 sizeY;
|
|
s32 dispSizeW;
|
|
s32 dispSizeH;
|
|
|
|
getMapDispSizeTypeNo();
|
|
switch (getMapDispSizeTypeNo()) {
|
|
case 1:
|
|
dispSizeW = 216;
|
|
dispSizeH = 216;
|
|
sizeX = 144;
|
|
sizeY = 144;
|
|
break;
|
|
case 2:
|
|
dispSizeW = 216;
|
|
dispSizeH = 216;
|
|
sizeX = 216;
|
|
sizeY = 216;
|
|
break;
|
|
case 3:
|
|
dispSizeW = 216;
|
|
dispSizeH = 216;
|
|
sizeX = 96;
|
|
sizeY = 96;
|
|
break;
|
|
case 0:
|
|
case 4:
|
|
dispSizeW = 144;
|
|
dispSizeH = 144;
|
|
sizeX = 144;
|
|
sizeY = 144;
|
|
break;
|
|
case 5:
|
|
dispSizeW = 144;
|
|
dispSizeH = 144;
|
|
sizeX = 96;
|
|
sizeY = 96;
|
|
break;
|
|
}
|
|
|
|
mSizeW = (s16)sizeX;
|
|
mSizeH = (s16)sizeY;
|
|
|
|
mMap = new dMap_c(sizeX, sizeY, dispSizeW, dispSizeH);
|
|
mMapJ2DPicture = new J2DPicture(mMap->getResTIMGPointer());
|
|
|
|
mIsCompass = dComIfGs_isDungeonItemCompass();
|
|
mIsMap = dComIfGs_isDungeonItemMap();
|
|
field_0x14 = 0;
|
|
field_0x2a = 0;
|
|
|
|
if (dComIfGp_checkMapShow()) {
|
|
field_0x2d = 1;
|
|
|
|
if (!isEnableDispMapAndMapDispSizeTypeNo()) {
|
|
field_0x2d = 0;
|
|
}
|
|
|
|
if (!isMapOpenCheck()) {
|
|
field_0x2d = 0;
|
|
}
|
|
} else {
|
|
field_0x2d = 0;
|
|
}
|
|
|
|
if (field_0x2d != 0) {
|
|
field_0x2d = 1;
|
|
field_0x28 = getDispPosInside_OffsetX();
|
|
dMeter2Info_setMapStatus(1);
|
|
} else {
|
|
field_0x2d = 0;
|
|
field_0x28 = getDispPosOutSide_OffsetX();
|
|
dMeter2Info_setMapStatus(0);
|
|
}
|
|
|
|
field_0x2e = 0;
|
|
field_0x28 = 0;
|
|
field_0x30 = 0;
|
|
field_0x2b = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118]);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMeterMap_c::_create(J2DScreen* param_0) {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/_create__11dMeterMap_cFP9J2DScreen.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020DC50-8020DCE4 208590 0094+00 1/1 0/0 0/0 .text _delete__11dMeterMap_cFv */
|
|
void dMeterMap_c::_delete() {
|
|
if (mMapJ2DPicture != NULL) {
|
|
delete mMapJ2DPicture;
|
|
}
|
|
|
|
if (mMap != NULL) {
|
|
delete mMap;
|
|
}
|
|
|
|
if (isEnableDispMapAndMapDispSizeTypeNo()) {
|
|
if (field_0x2d != 0) {
|
|
dComIfGp_mapShow();
|
|
} else {
|
|
dComIfGp_mapHide();
|
|
}
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80398208-80398208 024868 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
#pragma push
|
|
#pragma force_active on
|
|
SECTION_DEAD static char const* const stringBase_80398208 = "F_SP115";
|
|
#pragma pop
|
|
|
|
/* 8020DCE4-8020DF1C 208624 0238+00 0/0 1/1 0/0 .text _move__11dMeterMap_cFUl */
|
|
// just regalloc
|
|
#ifdef NONMATCHING
|
|
void dMeterMap_c::_move(u32 param_0) {
|
|
if (!field_0x2b && dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118])) {
|
|
if (strcmp(dComIfGp_getStartStageName(), "F_SP115") == 0) {
|
|
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[119]);
|
|
} else {
|
|
field_0x2b = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118]);
|
|
dMeter2Info_setPauseStatus(2);
|
|
}
|
|
}
|
|
int stayNo = dComIfGp_roomControl_getStayNo();
|
|
|
|
field_0x14 = param_0;
|
|
field_0x2a = checkMoveStatus();
|
|
|
|
if (field_0x2a == 1 || field_0x2a == 2 || field_0x2a == 3 ||
|
|
dMeter2Info_getPauseStatus() == 7 || dMeter2Info_getPauseStatus() == 2 ||
|
|
dMeter2Info_getPauseStatus() == 6 || dMeter2Info_getPauseStatus() == 4 ||
|
|
dMeter2Info_getPauseStatus() == 3 || dMeter2Info_getPauseStatus() == 5) {
|
|
ctrlShowMap();
|
|
}
|
|
|
|
if (field_0x2d != 0) {
|
|
if (field_0x28 != getDispPosInside_OffsetX()) {
|
|
cLib_addCalcAngleS(&field_0x28, getDispPosInside_OffsetX(), 2, 60, 10);
|
|
}
|
|
} else {
|
|
cLib_addCalcAngleS(&field_0x28, getDispPosOutSide_OffsetX(), 2, 60, 10);
|
|
}
|
|
|
|
Vec map_pos = dMapInfo_n::getMapPlayerPos();
|
|
|
|
field_0x18 = field_0x28 + getMapDispEdgeLeftX_Layout();
|
|
field_0x1c = getMapDispEdgeBottomY_Layout() - mSizeH;
|
|
|
|
mMap->_move(map_pos.x, map_pos.z, stayNo, map_pos.y);
|
|
field_0x30 = dComIfGp_event_runCheck();
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMeterMap_c::_move(u32 param_0) {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/_move__11dMeterMap_cFUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020DF1C-8020DF68 20885C 004C+00 0/0 1/1 0/0 .text _draw__11dMeterMap_cFv */
|
|
void dMeterMap_c::_draw() {
|
|
mMap->_draw();
|
|
dComIfGd_set2DOpa(this);
|
|
}
|
|
|
|
/* 8020DF68-8020E070 2088A8 0108+00 1/0 0/0 0/0 .text draw__11dMeterMap_cFv */
|
|
void dMeterMap_c::draw() {
|
|
if (mMap != NULL && mMap->isDraw()) {
|
|
dComIfGp_getCurrentGrafPort()->setup2D();
|
|
f32 sizeX = mSizeW;
|
|
f32 sizeY = mSizeH;
|
|
f32 tmp2 = field_0x18;
|
|
f32 tmp3 = field_0x1c;
|
|
|
|
mMapJ2DPicture->setAlpha(mMapAlpha);
|
|
mMapJ2DPicture->draw(tmp2, tmp3, sizeX, sizeY, false, false, false);
|
|
mMapJ2DPicture->calcMtx();
|
|
}
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80454844-80454848 002E44 0004+00 3/3 0/0 0/0 .sdata2 @4515 */
|
|
SECTION_SDATA2 static f32 lit_4515 = -1.0f;
|
|
|
|
/* 8020E070-8020E45C 2089B0 03EC+00 2/1 0/0 0/0 .text ctrlShowMap__11dMeterMap_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void dMeterMap_c::ctrlShowMap() {
|
|
if (!dMeter2Info_isGameStatus(1)) {
|
|
if (!isMapOpenCheck() && !isEventRunCheck()) {
|
|
if (dMw_LEFT_TRIGGER() || dMw_RIGHT_TRIGGER()) {
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
}
|
|
} else {
|
|
if (dMeter2Info_getPauseStatus() == 1 || dMeter2Info_getPauseStatus() == 7 ||
|
|
dMeter2Info_getPauseStatus() == 3 || dMeter2Info_getPauseStatus() == 5 ||
|
|
dMeter2Info_getPauseStatus() == 2 || dMeter2Info_getPauseStatus() == 6) {
|
|
if (dMeter2Info_getMapStatus() == 0 && field_0x2d == 0) {
|
|
setDispPosInsideFlg_SE_On();
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
dMeter2Info_setMapStatus(1);
|
|
}
|
|
|
|
if (dMeter2Info_getMapStatus() == 1 && field_0x2d != 0 && isFmapScreen()) {
|
|
switch (dMeter2Info_getPauseStatus()) {
|
|
case 1:
|
|
dMeter2Info_setMapStatus(4);
|
|
break;
|
|
case 2:
|
|
dMeter2Info_setMapStatus(7);
|
|
break;
|
|
case 3:
|
|
dMeter2Info_setMapStatus(8);
|
|
break;
|
|
case 5:
|
|
dMeter2Info_setMapStatus(9);
|
|
break;
|
|
case 6:
|
|
dMeter2Info_setMapStatus(5);
|
|
break;
|
|
case 7:
|
|
dMeter2Info_setMapStatus(3);
|
|
break;
|
|
}
|
|
dMeter2Info_setMapKeyDirection(0x400);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
dMeter2Info_resetPauseStatus();
|
|
} else {
|
|
if (dMeter2Info_getPauseStatus() == 4) {
|
|
dMeter2Info_resetPauseStatus();
|
|
if (isDmapScreen()) {
|
|
if (dMeter2Info_getMapStatus() == 0 && field_0x2d == 0) {
|
|
setDispPosInsideFlg_SE_On();
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f,
|
|
1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
dMeter2Info_setMapStatus(1);
|
|
}
|
|
|
|
if (dMeter2Info_getMapStatus() == 1 && field_0x2d != 0) {
|
|
dMeter2Info_setMapStatus(6);
|
|
dMeter2Info_setMapKeyDirection(0x400);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f,
|
|
1.0f, -1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
}
|
|
|
|
} else if (!mDoCPd_c::getTrigUp(0) && !mDoCPd_c::getTrigDown(0)) {
|
|
keyCheck();
|
|
}
|
|
}
|
|
|
|
if (mIsCompass != dComIfGs_isDungeonItemCompass()) {
|
|
if (!isDispPosInsideFlg()) {
|
|
setDispPosInsideFlg_SE_On();
|
|
dMeter2Info_setMapStatus(1);
|
|
}
|
|
mIsCompass = dComIfGs_isDungeonItemCompass();
|
|
}
|
|
|
|
if (mIsMap != dComIfGs_isDungeonItemMap()) {
|
|
if (!isDispPosInsideFlg()) {
|
|
setDispPosInsideFlg_SE_On();
|
|
dMeter2Info_setMapStatus(1);
|
|
}
|
|
mIsMap = dComIfGs_isDungeonItemMap();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMeterMap_c::ctrlShowMap() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/ctrlShowMap__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020E45C-8020E4C8 208D9C 006C+00 1/1 0/0 0/0 .text checkMoveStatus__11dMeterMap_cFv */
|
|
// field_0x2d compare is weird
|
|
#ifdef NONMATCHING
|
|
u8 dMeterMap_c::checkMoveStatus() {
|
|
if (isShow(field_0x14)) {
|
|
if (isEnableDispMapAndMapDispSizeTypeNo()) {
|
|
if (isDispPosInsideFlg()) {
|
|
return 1;
|
|
}
|
|
return 2;
|
|
}
|
|
return 3;
|
|
}
|
|
return 0;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm u8 dMeterMap_c::checkMoveStatus() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/checkMoveStatus__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020E4C8-8020E620 208E08 0158+00 2/2 0/0 0/0 .text isShow__11dMeterMap_cFUl */
|
|
// extra gameinfo label load for dComIfGp_event_checkHind
|
|
#ifdef NONMATCHING
|
|
bool dMeterMap_c::isShow(u32 param_0) {
|
|
if ((param_0 & 0x4000) || fopOvlpM_IsDoingReq() ||
|
|
((param_0 & 0x40) && dComIfGp_event_checkHind(0x100) &&
|
|
!dComIfGp_event_chkEventFlag(0x40)) ||
|
|
daPy_getPlayerActorClass()->i_getSumouMode() || (param_0 & 0x200000) || (param_0 & 0x100) ||
|
|
(param_0 & 0x80) || (param_0 & 0x40000000) || (param_0 & 0x1000) || (param_0 & 0x100000) ||
|
|
(param_0 & 0x20000) || (param_0 & 8) || (param_0 & 0x10) || (param_0 & 0x1000000) ||
|
|
(param_0 & 0x800000) || (param_0 & 0x20) || (param_0 & 0x4000000) ||
|
|
(param_0 & 0x10000000) || (param_0 & 0x800) || (param_0 & 0x20000000) ||
|
|
daPy_getPlayerActorClass()->checkEnemyAttentionLock() || dMeter2Info_isGameStatus(2)) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm bool dMeterMap_c::isShow(u32 param_0) {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/isShow__11dMeterMap_cFUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020E620-8020E70C 208F60 00EC+00 3/3 0/0 0/0 .text isFmapScreen__11dMeterMap_cFv */
|
|
bool dMeterMap_c::isFmapScreen() {
|
|
if (dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 0 ||
|
|
dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 5 ||
|
|
dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 3 ||
|
|
dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 4 ||
|
|
dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 6) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* 8020E70C-8020E754 20904C 0048+00 3/3 0/0 0/0 .text isDmapScreen__11dMeterMap_cFv */
|
|
bool dMeterMap_c::isDmapScreen() {
|
|
return dStage_stagInfo_GetUpButton(dComIfGp_getStage()->getStagInfo()) == 1 ? 1 : 0;
|
|
}
|
|
|
|
/* 8020E754-8020E9CC 209094 0278+00 0/0 1/1 0/0 .text meter_map_move__11dMeterMap_cFUl */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void dMeterMap_c::meter_map_move(u32 param_0) {
|
|
if (isShow(param_0) && isMapOpenCheck()) {
|
|
if (dMeter2Info_getPauseStatus() == 6) {
|
|
if (!dMeter2Info_isSub2DStatus(1) && isFmapScreen()) {
|
|
dMeter2Info_setMapStatus(3);
|
|
dMeter2Info_setMapKeyDirection(0x400);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
dMeter2Info_resetPauseStatus();
|
|
} else {
|
|
if (dMw_LEFT_TRIGGER() && !dComIfGp_event_runCheck() && !dMsgObject_isTalkNowCheck() &&
|
|
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) {
|
|
if (dMeter2Info_getMapStatus() == 0 && !dMeter2Info_isSub2DStatus(1)) {
|
|
if (isFmapScreen() || isDmapScreen()) {
|
|
dMeter2Info_setMapStatus(2);
|
|
dMeter2Info_setMapKeyDirection(0x200);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
}
|
|
} else if (dMw_RIGHT_TRIGGER() && !dComIfGp_event_runCheck() &&
|
|
!dMsgObject_isTalkNowCheck() &&
|
|
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) {
|
|
if (!dMeter2Info_isSub2DStatus(1)) {
|
|
if (isFmapScreen() || isDmapScreen()) {
|
|
dMeter2Info_setMapStatus(2);
|
|
dMeter2Info_setMapKeyDirection(0x400);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMeterMap_c::meter_map_move(u32 param_0) {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/meter_map_move__11dMeterMap_cFUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 8020E9CC-8020ED60 20930C 0394+00 1/1 0/0 0/0 .text keyCheck__11dMeterMap_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void dMeterMap_c::keyCheck() {
|
|
if (dMw_LEFT_TRIGGER() && !isEventRunCheck() &&
|
|
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) {
|
|
if (dMeter2Info_getMapStatus() == 1) {
|
|
if (isDispPosInsideFlg()) {
|
|
setDispPosOutsideFlg_SE_On();
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_CLOSE_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_setMapStatus(0);
|
|
}
|
|
} else if (dMeter2Info_getMapStatus() == 0) {
|
|
if (!dMeter2Info_isSub2DStatus(1) && (isFmapScreen() || isDmapScreen())) {
|
|
dMeter2Info_setMapStatus(2);
|
|
dMeter2Info_setMapKeyDirection(0x200);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
} else {
|
|
setDispPosInsideFlg_SE_On();
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
dMeter2Info_setMapStatus(1);
|
|
}
|
|
}
|
|
} else if (dMw_RIGHT_TRIGGER() && !isEventRunCheck() &&
|
|
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) {
|
|
if (dMeter2Info_getMapStatus() == 0) {
|
|
if (isEnableDispMapAndMapDispSizeTypeNo()) {
|
|
if (!isDispPosInsideFlg()) {
|
|
setDispPosInsideFlg_SE_On();
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
|
|
-1.0f, -1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
dMeter2Info_setMapStatus(1);
|
|
}
|
|
} else if (!dMeter2Info_isSub2DStatus(1) && (isFmapScreen() || isDmapScreen())) {
|
|
dMeter2Info_setMapStatus(2);
|
|
dMeter2Info_setMapKeyDirection(0x400);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
}
|
|
} else if (dMeter2Info_getMapStatus() == 1 && isDispPosInsideFlg()) {
|
|
if (!dMeter2Info_isSub2DStatus(1) && (isFmapScreen() || isDmapScreen())) {
|
|
dMeter2Info_setMapStatus(2);
|
|
dMeter2Info_setMapKeyDirection(0x400);
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_set2DVibration();
|
|
} else {
|
|
setDispPosOutsideFlg_SE_On();
|
|
Z2GetAudioMgr()->mSeMgr.seStart(Z2SE_SY_MAP_CLOSE_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
|
|
-1.0f, 0);
|
|
dMeter2Info_setMapStatus(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dMeterMap_c::keyCheck() {
|
|
nofralloc
|
|
#include "asm/d/meter/d_meter_map/keyCheck__11dMeterMap_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80398208-80398208 024868 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|