Files
dusklight/src/d/meter/d_meter2.cpp
T

1439 lines
48 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: d/meter/d_meter2
//
#include "d/meter/d_meter2.h"
#include "d/d_timer.h"
#include "d/menu/d_menu_window_HIO.h"
#include "d/meter/d_meter_HIO.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_msg.h"
#include "f_op/f_op_msg_mng.h"
#include "m_Do/m_Do_audio.h"
//
// Types:
//
struct dScope_c {
/* 80193690 */ dScope_c(u8);
};
struct dMeterHakusha_c {
/* 8020C320 */ dMeterHakusha_c(void*);
};
struct dDemo_c {
static u8 m_mode[4];
};
//
// Forward References:
//
extern "C" void _create__9dMeter2_cFv();
extern "C" void _execute__9dMeter2_cFv();
extern "C" void _draw__9dMeter2_cFv();
extern "C" void _delete__9dMeter2_cFv();
extern "C" void emphasisButtonDelete__9dMeter2_cFv();
extern "C" void setLifeZero__9dMeter2_cFv();
extern "C" void checkStatus__9dMeter2_cFv();
extern "C" void moveLife__9dMeter2_cFv();
extern "C" void moveKantera__9dMeter2_cFv();
extern "C" void moveOxygen__9dMeter2_cFv();
extern "C" void moveLightDrop__9dMeter2_cFv();
extern "C" void moveRupee__9dMeter2_cFv();
extern "C" void moveKey__9dMeter2_cFv();
extern "C" void moveButtonA__9dMeter2_cFv();
extern "C" void moveButtonB__9dMeter2_cFv();
extern "C" void moveButtonR__9dMeter2_cFv();
extern "C" void moveButtonZ__9dMeter2_cFv();
extern "C" void moveButton3D__9dMeter2_cFv();
extern "C" void moveButtonC__9dMeter2_cFv();
extern "C" void moveButtonS__9dMeter2_cFv();
extern "C" void moveButtonXY__9dMeter2_cFv();
extern "C" void moveButtonCross__9dMeter2_cFv();
extern "C" void moveTouchSubMenu__9dMeter2_cFv();
extern "C" void moveSubContents__9dMeter2_cFv();
extern "C" void move2DContents__9dMeter2_cFv();
extern "C" void checkSubContents__9dMeter2_cFv();
extern "C" void check2DContents__9dMeter2_cFv();
extern "C" void moveBombNum__9dMeter2_cFv();
extern "C" void moveBottleNum__9dMeter2_cFv();
extern "C" void moveArrowNum__9dMeter2_cFv();
extern "C" void movePachinkoNum__9dMeter2_cFv();
extern "C" void alphaAnimeLife__9dMeter2_cFv();
extern "C" void alphaAnimeKantera__9dMeter2_cFv();
extern "C" void alphaAnimeOxygen__9dMeter2_cFv();
extern "C" void alphaAnimeLightDrop__9dMeter2_cFv();
extern "C" void alphaAnimeRupee__9dMeter2_cFv();
extern "C" void alphaAnimeKey__9dMeter2_cFv();
extern "C" void alphaAnimeButton__9dMeter2_cFv();
extern "C" void alphaAnimeButtonCross__9dMeter2_cFv();
extern "C" void isShowLightDrop__9dMeter2_cFv();
extern "C" void killSubContents__9dMeter2_cFUc();
extern "C" void isKeyVisible__9dMeter2_cFv();
extern "C" void isArrowEquip__9dMeter2_cFv();
extern "C" void isPachinkoEquip__9dMeter2_cFv();
extern "C" static void dMeter2_Draw__FP9dMeter2_c();
extern "C" static void dMeter2_Execute__FP9dMeter2_c();
extern "C" static bool dMeter2_IsDelete__FP9dMeter2_c();
extern "C" static void dMeter2_Delete__FP9dMeter2_c();
extern "C" static void dMeter2_Create__FP9msg_class();
extern "C" extern char const* const d_meter_d_meter2__stringBase0;
// extern "C" extern void* g_profile_METER2[10];
//
// External References:
//
extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap();
extern "C" void fopMsgM_setStageLayer__FPv();
extern "C" void fopMsgM_setMessageID__FUi();
extern "C" void fopMsgM_Create__FsPFPv_iPv();
extern "C" void fopMsgM_createExpHeap__FUlP7JKRHeap();
extern "C" void fopMsgM_destroyExpHeap__FP10JKRExpHeap();
extern "C" void setItemBombNumCount__14dComIfG_play_cFUcs();
extern "C" void getItemBombNumCount__14dComIfG_play_cFUc();
extern "C" void clearItemBombNumCount__14dComIfG_play_cFUc();
extern "C" void getLayerNo__14dComIfG_play_cFi();
extern "C" void getTimerMode__14dComIfG_play_cFv();
extern "C" void dComIfGs_setSelectItemIndex__FiUc();
extern "C" void dComIfGs_setMixItemIndex__FiUc();
extern "C" void dComIfGs_getSelectMixItemNoArrowIndex__Fi();
extern "C" void dComIfGs_getMixItemIndex__Fi();
extern "C" void dComIfGp_setSelectItem__Fi();
extern "C" void dComIfGp_getSelectItem__Fi();
extern "C" void dComIfGp_setHeapLockFlag__FUc();
extern "C" void dComIfGp_offHeapLockFlag__Fi();
extern "C" void dComIfGp_getSubHeap2D__Fi();
extern "C" void dComIfGp_getSelectItemNum__Fi();
extern "C" void dComIfGp_getSelectItemMaxNum__Fi();
extern "C" void getSelectItemIndex__21dSv_player_status_a_cCFi();
extern "C" void getRupeeMax__21dSv_player_status_a_cCFv();
extern "C" void setItem__17dSv_player_item_cFiUc();
extern "C" void getItem__17dSv_player_item_cCFib();
extern "C" void setBombNum__24dSv_player_item_record_cFUcUc();
extern "C" void getBombNum__24dSv_player_item_record_cCFUc();
extern "C" void getBottleNum__24dSv_player_item_record_cCFUc();
extern "C" void getBombNum__21dSv_player_item_max_cCFUc();
extern "C" void onCollectCrystal__20dSv_player_collect_cFUc();
extern "C" void isCollectCrystal__20dSv_player_collect_cCFUc();
extern "C" void onCollectMirror__20dSv_player_collect_cFUc();
extern "C" void isCollectMirror__20dSv_player_collect_cCFUc();
extern "C" void getLightDropNum__16dSv_light_drop_cCFUc();
extern "C" void isLightDropGetFlag__16dSv_light_drop_cCFUc();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
extern "C" bool CalcSubjectAngle__9dCamera_cFPsPs();
extern "C" void dCam_getBody__Fv();
extern "C" void __ct__8dScope_cFUc();
extern "C" void dKy_darkworld_check__Fv();
extern "C" bool getBombFlag__9dMw_HIO_cFv();
extern "C" bool getArrowFlag__9dMw_HIO_cFv();
extern "C" bool getPachinkoFlag__9dMw_HIO_cFv();
extern "C" void __ct__14dMeterButton_cFv();
extern "C" void _execute__14dMeterButton_cFUlbbbbbbbbbbbbbbbbbbbbbb();
extern "C" void isClose__14dMeterButton_cFv();
extern "C" void setString__14dMeterButton_cFPcUcUcUc();
extern "C" void hideAll__14dMeterButton_cFv();
extern "C" void __ct__14dMeterHaihai_cFUc();
extern "C" void __ct__15dMeterHakusha_cFPv();
extern "C" void isEnableDispMapAndMapDispSizeTypeNo__11dMeterMap_cFv();
extern "C" void getMapDispEdgeTop__11dMeterMap_cFv();
extern "C" void setMapAlpha__11dMeterMap_cFUc();
extern "C" void __ct__11dMeterMap_cFP9J2DScreen();
extern "C" void _move__11dMeterMap_cFUl();
extern "C" void _draw__11dMeterMap_cFv();
extern "C" void meter_map_move__11dMeterMap_cFUl();
extern "C" void __ct__14dMeterString_cFi();
extern "C" void createString__14dMeterString_cFi();
extern "C" void __ct__13dMeter2Draw_cFP10JKRExpHeap();
extern "C" void exec__13dMeter2Draw_cFUl();
extern "C" void drawLife__13dMeter2Draw_cFssff();
extern "C" void setAlphaLifeChange__13dMeter2Draw_cFb();
extern "C" void setAlphaLifeAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaLifeAnimeMax__13dMeter2Draw_cFv();
extern "C" void drawKantera__13dMeter2Draw_cFllff();
extern "C" void setAlphaKanteraChange__13dMeter2Draw_cFb();
extern "C" void setAlphaKanteraAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaKanteraAnimeMax__13dMeter2Draw_cFv();
extern "C" void drawOxygen__13dMeter2Draw_cFllff();
extern "C" void setAlphaOxygenChange__13dMeter2Draw_cFb();
extern "C" void setAlphaOxygenAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaOxygenAnimeMax__13dMeter2Draw_cFv();
extern "C" void drawLightDrop__13dMeter2Draw_cFUcUcffffUc();
extern "C" void setAlphaLightDropChange__13dMeter2Draw_cFb();
extern "C" void getNowLightDropRateCalc__13dMeter2Draw_cFv();
extern "C" void setAlphaLightDropAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaLightDropAnimeMax__13dMeter2Draw_cFv();
extern "C" void drawRupee__13dMeter2Draw_cFs();
extern "C" void setAlphaRupeeChange__13dMeter2Draw_cFb();
extern "C" void setAlphaRupeeAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaRupeeAnimeMax__13dMeter2Draw_cFv();
extern "C" void drawKey__13dMeter2Draw_cFs();
extern "C" void setAlphaKeyChange__13dMeter2Draw_cFb();
extern "C" void setAlphaKeyAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaKeyAnimeMax__13dMeter2Draw_cFv();
extern "C" void drawButtonA__13dMeter2Draw_cFUcfffffbb();
extern "C" void drawButtonB__13dMeter2Draw_cFUcbfffffb();
extern "C" void drawButtonR__13dMeter2Draw_cFUcUcbb();
extern "C" void drawButtonZ__13dMeter2Draw_cFUc();
extern "C" void drawButton3D__13dMeter2Draw_cFUc();
extern "C" void drawButtonC__13dMeter2Draw_cFUcb();
extern "C" void drawButtonS__13dMeter2Draw_cFUc();
extern "C" void drawButtonBin__13dMeter2Draw_cFUc();
extern "C" void drawButtonXY__13dMeter2Draw_cFiUcUcbb();
extern "C" void getButtonCrossParentInitTransY__13dMeter2Draw_cFv();
extern "C" void drawButtonCross__13dMeter2Draw_cFff();
extern "C" void setAlphaButtonCrossAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonCrossAnimeMax__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonChange__13dMeter2Draw_cFb();
extern "C" void setAlphaButtonAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonAnimeMax__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonAAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonAAnimeMax__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonBAnimeMin__13dMeter2Draw_cFv();
extern "C" void setAlphaButtonBAnimeMax__13dMeter2Draw_cFv();
extern "C" void setButtonIconAAlpha__13dMeter2Draw_cFUcUlb();
extern "C" void setButtonIconBAlpha__13dMeter2Draw_cFUcUlb();
extern "C" void setButtonIconMidonaAlpha__13dMeter2Draw_cFUl();
extern "C" void setButtonIconAlpha__13dMeter2Draw_cFiUcUlb();
extern "C" void getActionString__13dMeter2Draw_cFUcUcPUc();
extern "C" void setItemNum__13dMeter2Draw_cFUcUcUc();
extern "C" void drawItemNum__13dMeter2Draw_cFUcf();
extern "C" void drawKanteraMeter__13dMeter2Draw_cFUcf();
extern "C" void isButtonVisible__13dMeter2Draw_cFv();
extern "C" void getCameraSubject__13dMeter2Draw_cFv();
extern "C" void getItemSubject__13dMeter2Draw_cFv();
extern "C" void getPlayerSubject__13dMeter2Draw_cFv();
extern "C" void isBButtonShow__13dMeter2Draw_cFb();
extern "C" void getButtonTimer__13dMeter2Draw_cFv();
extern "C" void isFloatingMessageVisible__13dMeter2Info_cFv();
extern "C" void isDirectUseItem__13dMeter2Info_cFi();
extern "C" void decHotSpringTimer__13dMeter2Info_cFv();
extern "C" bool dMeter2Info_is2DActiveTouchArea__Fv();
extern "C" void isPlaceMessage__12dMsgObject_cFv();
extern "C" void getStatus__12dMsgObject_cFv();
extern "C" void dTimer_createStockTimer__Fv();
extern "C" void cLib_addCalc2__FPffff();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void heartGaugeOn__11Z2StatusMgrFv();
extern "C" void freeAll__7JKRHeapFv();
extern "C" void getTotalFreeSize__7JKRHeapFv();
extern "C" void* __nw__FUl();
extern "C" void _savegpr_18();
extern "C" void _savegpr_19();
extern "C" void _savegpr_21();
extern "C" void _savegpr_23();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_18();
extern "C" void _restgpr_19();
extern "C" void _restgpr_21();
extern "C" void _restgpr_23();
extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" u8 m_mode__7dDemo_c[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
// Declarations:
//
/* 804549C8-804549CC 002FC8 0004+00 9/9 0/0 0/0 .sdata2 @4662 */
SECTION_SDATA2 static u8 lit_4662[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 804549CC-804549D0 002FCC 0004+00 13/13 0/0 0/0 .sdata2 @4663 */
SECTION_SDATA2 static f32 lit_4663 = 1.0f;
/* 8021EA14-8021F128 219354 0714+00 1/1 0/0 0/0 .text _create__9dMeter2_cFv */
// this can be cleaned up with float literals when everything else is decompiled
int dMeter2_c::_create() {
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
if (dStage_stagInfo_GetUpButton(stag_info) == 1) {
mpHeap = fopMsgM_createExpHeap(0x5A400, NULL);
} else {
mpHeap = fopMsgM_createExpHeap(0x60800, NULL);
}
JKRHeap* heap = mDoExt_setCurrentHeap(mpHeap);
mpHeap->getTotalFreeSize();
if (!strcmp(dComIfGp_getStartStageName(), "F_SP00")) {
dMeter2Info_setNowCount(0);
dMeter2Info_setMaxCount(0);
}
field_0x128 = 0;
field_0x12c = field_0x128;
field_0x124 = 0;
mSubContents = 0;
mSubContentsStringType = 0;
field_0x1e6 = 0;
field_0x1e7 = 0;
mItemMaxNum[ARROW_MAX] = dComIfGs_getArrowMax();
mArrowNum = dComIfGs_getArrowNum();
mItemMaxNum[PACHINKO_MAX] = dComIfGs_getPachinkoMax();
mPachinkoNum = dComIfGs_getPachinkoNum();
for (int i = 0; i < 3; i++) {
mBombMax[i] = dComIfGs_getBombMax(dComIfGs_getItem((u8)(i + SLOT_15), 1));
mBombNum[i] = dComIfGs_getBombNum(i);
}
for (int i = 0; i < 2; i++) {
mItemMaxNum[i] = dComIfGs_getSelectItemIndex(i);
}
for (int i = 0; i < 4; i++) {
mBottleNum[i] = dComIfGs_getBottleNum(i);
}
field_0x1e8 = 0;
field_0x1e9 = 0;
mRupeeSound = 0;
mArrowSound = 0;
for (int i = 0; i < 5; i++) {
field_0x1b8[i] = 0;
}
field_0x1ec = 0;
field_0x1ed = 0;
field_0x1ee = 0;
mNowLifeGauge = i_dComIfGs_getLife();
dComIfGp_setItemNowLife((u8)mNowLifeGauge);
mMaxLife = dComIfGs_getMaxLife();
mNowMagic = dComIfGs_getMagic();
dComIfGp_setItemNowMagic(mNowMagic);
mMaxMagic = dComIfGs_getMaxMagic();
mNowOil = dComIfGs_getOil();
dComIfGp_setItemNowOil(mNowOil);
mMaxOil = dComIfGs_getMaxOil();
mNowOxygen = dComIfGp_getOxygen();
dComIfGp_setNowOxygen(mNowOxygen);
mMaxOxygen = dComIfGp_getMaxOxygen();
field_0x130 = FLOAT_LABEL(lit_4662);
u8 dark_area = dComIfGp_getStartStageDarkArea();
mLightDropNum = dComIfGs_getLightDropNum(dark_area);
mNeedLightDropNum = dComIfGp_getNeedLightDropNum();
mRupeeNum = i_dComIfGs_getRupee();
mKeyNum = dComIfGs_getKeyNum();
mDoStatus = i_dComIfGp_getDoStatus();
mDoSetFlag = dComIfGp_isDoSetFlag(2);
int i = 0;
f32 temp0 = FLOAT_LABEL(lit_4662);
for (; i < 2; i++) {
field_0x134[i] = temp0;
field_0x13c[i] = temp0;
}
field_0x144 = lit_4663;
mAStatus = dComIfGp_getAStatus();
field_0x1c6 = 0;
mASetFlag = dComIfGp_isASetFlag(2);
i = 0;
f32 temp1 = FLOAT_LABEL(lit_4662);
for (; i < 2; i++) {
field_0x148[i] = temp1;
field_0x150[i] = temp1;
}
field_0x158 = lit_4663;
field_0x1e4 = 0;
mEquipSword = dComIfGs_getSelectEquipSword();
field_0x1e3 = 0;
field_0x1fe = 0;
field_0x1fd = 0;
field_0x1ff = 0;
field_0x200 = 0;
field_0x201 = 0;
mCollectSmell = dComIfGs_getCollectSmell();
mRStatus = i_dComIfGp_getRStatus();
mRSetFlag = dComIfGp_isRSetFlag(2);
mXSetFlag = dComIfGp_isXSetFlag(2);
mYSetFlag = dComIfGp_isYSetFlag(2);
for (int i = 0; i < 2; i++) {
dComIfGp_setSelectItem(i);
}
mItemStatus[X_ITEM] = dComIfGp_getSelectItem(0);
mItemStatus[Y_ITEM] = dComIfGp_getSelectItem(1);
mItemStatus[X_STATUS] = dComIfGp_getXStatus();
mItemStatus[Y_STATUS] = dComIfGp_getYStatus();
f32 temp2 = FLOAT_LABEL(lit_4662);
field_0x188 = temp2;
field_0x18c = temp2;
for (int i = 0; i < 2; i++) {
field_0x1d6[i] = dMeter2Info_isDirectUseItem(i);
field_0x1d8[i] = dComIfGp_getSelectItemNum(i);
}
field_0x1e1 = 0;
field_0x1b4 = 0;
f32 temp3 = FLOAT_LABEL(lit_4662);
field_0x15c = temp3;
for (int i = 0; i < 4; i++) {
field_0x160[i] = temp3;
field_0x174[i] = temp3;
}
field_0x190 = 0;
mZStatus = dComIfGp_getZStatus();
m3DStatus = dComIfGp_get3DStatus();
mCStickStatus = dComIfGp_getCStickStatus();
mSButtonStatus = dComIfGp_getSButtonStatus();
mNunStatus = dComIfGp_getNunStatus();
mRemoConStatus = dComIfGp_getRemoConStatus();
mNunZStatus = dComIfGp_getNunZStatus();
mNunCStatus = dComIfGp_getNunCStatus();
mBottleStatus = dComIfGp_getBottleStatus();
field_0x1ac = dMeter2Info_isUseButton(16);
field_0x19a = 0;
mpMeterDraw = new dMeter2Draw_c(mpHeap);
field_0x130 = mpMeterDraw->getNowLightDropRateCalc();
mpHeap->getTotalFreeSize();
for (int i = 0; i < 2; i++) {
if (field_0x128 == 0) {
if (mItemStatus[i * 2] == BOMB_BAG_LV1 || mItemStatus[i * 2] == NORMAL_BOMB ||
mItemStatus[i * 2] == WATER_BOMB || mItemStatus[i * 2] == POKE_BOMB) {
mpMeterDraw->setItemNum(i, dComIfGp_getSelectItemNum(i),
dComIfGp_getSelectItemMaxNum(i));
} else if (mItemStatus[i * 2] == BEE_CHILD) {
mpMeterDraw->setItemNum(i, dComIfGp_getSelectItemNum(i),
dComIfGp_getSelectItemMaxNum(i));
} else if (mItemStatus[i * 2] == BOW || mItemStatus[i * 2] == LIGHT_ARROW ||
mItemStatus[i * 2] == ARROW_LV1 || mItemStatus[i * 2] == ARROW_LV2 ||
mItemStatus[i * 2] == ARROW_LV3 || mItemStatus[i * 2] == HAWK_ARROW) {
mpMeterDraw->setItemNum(i, mArrowNum, dComIfGs_getArrowMax());
} else if (mItemStatus[i * 2] == PACHINKO) {
mpMeterDraw->setItemNum(i, mPachinkoNum, dComIfGs_getPachinkoMax());
} else if (mItemStatus[i * 2] == BOMB_ARROW) {
u8 item_num = dComIfGp_getSelectItemNum(i);
u8 item_max = dComIfGp_getSelectItemMaxNum(i);
if (item_num > mArrowNum) {
item_num = mArrowNum;
}
u8 temp = dComIfGs_getArrowMax() & 0xFF;
if (item_max < temp) {
item_max = temp;
}
mpMeterDraw->setItemNum(i, item_num, item_max);
}
}
}
mpMap = NULL;
if (dMeterMap_c::isEnableDispMapAndMapDispSizeTypeNo()) {
mpMap = new dMeterMap_c(mpMeterDraw->getMainScreenPtr());
} else {
if (g_meter2_info.mMapStatus == 2) {
g_meter2_info.mMapStatus = 0;
}
}
dMeter2Info_setMeterMapClass(mpMap);
mpHeap->getTotalFreeSize();
mpSubHeap = fopMsgM_createExpHeap(0x5000, mpHeap);
field_0x108 = NULL;
mpMeterSub = NULL;
mpMeterString = NULL;
mpMeterButton = NULL;
mpHeap->getTotalFreeSize();
field_0x11c = NULL;
mDoExt_setCurrentHeap(heap);
return cPhs_COMPLEATE_e;
}
/* 8021F128-8021F370 219A68 0248+00 1/1 0/0 0/0 .text _execute__9dMeter2_cFv */
int dMeter2_c::_execute() {
JKRHeap* heap = mDoExt_setCurrentHeap(mpHeap);
if (!dComIfGs_isCollectMirror(0) && i_dComIfGs_isEventBit(0x5420)) {
dComIfGs_onCollectMirror(0);
}
if (!dComIfGs_isCollectCrystal(3) && i_dComIfGs_isEventBit(0x5410)) {
dComIfGs_onCollectCrystal(3);
}
checkStatus();
mpMeterDraw->exec(field_0x124);
moveLife();
moveKantera();
moveOxygen();
moveLightDrop();
moveRupee();
moveKey();
moveButtonXY();
moveButtonA();
moveButtonB();
moveButtonR();
moveButtonZ();
moveButton3D();
moveButtonC();
moveButtonS();
moveButtonCross();
moveTouchSubMenu();
moveBombNum();
moveArrowNum();
movePachinkoNum();
moveBottleNum();
if (mpMap != NULL) {
mpMap->_move(field_0x124);
} else {
dMeterMap_c::meter_map_move(field_0x124);
}
moveSubContents();
move2DContents();
if (!dComIfGp_isPauseFlag() && !i_dComIfGp_event_runCheck()) {
dMeter2Info_decHotSpringTimer();
}
dMeter2Info_allUseButton();
i_dMeter2Info_offUseButton(0x800);
dMeter2Info_resetGameStatus();
dComIfGp_setNunStatus(0, 0, 0);
dComIfGp_setRemoConStatus(0, 0, 0);
dComIfGp_setNunZStatus(0, 0);
dComIfGp_setNunCStatus(0, 0);
i_dComIfGp_setBottleStatus(0, 0);
dComIfGp_setCStickStatus(0, 0, 0);
mDoExt_setCurrentHeap(heap);
return 1;
}
/* 8021F370-8021F49C 219CB0 012C+00 1/1 0/0 0/0 .text _draw__9dMeter2_cFv */
int dMeter2_c::_draw() {
if (mpMap != NULL) {
mpMap->_draw();
}
if (mpMeterSub != NULL) {
dComIfGd_set2DOpaTop(mpMeterSub);
}
if (mpMeterString != NULL) {
if (mSubContents == 5) {
if (mSubContentsStringType != 0) {
dComIfGd_set2DOpaTop(mpMeterString);
}
} else {
dComIfGd_set2DOpaTop(mpMeterString);
}
}
if (dMeter2Info_getWindowStatus() == 2) {
dComIfGd_set2DOpa(mpMeterDraw);
} else {
dComIfGd_set2DOpaTop(mpMeterDraw);
}
if (mpMeterButton != NULL) {
dComIfGd_set2DOpaTop(mpMeterButton);
}
return 1;
}
/* ############################################################################################## */
/* 804549D0-804549D8 002FD0 0004+04 10/10 0/0 0/0 .sdata2 @4837 */
SECTION_SDATA2 static f32 lit_4837[1 + 1 /* padding */] = {
-1.0f,
/* padding */
0.0f,
};
/* 8021F49C-8021F6EC 219DDC 0250+00 1/1 0/0 0/0 .text _delete__9dMeter2_cFv */
#ifdef NONMATCHING
int dMeter2_c::_delete() {
mpHeap->getTotalFreeSize();
JKRHeap* heap = mDoExt_setCurrentHeap(mpHeap);
if (isRupeeSoundBit(2)) {
mDoAud_seStart(Z2SE_LUPY_INC_CNT_2, 0, 0, 0);
}
if (isRupeeSoundBit(3)) {
mDoAud_seStart(Z2SE_LUPY_DEC_CNT_2, 0, 0, 0);
}
if (isArrowSoundBit(2) && (isArrowEquip() || isPachinkoEquip()) &&
mpMeterDraw->isButtonVisible()) {
mDoAud_seStart(Z2SE_CONSUM_INC_CNT_2, 0, 0, 0);
}
mpHeap->getTotalFreeSize();
if (mpMap != NULL) {
delete mpMap;
mpMap = NULL;
}
mpHeap->getTotalFreeSize();
mDoExt_setCurrentHeap(mpSubHeap);
if (mpMeterSub != NULL) {
delete mpMeterSub;
mpMeterSub = NULL;
}
if (mpMeterString != NULL) {
delete mpMeterString;
mpMeterString = NULL;
}
mpHeap->getTotalFreeSize();
if (field_0x11c != NULL) {
delete field_0x11c;
field_0x11c = NULL;
}
mDoExt_setCurrentHeap(heap);
delete mpMeterDraw;
mpMeterDraw = NULL;
fopMsgM_destroyExpHeap(mpSubHeap);
fopMsgM_destroyExpHeap(mpHeap);
emphasisButtonDelete();
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int dMeter2_c::_delete() {
nofralloc
#include "asm/d/meter/d_meter2/_delete__9dMeter2_cFv.s"
}
#pragma pop
#endif
/* 8021F6EC-8021F780 21A02C 0094+00 1/1 5/5 0/0 .text emphasisButtonDelete__9dMeter2_cFv
*/
int dMeter2_c::emphasisButtonDelete() {
if (mpMeterButton != NULL) {
JKRExpHeap* heap = dComIfGp_getSubHeap2D(8);
mpMeterButton->hideAll();
if (heap != NULL) {
delete mpMeterButton;
mpMeterButton = NULL;
heap->freeAll();
dComIfGp_offHeapLockFlag(8);
}
}
return 1;
}
/* 8021F780-8021F7B0 21A0C0 0030+00 0/0 0/0 1/1 .text setLifeZero__9dMeter2_cFv */
void dMeter2_c::setLifeZero() {
dComIfGs_setLife(1);
setNowLifeGauge(1);
i_dComIfGp_setItemLifeCount(lit_4837[0], 0);
}
/* ############################################################################################## */
/* 803BFA28-803BFA54 -00001 002C+00 1/1 0/0 0/0 .data @5038 */
SECTION_DATA static void* lit_5038[11] = {
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x530),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x3FC),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x41C),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x40C),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x454),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x48C),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x454),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x4C4),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x500),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x530),
(void*)(((char*)checkStatus__9dMeter2_cFv) + 0x40C),
};
/* 8021F7B0-8021FD60 21A0F0 05B0+00 2/1 0/0 0/0 .text checkStatus__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::checkStatus() {
nofralloc
#include "asm/d/meter/d_meter2/checkStatus__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804549D8-804549E0 002FD8 0008+00 4/4 0/0 0/0 .sdata2 @5267 */
SECTION_SDATA2 static f64 lit_5267 = 4503601774854144.0 /* cast s32 to float */;
/* 804549E0-804549E8 002FE0 0008+00 2/2 0/0 0/0 .sdata2 @5268 */
SECTION_SDATA2 static f64 lit_5268 = 4503599627370496.0 /* cast u32 to float */;
/* 8021FD60-80220180 21A6A0 0420+00 1/1 0/0 0/0 .text moveLife__9dMeter2_cFv */
// small type issue
#ifdef NONMATCHING
void dMeter2_c::moveLife() {
s16 life_count = 0;
bool setDraw = false;
s16 temp_r5 = dComIfGp_getItemMaxLifeCount();
if (temp_r5 != 0) {
s16 max_count = dComIfGs_getMaxLife() + dComIfGp_getItemMaxLifeCount();
if (max_count > 100) {
max_count = 100;
} else {
if (max_count < 15) {
max_count = 15;
}
}
life_count = (max_count / 5) * 4;
dComIfGs_setMaxLife(max_count);
s16 current_life = life_count - i_dComIfGs_getLife();
i_dComIfGp_setItemLifeCount(current_life, 0);
dComIfGp_clearItemMaxLifeCount();
setDraw = true;
}
f32 item_life_count = dComIfGp_getItemLifeCount();
if (item_life_count != FLOAT_LABEL(lit_4662)) {
field_0x1ee = dComIfGp_getItemLifeCountType();
if (!setDraw) {
life_count = (dComIfGs_getMaxLife() / 5) * 4;
}
s16 tmp = i_dComIfGs_getLife() + dComIfGp_getItemLifeCount();
if (tmp > life_count) {
tmp = life_count;
} else if (tmp < 0) {
tmp = 0;
}
dComIfGs_setLife((u8)tmp);
dComIfGp_clearItemLifeCount();
// extsh instead of mr
if (mNowLifeGauge == tmp && field_0x1ee != 0) {
field_0x1ee = 0;
}
setDraw = true;
}
u16 max_life = dComIfGs_getMaxLife();
if (mMaxLife != max_life) {
if (mMaxLife < max_life) {
mMaxLife++;
dMeter2Info_onLifeGaugeSE();
setDraw = true;
} else if (mMaxLife > max_life) {
mMaxLife--;
setDraw = true;
}
}
u16 current_life = i_dComIfGs_getLife();
if (mNowLifeGauge != current_life) {
if (mNowLifeGauge < current_life) {
mNowLifeGauge++;
if (i_dComIfGp_checkPlayerStatus1(0, 0x2000) ||
i_dComIfGp_checkPlayerStatus0(0, 0x20000000) || dMeter2Info_getLifeGaugeSE()) {
if (mNowLifeGauge % 4 == 0) {
mDoAud_seStart(Z2SE_HP_GAUGE_INC, 0, 0, 0);
}
} else {
if (field_0x1ee == 1) {
mDoAud_seStart(Z2SE_HP_GAUGE_INC, 0, 0, 0);
}
}
u16 life = i_dComIfGs_getLife();
if (mNowLifeGauge == life && field_0x1ee != 0) {
field_0x1ee = 0;
}
setDraw = true;
} else if (mNowLifeGauge > current_life) {
mNowLifeGauge--;
if (field_0x1ee != 0) {
field_0x1ee = 0;
}
setDraw = true;
}
} else {
if (dMeter2Info_getLifeGaugeSE()) {
dMeter2Info_offLifeGaugeSE();
}
}
f32 life_gauge_x = g_drawHIO.mLifeGaugePosX;
f32 life_gauge_y = g_drawHIO.mLifeGaugePosY;
if (field_0x204 != g_drawHIO.mLifeGaugePosX) {
field_0x204 = g_drawHIO.mLifeGaugePosX;
setDraw = true;
}
if (field_0x208 != g_drawHIO.mLifeGaugePosY) {
field_0x208 = g_drawHIO.mLifeGaugePosY;
setDraw = true;
}
if (field_0x20c != g_drawHIO.mLifeGaugeScale) {
field_0x20c = g_drawHIO.mLifeGaugeScale;
setDraw = true;
}
if (field_0x210 != g_drawHIO.mHeartScale) {
field_0x210 = g_drawHIO.mHeartScale;
setDraw = true;
}
if (field_0x214 != g_drawHIO.mLargeHeartScale) {
field_0x214 = g_drawHIO.mLargeHeartScale;
setDraw = true;
}
if (setDraw == true) {
mpMeterDraw->drawLife(mMaxLife, mNowLifeGauge, life_gauge_x, life_gauge_y);
}
alphaAnimeLife();
dComIfGp_setItemNowLife((u8)mNowLifeGauge);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveLife() {
nofralloc
#include "asm/d/meter/d_meter2/moveLife__9dMeter2_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804549E8-804549EC 002FE8 0004+00 4/4 0/0 0/0 .sdata2 @5791 */
SECTION_SDATA2 static f32 lit_5791 = 1.0f / 10.0f;
/* 80220180-8022051C 21AAC0 039C+00 1/1 0/0 0/0 .text moveKantera__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveKantera() {
nofralloc
#include "asm/d/meter/d_meter2/moveKantera__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804549EC-804549F0 002FEC 0004+00 2/2 0/0 0/0 .sdata2 @5933 */
SECTION_SDATA2 static f32 lit_5933 = 0.5f;
/* 8022051C-80220888 21AE5C 036C+00 1/1 0/0 0/0 .text moveOxygen__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveOxygen() {
nofralloc
#include "asm/d/meter/d_meter2/moveOxygen__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804549F0-804549F4 002FF0 0004+00 3/3 0/0 0/0 .sdata2 @6051 */
SECTION_SDATA2 static f32 lit_6051 = 10.0f;
/* 804549F4-804549F8 002FF4 0004+00 1/1 0/0 0/0 .sdata2 @6052 */
SECTION_SDATA2 static f32 lit_6052 = 1.0f / 5.0f;
/* 80220888-80220C30 21B1C8 03A8+00 1/1 0/0 0/0 .text moveLightDrop__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveLightDrop() {
nofralloc
#include "asm/d/meter/d_meter2/moveLightDrop__9dMeter2_cFv.s"
}
#pragma pop
/* 80220C30-802210AC 21B570 047C+00 1/1 0/0 0/0 .text moveRupee__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveRupee() {
nofralloc
#include "asm/d/meter/d_meter2/moveRupee__9dMeter2_cFv.s"
}
#pragma pop
/* 802210AC-80221244 21B9EC 0198+00 1/1 0/0 0/0 .text moveKey__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveKey() {
nofralloc
#include "asm/d/meter/d_meter2/moveKey__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804549F8-804549FC 002FF8 0004+00 2/2 0/0 0/0 .sdata2 @6564 */
SECTION_SDATA2 static f32 lit_6564 = 1.0f / 100.0f;
/* 80221244-802217F4 21BB84 05B0+00 1/1 0/0 0/0 .text moveButtonA__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButtonA() {
nofralloc
#include "asm/d/meter/d_meter2/moveButtonA__9dMeter2_cFv.s"
}
#pragma pop
/* 802217F4-80221EC8 21C134 06D4+00 1/1 0/0 0/0 .text moveButtonB__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButtonB() {
nofralloc
#include "asm/d/meter/d_meter2/moveButtonB__9dMeter2_cFv.s"
}
#pragma pop
/* 80221EC8-80222000 21C808 0138+00 1/1 0/0 0/0 .text moveButtonR__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButtonR() {
nofralloc
#include "asm/d/meter/d_meter2/moveButtonR__9dMeter2_cFv.s"
}
#pragma pop
/* 80222000-802222A0 21C940 02A0+00 1/1 0/0 0/0 .text moveButtonZ__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButtonZ() {
nofralloc
#include "asm/d/meter/d_meter2/moveButtonZ__9dMeter2_cFv.s"
}
#pragma pop
/* 802222A0-80222364 21CBE0 00C4+00 1/1 0/0 0/0 .text moveButton3D__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButton3D() {
nofralloc
#include "asm/d/meter/d_meter2/moveButton3D__9dMeter2_cFv.s"
}
#pragma pop
/* 80222364-80222494 21CCA4 0130+00 1/1 0/0 0/0 .text moveButtonC__9dMeter2_cFv */
void dMeter2_c::moveButtonC() {
if (dComIfGp_getCStickStatusForce()) {
u8 setFlag = dComIfGp_getCStickSetFlagForce();
u8 dirForce = dComIfGp_getCStickDirectionForce();
u8 statusForce = dComIfGp_getCStickStatusForce();
dComIfGp_setCStickStatus(statusForce, dirForce, setFlag);
dComIfGp_setCStickStatusForce(0, 0, 0);
}
if (mCStickStatus == dComIfGp_getCStickStatus() &&
field_0x1ac == dMeter2Info_isUseButton(0x10)) {
if ((!mpMeterDraw->isEmphasisC() || dComIfGp_isCStickSetFlag(2)) &&
(mpMeterDraw->isEmphasisC() || !dComIfGp_isCStickSetFlag(2)) &&
field_0x19a == mpMeterDraw->getButtonTimer()) {
return;
}
}
field_0x19a = mpMeterDraw->getButtonTimer();
mCStickStatus = dComIfGp_getCStickStatus();
field_0x1ac = dMeter2Info_isUseButton(0x10);
mpMeterDraw->drawButtonC(mCStickStatus, field_0x128 == 0);
}
/* 80222494-80222518 21CDD4 0084+00 1/1 0/0 0/0 .text moveButtonS__9dMeter2_cFv */
void dMeter2_c::moveButtonS() {
if (dComIfGp_getSButtonStatusForce()) {
u8 setFlag = dComIfGp_getSButtonSetFlagForce();
u8 statusForce = dComIfGp_getSButtonStatusForce();
dComIfGp_setSButtonStatus(statusForce, setFlag);
dComIfGp_setSButtonStatusForce(0, 0);
} else {
dComIfGp_setSButtonStatus(0, 0);
}
if (mSButtonStatus != dComIfGp_getSButtonStatus()) {
mSButtonStatus = dComIfGp_getSButtonStatus();
mpMeterDraw->drawButtonS(mSButtonStatus);
}
}
/* 80222518-80222E88 21CE58 0970+00 1/1 0/0 0/0 .text moveButtonXY__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButtonXY() {
nofralloc
#include "asm/d/meter/d_meter2/moveButtonXY__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804549FC-80454A00 002FFC 0004+00 1/1 0/0 0/0 .sdata2 @7509 */
SECTION_SDATA2 static f32 lit_7509 = 15.0f;
/* 80454A00-80454A04 003000 0004+00 1/1 0/0 0/0 .sdata2 @7510 */
SECTION_SDATA2 static f32 lit_7510 = 50.0f;
/* 80222E88-802230F8 21D7C8 0270+00 1/1 0/0 0/0 .text moveButtonCross__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveButtonCross() {
nofralloc
#include "asm/d/meter/d_meter2/moveButtonCross__9dMeter2_cFv.s"
}
#pragma pop
/* 802230F8-802230FC 21DA38 0004+00 1/1 0/0 0/0 .text moveTouchSubMenu__9dMeter2_cFv */
void dMeter2_c::moveTouchSubMenu() {
/* empty function */
}
/* 802230FC-802231C8 21DA3C 00CC+00 1/1 0/0 0/0 .text moveSubContents__9dMeter2_cFv */
void dMeter2_c::moveSubContents() {
JKRHeap* heap = mDoExt_setCurrentHeap(mpSubHeap);
checkSubContents();
if (mpMeterSub != NULL) {
mpMeterSub->_execute(field_0x124);
}
if (mpMeterString != NULL) {
if (mSubContents == 5 && mSubContentsStringType != dMeter2Info_getMeterStringType()) {
mSubContentsStringType = dMeter2Info_getMeterStringType();
if (mSubContentsStringType != 0) {
mpMeterString->createString(mSubContentsStringType);
}
}
mpMeterString->_execute(field_0x124);
}
mDoExt_setCurrentHeap(heap);
}
/* 802231C8-802237D4 21DB08 060C+00 1/1 0/0 0/0 .text move2DContents__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::move2DContents() {
nofralloc
#include "asm/d/meter/d_meter2/move2DContents__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80399338-80399338 025998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039933F = "F_SP103";
#pragma pop
/* 802237D4-80223BC4 21E114 03F0+00 1/1 0/0 0/0 .text checkSubContents__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::checkSubContents() {
nofralloc
#include "asm/d/meter/d_meter2/checkSubContents__9dMeter2_cFv.s"
}
#pragma pop
/* 80223BC4-80223E00 21E504 023C+00 1/1 0/0 0/0 .text check2DContents__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::check2DContents() {
nofralloc
#include "asm/d/meter/d_meter2/check2DContents__9dMeter2_cFv.s"
}
#pragma pop
/* 80223E00-80224258 21E740 0458+00 1/1 0/0 0/0 .text moveBombNum__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveBombNum() {
nofralloc
#include "asm/d/meter/d_meter2/moveBombNum__9dMeter2_cFv.s"
}
#pragma pop
/* 80224258-80224354 21EB98 00FC+00 1/1 0/0 0/0 .text moveBottleNum__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveBottleNum() {
nofralloc
#include "asm/d/meter/d_meter2/moveBottleNum__9dMeter2_cFv.s"
}
#pragma pop
/* 80224354-80224680 21EC94 032C+00 1/1 0/0 0/0 .text moveArrowNum__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::moveArrowNum() {
nofralloc
#include "asm/d/meter/d_meter2/moveArrowNum__9dMeter2_cFv.s"
}
#pragma pop
/* 80224680-802248E4 21EFC0 0264+00 1/1 0/0 0/0 .text movePachinkoNum__9dMeter2_cFv */
// matches with literals
#ifdef NONMATCHING
void dMeter2_c::movePachinkoNum() {
if (g_mwHIO.getPachinkoFlag()) {
if (dComIfGs_getPachinkoNum() != dComIfGs_getPachinkoMax()) {
u8 max = dComIfGs_getPachinkoMax();
dComIfGp_setItemPachinkoNumCount(max);
}
if (dComIfGp_getItemPachinkoNumCount() < 0) {
dComIfGp_clearItemPachinkoNumCount();
}
}
if (dComIfGp_getItemPachinkoNumCount() == 0 && mItemMaxNum[3] == dComIfGs_getPachinkoMax() &&
mPachinkoNum == dComIfGs_getPachinkoNum()) {
return;
}
s16 pachinko_num = dComIfGs_getPachinkoNum() + dComIfGp_getItemPachinkoNumCount();
dComIfGp_clearItemPachinkoNumCount();
if (pachinko_num < 0) {
pachinko_num = 0;
}
if (dComIfGs_getPachinkoMax() < pachinko_num) {
pachinko_num = dComIfGs_getPachinkoMax();
}
dComIfGs_setPachinkoNum(pachinko_num);
mItemMaxNum[3] = dComIfGs_getPachinkoMax();
if (mPachinkoNum < dComIfGs_getPachinkoNum()) {
mPachinkoNum++;
onArrowSoundBit(2);
if (isArrowSoundBit(2)) {
if (mPachinkoNum != dComIfGs_getPachinkoNum()) {
if (!isArrowSoundBit(0) && isPachinkoEquip() && mpMeterDraw->isButtonVisible()) {
onArrowSoundBit(0);
mDoAud_seStart(Z2SE_CONSUM_INC_CNT_1, 0, 0, 0);
} else {
offArrowSoundBit(0);
}
} else {
if (isPachinkoEquip() && mpMeterDraw->isButtonVisible()) {
mDoAud_seStart(Z2SE_CONSUM_INC_CNT_2, 0, 0, 0);
}
offArrowSoundBit(2);
offArrowSoundBit(0);
}
}
} else if (mPachinkoNum > dComIfGs_getPachinkoNum()) {
mPachinkoNum--;
}
for (int i = 0; i < 2; i++) {
if (mItemStatus[i * 2] == PACHINKO) {
mpMeterDraw->setItemNum(i, mPachinkoNum, dComIfGs_getPachinkoMax());
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::movePachinkoNum() {
nofralloc
#include "asm/d/meter/d_meter2/movePachinkoNum__9dMeter2_cFv.s"
}
#pragma pop
#endif
/* 802248E4-80224A04 21F224 0120+00 1/1 0/0 0/0 .text alphaAnimeLife__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeLife() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeLife__9dMeter2_cFv.s"
}
#pragma pop
/* 80224A04-80224BAC 21F344 01A8+00 1/1 0/0 0/0 .text alphaAnimeKantera__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeKantera() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeKantera__9dMeter2_cFv.s"
}
#pragma pop
/* 80224BAC-80224D6C 21F4EC 01C0+00 1/1 0/0 0/0 .text alphaAnimeOxygen__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeOxygen() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeOxygen__9dMeter2_cFv.s"
}
#pragma pop
/* 80224D6C-80224DC0 21F6AC 0054+00 1/1 0/0 0/0 .text alphaAnimeLightDrop__9dMeter2_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeLightDrop() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeLightDrop__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80399338-80399338 025998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80399347 = "R_SP127";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039934F = "";
#pragma pop
/* 80224DC0-80224F70 21F700 01B0+00 1/1 0/0 0/0 .text alphaAnimeRupee__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeRupee() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeRupee__9dMeter2_cFv.s"
}
#pragma pop
/* 80224F70-802250F4 21F8B0 0184+00 1/1 0/0 0/0 .text alphaAnimeKey__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeKey() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeKey__9dMeter2_cFv.s"
}
#pragma pop
/* 802250F4-802254C0 21FA34 03CC+00 1/1 0/0 0/0 .text alphaAnimeButton__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeButton() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeButton__9dMeter2_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80454A04-80454A08 003004 0004+00 1/1 0/0 0/0 .sdata2 @9090 */
SECTION_SDATA2 static f32 lit_9090 = 255.0f;
/* 80454A08-80454A10 003008 0004+04 1/1 0/0 0/0 .sdata2 @9091 */
SECTION_SDATA2 static f32 lit_9091[1 + 1 /* padding */] = {
5.0f,
/* padding */
0.0f,
};
/* 802254C0-802256DC 21FE00 021C+00 1/1 0/0 0/0 .text alphaAnimeButtonCross__9dMeter2_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::alphaAnimeButtonCross() {
nofralloc
#include "asm/d/meter/d_meter2/alphaAnimeButtonCross__9dMeter2_cFv.s"
}
#pragma pop
/* 802256DC-802258A0 22001C 01C4+00 3/3 0/0 0/0 .text isShowLightDrop__9dMeter2_cFv */
bool dMeter2_c::isShowLightDrop() {
if (!g_drawHIO.mLightDrop.mAnimDebug) {
if ((field_0x124 & 0x4000) ||
!dComIfGs_isLightDropGetFlag(dComIfGp_getStartStageDarkArea()) ||
dMeter2Info_getLightDropGetFlag(dComIfGp_getStartStageDarkArea()) <= 1 ||
!dKy_darkworld_check() || ((field_0x124 & 0x40) && dComIfGp_event_checkHind(0x200)) ||
daPy_getPlayerActorClass()->i_getSumouMode() ||
(daPy_getPlayerActorClass()->checkCanoeSlider() &&
(dComIfG_getTimerMode() == 3 || dComIfG_getTimerMode() == 4)) ||
(field_0x124 & 0x40000000) || (field_0x124 & 0x00001000) ||
(field_0x124 & 0x00100000) || (field_0x124 & 0x80000000) ||
(field_0x124 & 0x00000100) || (field_0x124 & 0x00000080) ||
(field_0x124 & 0x00000008) || (field_0x124 & 0x00000010) ||
(field_0x124 & 0x01000000) || (field_0x124 & 0x00000020) ||
(field_0x124 & 0x04000000) || (field_0x124 & 0x08000000) ||
(field_0x124 & 0x10000000) || dMeter2Info_isSub2DStatus(1)) {
return false;
}
}
return true;
}
/* 802258A0-80225960 2201E0 00C0+00 1/1 0/0 0/0 .text killSubContents__9dMeter2_cFUc */
void dMeter2_c::killSubContents(u8 param_0) {
if (mSubContents != param_0 && mSubContents != 0) {
bool free = false;
if (mpMeterSub != NULL) {
delete mpMeterSub;
mpMeterSub = NULL;
free = true;
}
if (mpMeterString != NULL) {
delete mpMeterString;
mpMeterString = NULL;
free = true;
}
if (free) {
mpSubHeap->freeAll();
}
mSubContents = 0;
mSubContentsStringType = 0;
}
}
/* 80225960-802259F8 2202A0 0098+00 1/1 0/0 0/0 .text isKeyVisible__9dMeter2_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeter2_c::isKeyVisible() {
nofralloc
#include "asm/d/meter/d_meter2/isKeyVisible__9dMeter2_cFv.s"
}
#pragma pop
/* 802259F8-80225A64 220338 006C+00 2/2 0/0 0/0 .text isArrowEquip__9dMeter2_cFv */
int dMeter2_c::isArrowEquip() {
for (int i = 0; i < 2; i++) {
if (mItemStatus[i * 2] == BOW || mItemStatus[i * 2] == LIGHT_ARROW ||
mItemStatus[i * 2] == ARROW_LV1 || mItemStatus[i * 2] == ARROW_LV2 ||
mItemStatus[i * 2] == ARROW_LV3 || mItemStatus[i * 2] == HAWK_ARROW ||
mItemStatus[i * 2] == BOMB_ARROW) {
return i + 1;
}
}
return 0;
}
/* 80225A64-80225AA0 2203A4 003C+00 2/2 0/0 0/0 .text isPachinkoEquip__9dMeter2_cFv */
int dMeter2_c::isPachinkoEquip() {
for (int i = 0; i < 2; i++) {
if (mItemStatus[i * 2] == PACHINKO) {
return i + 1;
}
}
return 0;
}
/* 80225AA0-80225AC0 2203E0 0020+00 1/0 0/0 0/0 .text dMeter2_Draw__FP9dMeter2_c */
static int dMeter2_Draw(dMeter2_c* p_meter) {
return p_meter->_draw();
}
/* 80225AC0-80225AE0 220400 0020+00 1/0 0/0 0/0 .text dMeter2_Execute__FP9dMeter2_c */
static int dMeter2_Execute(dMeter2_c* p_meter) {
return p_meter->_execute();
}
/* 80225AE0-80225AE8 220420 0008+00 1/0 0/0 0/0 .text dMeter2_IsDelete__FP9dMeter2_c */
static int dMeter2_IsDelete(dMeter2_c* p_meter) {
return 1;
}
/* 80225AE8-80225B08 220428 0020+00 1/0 0/0 0/0 .text dMeter2_Delete__FP9dMeter2_c */
static int dMeter2_Delete(dMeter2_c* p_meter) {
return p_meter->_delete();
}
/* 80225B08-80225BB8 220448 00B0+00 1/0 0/0 0/0 .text dMeter2_Create__FP9msg_class */
static int dMeter2_Create(msg_class* meter) {
dMeter2Info_setMeterClass(static_cast<dMeter2_c*>(meter));
dComIfGp_2dShowOn();
fopMsgM_Create(0x314, NULL, NULL);
g_drawHIO.field_0x4 = -1;
g_ringHIO.field_0x4 = -1;
g_fmapHIO.field_0x4 = -1;
g_cursorHIO.field_0x4 = -1;
u32 id = fopMsgM_Create(0x313, NULL, NULL);
fopMsgM_setMessageID(id);
dTimer_createStockTimer();
fopMsgM_setStageLayer(meter);
return static_cast<dMeter2_c*>(meter)->_create();
}
/* ############################################################################################## */
/* 803BFA54-803BFA68 -00001 0014+00 1/0 0/0 0/0 .data l_dMeter2_Method */
SECTION_DATA static leafdraw_method_class l_dMeter2_Method = {
(process_method_func)dMeter2_Create, (process_method_func)dMeter2_Delete,
(process_method_func)dMeter2_Execute, (process_method_func)dMeter2_IsDelete,
(process_method_func)dMeter2_Draw,
};
/* 803BFA68-803BFA90 -00001 0028+00 0/0 0/0 1/0 .data g_profile_METER2 */
SECTION_DATA extern process_profile_definition g_profile_METER2 = {
-3, 12,
-3, 0x0316,
0, (process_method_class*)&g_fpcLf_Method,
0x4C0, 0,
0, &g_fopMsg_Method,
0x0301, 0,
0, &l_dMeter2_Method};
/* 80399338-80399338 025998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */