d_meter_string done (#2023)

* d_meter_string done

* remove asm

* some other d_meter fixes
This commit is contained in:
TakaRikka
2024-01-03 06:12:17 -08:00
committed by GitHub
parent 8f7ec02644
commit f86c1a198f
27 changed files with 455 additions and 3236 deletions
+50 -37
View File
@@ -1,7 +1,7 @@
//
// Generated By: dol2asm
// Translation Unit: d/meter/d_meter2
//
/**
* d_meter2.cpp
* Main UI handler
*/
#include "d/meter/d_meter2.h"
#include "JSystem/JKernel/JKRExpHeap.h"
@@ -15,8 +15,9 @@
#include "d/meter/d_meter_HIO.h"
#include "d/meter/d_meter_button.h"
#include "d/meter/d_meter_haihai.h"
#include "d/meter/d_meter_map.h"
#include "d/meter/d_meter_hakusha.h"
#include "d/meter/d_meter_map.h"
#include "d/meter/d_meter_string.h"
#include "dol2asm.h"
#include "f_op/f_op_msg_mng.h"
#include "rel/d/a/d_a_horse/d_a_horse.h"
@@ -2025,9 +2026,6 @@ void dMeter2_c::moveButtonS() {
}
/* 80222518-80222E88 21CE58 0970+00 1/1 0/0 0/0 .text moveButtonXY__9dMeter2_cFv */
// dMeter2Info_isDirectUseItem is the issue. If you set the return value to int all through the
// stack, it matches but then dMeter2Info_isDirectUseItem itself doesn't match.
#ifdef NONMATCHING
void dMeter2_c::moveButtonXY() {
bool sp8[2];
bool spC[2];
@@ -2319,16 +2317,6 @@ void dMeter2_c::moveButtonXY() {
alphaAnimeButton();
dMeter2Info_resetDirectUseItem();
}
#else
#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
#endif
/* 80222E88-802230F8 21D7C8 0270+00 1/1 0/0 0/0 .text moveButtonCross__9dMeter2_cFv */
void dMeter2_c::moveButtonCross() {
@@ -3079,6 +3067,27 @@ 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 */
// gameinfo loads have issues
#ifdef NONMATCHING
void dMeter2_c::alphaAnimeRupee() {
if ((mStatus & 0x4000) || ((mStatus & 0x40) && dComIfGp_event_checkHind(0x80)) ||
daPy_getPlayerActorClass()->i_getSumouMode() ||
(daPy_getPlayerActorClass()->checkCanoeSlider() && dComIfG_getTimerMode() == 4) ||
((strcmp(dComIfGp_getStartStageName(), "R_SP127") != 0 || dComIfGp_event_checkHind(0x80)) &&
(((mStatus & 0x40000000) && !(mStatus & 0x100)) || (mStatus & 0x1000) ||
(mStatus & 0x100000))) ||
(mStatus & 0x80000000) || (mStatus & 8) || (mStatus & 0x10) || (mStatus & 0x01000000) ||
((mStatus & 0x20) != 0) || (mStatus & 0x04000000) || (mStatus & 0x08000000) ||
(mStatus & 0x10000000) || dMeter2Info_isSub2DStatus(1))
{
mpMeterDraw->setAlphaRupeeAnimeMin();
} else {
mpMeterDraw->setAlphaRupeeAnimeMax();
}
mpMeterDraw->setAlphaRupeeChange(false);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -3087,26 +3096,29 @@ asm void dMeter2_c::alphaAnimeRupee() {
#include "asm/d/meter/d_meter2/alphaAnimeRupee__9dMeter2_cFv.s"
}
#pragma pop
/* void dMeter2_c::alphaAnimeRupee() {
if ((mStatus & 0x4000) || ((mStatus & 0x40) && dComIfGp_event_checkHind(0x80)) ||
((daPy_getPlayerActorClass()->i_getSumouMode() != 0) ||
(daPy_getPlayerActorClass()->checkCanoeSlider() && dComIfG_getTimerMode() == 4) ||
(!strcmp(dComIfGp_getStartStageName(), "R_SP127") && dComIfGp_event_checkHind(0x80)) ||
((mStatus & 0x40000000) && ((mStatus & 0x100) || (mStatus & 0x1000))) ||
(mStatus & 0x100000) || (mStatus & 0x100000) || (mStatus & 0x80000000) || (mStatus & 8) ||
(mStatus & 0x10) || (mStatus & 0x01000000) || (mStatus & 0x20) || (mStatus & 0x04000000) ||
(mStatus & 0x08000000) || (mStatus & 0x10000000)) || dMeter2Info_isSub2DStatus(1))
{
mpMeterDraw->setAlphaRupeeAnimeMin();
} else {
mpMeterDraw->setAlphaRupeeAnimeMax();
}
mpMeterDraw->setAlphaRupeeChange(false);
} */
#endif
/* 80224F70-802250F4 21F8B0 0184+00 1/1 0/0 0/0 .text alphaAnimeKey__9dMeter2_cFv */
// masking issues
#ifdef NONMATCHING
void dMeter2_c::alphaAnimeKey() {
if ((mStatus & 0x4000) || ((mStatus & 0x40) && dComIfGp_event_checkHind(0x40)) ||
!isKeyVisible() || (mStatus & 0x40000000) || (mStatus & 0x1000) || (mStatus & 0x100000) ||
(mStatus & 0x80000000) || daPy_getPlayerActorClass()->i_getSumouMode() ||
(daPy_getPlayerActorClass()->checkCanoeSlider() &&
(dComIfG_getTimerMode() == 3 || dComIfG_getTimerMode() == 4)) ||
(mStatus & 0x100) || (mStatus & 8) || (mStatus & 0x10) ||
(mStatus & 0x1000000) | (mStatus & 0x20) || (mStatus & 0x4000000) ||
(mStatus & 0x8000000) || (mStatus & 0x10000000) || dMeter2Info_isSub2DStatus(1))
{
mpMeterDraw->setAlphaKeyAnimeMin();
} else {
mpMeterDraw->setAlphaKeyAnimeMax();
}
mpMeterDraw->setAlphaKeyChange(false);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -3115,6 +3127,7 @@ asm void dMeter2_c::alphaAnimeKey() {
#include "asm/d/meter/d_meter2/alphaAnimeKey__9dMeter2_cFv.s"
}
#pragma pop
#endif
/* 802250F4-802254C0 21FA34 03CC+00 1/1 0/0 0/0 .text alphaAnimeButton__9dMeter2_cFv */
void dMeter2_c::alphaAnimeButton() {
@@ -3287,7 +3300,7 @@ void dMeter2_c::killSubContents(u8 param_0) {
}
/* 80225960-802259F8 2202A0 0098+00 1/1 0/0 0/0 .text isKeyVisible__9dMeter2_cFv */
BOOL dMeter2_c::isKeyVisible() {
u8 dMeter2_c::isKeyVisible() {
if (dStage_stagInfo_ChkKeyDisp(i_dComIfGp_getStage()->getStagInfo())) {
if (dStage_stagInfo_GetSTType(i_dComIfGp_getStage()->getStagInfo()) == ST_FIELD) {
return dComIfGs_getKeyNum() != 0;
+60 -50
View File
@@ -5,13 +5,13 @@
#include "d/meter/d_meter2_info.h"
#include "JSystem/J2DGraph/J2DTextBox.h"
#include "d/a/d_a_npc.h"
#include "d/d_item_data.h"
#include "d/meter/d_meter2.h"
#include "d/meter/d_meter_map.h"
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"
#include "dolphin/types.h"
#include "d/a/d_a_npc.h"
#include "d/d_item_data.h"
#include "global.h"
//
@@ -353,11 +353,9 @@ void dMeter2Info_c::resetFloatingMessage() {
/* 8021C238-8021C250 216B78 0018+00 0/0 2/2 0/0 .text decMsgKeyWaitTimer__13dMeter2Info_cFv */
void dMeter2Info_c::decMsgKeyWaitTimer() {
if (mMsgKeyWaitTimer <= 0) {
return;
if (mMsgKeyWaitTimer > 0) {
mMsgKeyWaitTimer--;
}
mMsgKeyWaitTimer--;
}
/* 8021C250-8021C370 216B90 0120+00 0/0 16/16 0/0 .text
@@ -388,7 +386,7 @@ void dMeter2Info_c::getString(u32 stringID, char* outStr, JMSMesgEntry_c* p_msgE
if (stringID == *(u16*)(entry + 0x14)) {
strcpy(outStr, (char*)(strPtr + *(u32*)(entry + 0x10)));
if (p_msgEntry == NULL) {
return;
return;
}
memcpy(p_msgEntry, entry + 0x10, 0x14);
return;
@@ -455,7 +453,8 @@ f32 dMeter2Info_c::getStringLength(J2DTextBox* p_textBox, char* str) {
}
strWidth = 0.0f;
} else {
strWidth += charSpace + (fontSize.mSizeX * ((f32)font->getWidth(*str) / (f32)font->getCellWidth()));
strWidth += charSpace +
(fontSize.mSizeX * ((f32)font->getWidth(*str) / (f32)font->getCellWidth()));
}
}
@@ -491,8 +490,7 @@ asm JUTFont* J2DTextBox::getFont() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm f32 dMeter2Info_c::getStringLength(JUTFont* param_0, f32 param_1, f32 param_2,
char* param_3) {
asm f32 dMeter2Info_c::getStringLength(JUTFont* param_0, f32 param_1, f32 param_2, char* param_3) {
nofralloc
#include "asm/d/meter/d_meter2_info/getStringLength__13dMeter2Info_cFP7JUTFontffPc.s"
}
@@ -506,8 +504,8 @@ void dMeter2Info_c::onDirectUseItem(int param_0) {
/* 8021C950-8021C970 217290 0020+00 0/0 4/4 0/0 .text isDirectUseItem__13dMeter2Info_cFi
*/
bool dMeter2Info_c::isDirectUseItem(int param_0) {
return (mDirectUseItem & (u8)(1 << param_0)) != 0;
BOOL dMeter2Info_c::isDirectUseItem(int param_0) {
return (mDirectUseItem & (u8)(1 << param_0)) ? TRUE : FALSE;
}
/* 80430188-80430280 05CEA8 00F8+00 4/4 267/267 70/70 .bss g_meter2_info */
@@ -515,19 +513,21 @@ dMeter2Info_c g_meter2_info;
/* 8021C970-8021C9DC 2172B0 006C+00 0/0 0/0 5/5 .text setMeterString__13dMeter2Info_cFl
*/
int dMeter2Info_c::setMeterString(s32 meterStr) {
int dMeter2Info_c::setMeterString(s32 i_string) {
if (mMeterString != 0) {
return 0;
}
if (meterStr == 0) {
if (i_string == 0) {
return 0;
}
if (dMeter2Info_getMeterClass() != NULL &&
(dMeter2Info_getMeterClass()->getSubContents() == 0 ||
(dMeter2Info_getMeterClass()->getSubContents() == 5 && dMeter2Info_getMeterClass()->getSubContentsStringType() == 0))) {
mMeterString = meterStr;
if (dMeter2Info_getMeterClass() != NULL &&
(dMeter2Info_getMeterClass()->getSubContents() == 0 ||
(dMeter2Info_getMeterClass()->getSubContents() == 5 &&
dMeter2Info_getMeterClass()->getSubContentsStringType() == 0)))
{
mMeterString = i_string;
return 1;
}
@@ -586,7 +586,6 @@ void dMeter2Info_c::warpOutProc() {
dComIfGs_setItem(SLOT_18, DUNGEON_BACK);
}
/* 8021CC00-8021CC0C 217540 000C+00 0/0 1/1 1/1 .text resetMeterString__13dMeter2Info_cFv
*/
void dMeter2Info_c::resetMeterString() {
@@ -662,7 +661,7 @@ u8 dMeter2Info_c::getItemType(u8 itemNo) {
case 0x7A:
return 0x16;
case 0x7B:
case 0x7E:
case 0x7E:
return 0x17;
case 0x7C:
return 0x18;
@@ -678,9 +677,9 @@ u8 dMeter2Info_c::getItemType(u8 itemNo) {
case 0x9E:
return 0x1D;
case 0x70:
case 0x71:
case 0x72:
case 0x74:
case 0x71:
case 0x72:
case 0x74:
return 0x1E;
case 0x73:
case 0x75:
@@ -690,7 +689,7 @@ u8 dMeter2Info_c::getItemType(u8 itemNo) {
case 0x5A:
return 34;
default:
return 0;
return 0;
}
}
#else
@@ -709,27 +708,34 @@ asm u8 dMeter2Info_c::getItemType(u8 param_0) {
*/
#ifdef NONMATCHING
int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2, void* param_3,
J2DPicture* param_4, void* param_5, J2DPicture* param_6,
void* param_7, J2DPicture* param_8, int param_9) {
J2DPicture* param_4, void* param_5, J2DPicture* param_6,
void* param_7, J2DPicture* param_8, int param_9) {
u8 itemType = getItemType(itemNo);
int ret = 0;
if (param_1 != NULL) {
if ((itemNo == KANTERA && dComIfGs_getOil() == 0) || itemNo == KANTERA2) {
dComIfGp_getItemIconArchive()->readIdxResource(param_1, 0xC00, 0x23);
} else if (itemNo == COPY_ROD && !daPy_getPlayerActorClass()->checkCopyRodTopUse() && param_9 == -1) {
} else if (itemNo == COPY_ROD && !daPy_getPlayerActorClass()->checkCopyRodTopUse() &&
param_9 == -1)
{
dComIfGp_getItemIconArchive()->readIdxResource(param_1, 0xC00, 0x57);
} else if ((itemType == 0x1B || itemType == 0x1C || itemType == 0x1D || itemType == 0x1E) && param_5 == NULL) {
} else if ((itemType == 0x1B || itemType == 0x1C || itemType == 0x1D || itemType == 0x1E) &&
param_5 == NULL)
{
dComIfGp_getItemIconArchive()->readIdxResource(param_1, 0xC00, get2ndTexture(itemType));
} else if (param_9 >= 0) {
dComIfGp_getItemIconArchive()->readIdxResource(param_1, 0xC00, param_9);
} else {
dComIfGp_getItemIconArchive()->readIdxResource(param_1, 0xC00, dItem_data::getTexture(itemNo));
dComIfGp_getItemIconArchive()->readIdxResource(param_1, 0xC00,
dItem_data::getTexture(itemNo));
}
DCStoreRangeNoSync(param_1, 0xC00);
if (param_2 != NULL) {
if ((itemType == 0x1B || itemType == 0x1C || itemType == 0x1D || itemType == 0x1E) && param_5 == NULL) {
if ((itemType == 0x1B || itemType == 0x1C || itemType == 0x1D || itemType == 0x1E) &&
param_5 == NULL)
{
set2ndColor(itemType, param_2);
} else {
set1stColor(itemType, param_2);
@@ -739,8 +745,11 @@ int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2
ret = 1;
if (param_3 != NULL && get2ndTexture(itemType) > 0) {
if ((itemType == 0x1B || itemType == 0x1C || itemType == 0x1D || itemType == 0x1E) && param_5 == NULL) {
dComIfGp_getItemIconArchive()->readIdxResource(param_3, 0xC00, get3rdTexture(itemType));
if ((itemType == 0x1B || itemType == 0x1C || itemType == 0x1D || itemType == 0x1E) &&
param_5 == NULL)
{
dComIfGp_getItemIconArchive()->readIdxResource(param_3, 0xC00,
get3rdTexture(itemType));
DCStoreRangeNoSync(param_3, 0xC00);
if (param_4 != NULL) {
set3rdColor(itemType, param_4);
@@ -748,7 +757,8 @@ int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2
}
ret = 2;
} else {
dComIfGp_getItemIconArchive()->readIdxResource(param_3, 0xC00, get2ndTexture(itemType));
dComIfGp_getItemIconArchive()->readIdxResource(param_3, 0xC00,
get2ndTexture(itemType));
DCStoreRangeNoSync(param_3, 0xC00);
if (param_4 != NULL) {
set2ndColor(itemType, param_4);
@@ -757,7 +767,8 @@ int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2
ret = 2;
if (param_5 != NULL && get3rdTexture(itemType) > 0) {
dComIfGp_getItemIconArchive()->readIdxResource(param_5, 0xC00, get3rdTexture(itemType));
dComIfGp_getItemIconArchive()->readIdxResource(param_5, 0xC00,
get3rdTexture(itemType));
DCStoreRangeNoSync(param_5, 0xC00);
if (param_6 != NULL) {
set3rdColor(itemType, param_6);
@@ -766,7 +777,8 @@ int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2
ret = 3;
if (param_7 != NULL && get4thTexture(itemType) > 0) {
dComIfGp_getItemIconArchive()->readIdxResource(param_3, 0xC00, get4thTexture(itemType));
dComIfGp_getItemIconArchive()->readIdxResource(param_3, 0xC00,
get4thTexture(itemType));
DCStoreRangeNoSync(param_7, 0xC00);
if (param_8 != NULL) {
set4thColor(itemType, param_8);
@@ -774,7 +786,7 @@ int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2
}
ret = 4;
}
}
}
}
}
}
@@ -785,9 +797,10 @@ int dMeter2Info_c::readItemTexture(u8 itemNo, void* param_1, J2DPicture* param_2
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int dMeter2Info_c::readItemTexture(u8 param_0, void* param_1, J2DPicture* param_2, void* param_3,
J2DPicture* param_4, void* param_5, J2DPicture* param_6,
void* param_7, J2DPicture* param_8, int param_9) {
asm int dMeter2Info_c::readItemTexture(u8 param_0, void* param_1, J2DPicture* param_2,
void* param_3, J2DPicture* param_4, void* param_5,
J2DPicture* param_6, void* param_7, J2DPicture* param_8,
int param_9) {
nofralloc
#include "asm/d/meter/d_meter2_info/func_8021CF08.s"
}
@@ -1352,16 +1365,11 @@ s16 dMeter2Info_getNowLifeGauge() {
/* 8021E2C8-8021E2DC 218C08 0014+00 0/0 11/11 3/3 .text dMeter2Info_getNumberTextureName__Fi */
const char* dMeter2Info_getNumberTextureName(int nameIdx) {
static const char* tex_name[10] = {
"im_font_number_32_32_ganshinkyo_0_02.bti",
"im_font_number_32_32_ganshinkyo_1_02.bti",
"im_font_number_32_32_ganshinkyo_2_02.bti",
"im_font_number_32_32_ganshinkyo_3_02.bti",
"im_font_number_32_32_ganshinkyo_4_03.bti",
"im_font_number_32_32_ganshinkyo_5_02.bti",
"im_font_number_32_32_ganshinkyo_6_02.bti",
"im_font_number_32_32_ganshinkyo_7_02.bti",
"im_font_number_32_32_ganshinkyo_8_02.bti",
"im_font_number_32_32_ganshinkyo_9_02.bti",
"im_font_number_32_32_ganshinkyo_0_02.bti", "im_font_number_32_32_ganshinkyo_1_02.bti",
"im_font_number_32_32_ganshinkyo_2_02.bti", "im_font_number_32_32_ganshinkyo_3_02.bti",
"im_font_number_32_32_ganshinkyo_4_03.bti", "im_font_number_32_32_ganshinkyo_5_02.bti",
"im_font_number_32_32_ganshinkyo_6_02.bti", "im_font_number_32_32_ganshinkyo_7_02.bti",
"im_font_number_32_32_ganshinkyo_8_02.bti", "im_font_number_32_32_ganshinkyo_9_02.bti",
};
return tex_name[nameIdx];
@@ -1470,7 +1478,9 @@ bool dMeter2Info_isMapOpenCheck() {
/* 8021E688-8021E6E4 218FC8 005C+00 0/0 2/2 0/0 .text dMeter2Info_isItemOpenCheck__Fv */
bool dMeter2Info_isItemOpenCheck() {
if (daPy_getPlayerActorClass()->checkCanoeSlider() || daPy_getPlayerActorClass()->i_getSumouMode() || dMeter2Info_isSub2DStatus(1)) {
if (daPy_getPlayerActorClass()->checkCanoeSlider() ||
daPy_getPlayerActorClass()->i_getSumouMode() || dMeter2Info_isSub2DStatus(1))
{
return false;
}
return true;
+57 -195
View File
@@ -5,10 +5,9 @@
#include "d/meter/d_meter_map.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "d/menu/d_menu_window.h"
#include "d/meter/d_meter2_info.h"
#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_overlap_mng.h"
#include "m_Do/m_Do_controller_pad.h"
@@ -190,47 +189,14 @@ asm bool dMeterMap_c::isEventRunCheck() {
#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) {
@@ -240,50 +206,24 @@ f32 dMeterMap_c::getMapDispEdgeTop() {
}
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
*/
// matches with literals
#ifdef NONMATCHING
s16 dMeterMap_c::getDispPosOutSide_OffsetX() {
f32 dvar3 = -36.0f - mSizeW;
f32 offset = 0.0f;
if (mMap != NULL) {
offset = mMap->getTexelPerCm() * mMap->getPackX();
offset +=(mMap->getRightEdgePlus() + (mMap->getTexelPerCm() * mMap->getPackPlusZ()));
offset += (mMap->getRightEdgePlus() + (mMap->getTexelPerCm() * mMap->getPackPlusZ()));
}
dvar3 += offset;
return dvar3 - 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
*/
@@ -304,8 +244,8 @@ void dMeterMap_c::setDispPosOutsideFlg_SE_On() {
}
/* 8020D8F8-8020D900 -00001 0008+00 0/0 0/0 0/0 .text setMapAlpha__11dMeterMap_cFUc */
void dMeterMap_c::setMapAlpha(u8 alpha) {
mMapAlpha = alpha;
void dMeterMap_c::setMapAlpha(u8 i_alpha) {
mMapAlpha = i_alpha;
}
/* 8020D900-8020D948 208240 0048+00 3/3 1/1 0/0 .text isMapOpenCheck__11dMeterMap_cFv */
@@ -313,22 +253,9 @@ bool dMeterMap_c::isMapOpenCheck() {
return dStage_stagInfo_GetUpButton(i_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);
dMeterMap_c::dMeterMap_c(J2DScreen* i_scrn) {
_create(i_scrn);
}
/* 8020D990-8020D9EC 2082D0 005C+00 1/0 0/0 0/0 .text __dt__11dMeterMap_cFv */
@@ -338,9 +265,7 @@ dMeterMap_c::~dMeterMap_c() {
/* 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) {
void dMeterMap_c::_create(J2DScreen* unused) {
s32 sizeX;
s32 sizeY;
s32 dispSizeW;
@@ -421,16 +346,6 @@ void dMeterMap_c::_create(J2DScreen* param_0) {
field_0x30 = 0;
field_0x2b = i_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() {
@@ -451,16 +366,7 @@ void dMeterMap_c::_delete() {
}
}
/* ############################################################################################## */
/* 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 */
// matches with literals
#ifdef NONMATCHING
void dMeterMap_c::_move(u32 param_0) {
if (!field_0x2b && i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[118])) {
if (strcmp(dComIfGp_getStartStageName(), "F_SP115") == 0) {
@@ -478,7 +384,8 @@ void dMeterMap_c::_move(u32 param_0) {
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) {
dMeter2Info_getPauseStatus() == 3 || dMeter2Info_getPauseStatus() == 5)
{
ctrlShowMap();
}
@@ -498,16 +405,6 @@ void dMeterMap_c::_move(u32 param_0) {
mMap->_move(map_pos.x, map_pos.z, stayNo, map_pos.y);
field_0x30 = i_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() {
@@ -530,28 +427,22 @@ void dMeterMap_c::draw() {
}
}
/* ############################################################################################## */
/* 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()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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) {
dMeter2Info_getPauseStatus() == 2 || dMeter2Info_getPauseStatus() == 6)
{
if (dMeter2Info_getMapStatus() == 0 && field_0x2d == 0) {
setDispPosInsideFlg_SE_On();
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
dMeter2Info_set2DVibration();
dMeter2Info_setMapStatus(1);
}
@@ -561,7 +452,7 @@ void dMeterMap_c::ctrlShowMap() {
case 1:
dMeter2Info_setMapStatus(4);
break;
case 2:
case 7:
dMeter2Info_setMapStatus(7);
break;
case 3:
@@ -570,16 +461,16 @@ void dMeterMap_c::ctrlShowMap() {
case 5:
dMeter2Info_setMapStatus(9);
break;
case 6:
case 2:
dMeter2Info_setMapStatus(5);
break;
case 7:
case 6:
dMeter2Info_setMapStatus(3);
break;
}
dMeter2Info_setMapKeyDirection(0x400);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
dMeter2Info_set2DVibration();
}
dMeter2Info_resetPauseStatus();
@@ -589,8 +480,8 @@ void dMeterMap_c::ctrlShowMap() {
if (isDmapScreen()) {
if (dMeter2Info_getMapStatus() == 0 && field_0x2d == 0) {
setDispPosInsideFlg_SE_On();
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f,
1.0f, -1.0f, -1.0f, 0);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
dMeter2Info_set2DVibration();
dMeter2Info_setMapStatus(1);
}
@@ -598,8 +489,8 @@ void dMeterMap_c::ctrlShowMap() {
if (dMeter2Info_getMapStatus() == 1 && field_0x2d != 0) {
dMeter2Info_setMapStatus(6);
dMeter2Info_setMapKeyDirection(0x400);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f,
1.0f, -1.0f, -1.0f, 0);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
dMeter2Info_set2DVibration();
}
}
@@ -627,16 +518,6 @@ void dMeterMap_c::ctrlShowMap() {
}
}
}
#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 */
u8 dMeterMap_c::checkMoveStatus() {
@@ -669,7 +550,8 @@ bool dMeterMap_c::isShow(u32 param_0) {
(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)) {
daPy_getPlayerActorClass()->checkEnemyAttentionLock() || dMeter2Info_isGameStatus(2))
{
return false;
}
return true;
@@ -691,7 +573,8 @@ bool dMeterMap_c::isFmapScreen() {
dStage_stagInfo_GetUpButton(i_dComIfGp_getStage()->getStagInfo()) == 5 ||
dStage_stagInfo_GetUpButton(i_dComIfGp_getStage()->getStagInfo()) == 3 ||
dStage_stagInfo_GetUpButton(i_dComIfGp_getStage()->getStagInfo()) == 4 ||
dStage_stagInfo_GetUpButton(i_dComIfGp_getStage()->getStagInfo()) == 6) {
dStage_stagInfo_GetUpButton(i_dComIfGp_getStage()->getStagInfo()) == 6)
{
return true;
}
return false;
@@ -703,40 +586,41 @@ bool dMeterMap_c::isDmapScreen() {
}
/* 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()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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() && !i_dComIfGp_event_runCheck() && !dMsgObject_isTalkNowCheck() &&
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) {
if (dMw_LEFT_TRIGGER() && !i_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()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
Z2GetAudioMgr()->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() && !i_dComIfGp_event_runCheck() &&
!dMsgObject_isTalkNowCheck() &&
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1)) {
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1))
{
if (!dMeter2Info_isSub2DStatus(1)) {
if (isFmapScreen() || isDmapScreen()) {
dMeter2Info_setMapStatus(2);
dMeter2Info_setMapKeyDirection(0x400);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
dMeter2Info_set2DVibration();
}
}
@@ -744,88 +628,66 @@ void dMeterMap_c::meter_map_move(u32 param_0) {
}
}
}
#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)) {
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1))
{
if (dMeter2Info_getMapStatus() == 1) {
if (isDispPosInsideFlg()) {
setDispPosOutsideFlg_SE_On();
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_CLOSE_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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)) {
(dMeter2Info_getMapStatus() == 0 || dMeter2Info_getMapStatus() == 1))
{
if (dMeter2Info_getMapStatus() == 0) {
if (isEnableDispMapAndMapDispSizeTypeNo()) {
if (!isDispPosInsideFlg()) {
setDispPosInsideFlg_SE_On();
Z2GetAudioMgr()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f,
-1.0f, -1.0f, 0);
Z2GetAudioMgr()->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()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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()->seStart(Z2SE_SY_MAP_OPEN_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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()->seStart(Z2SE_SY_MAP_CLOSE_S, NULL, 0, 0, 1.0f, 1.0f, -1.0f,
-1.0f, 0);
Z2GetAudioMgr()->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 */
+235 -283
View File
@@ -1,315 +1,267 @@
//
// Generated By: dol2asm
// Translation Unit: d/meter/d_meter_string
//
/**
* d_meter_string.cpp
* UI Mini-Game Text
*/
#include "d/meter/d_meter_string.h"
#include "dol2asm.h"
//
// Types:
//
struct dMeterSub_c {
/* 80194138 */ bool isDead();
};
struct dMeterString_c {
/* 8020ED60 */ dMeterString_c(int);
/* 8020EDF4 */ ~dMeterString_c();
/* 8020EE70 */ void _create();
/* 8020F150 */ void _execute(u32);
/* 8020F1B0 */ void draw();
/* 8020F49C */ void _delete();
/* 8020F5A4 */ void createString(int);
/* 8020F66C */ void playBckAnimation(f32);
/* 8020F6EC */ void drawPikari();
/* 8020FA88 */ void isLeadByte(int);
};
struct JMSMesgEntry_c {};
struct dMeter2Info_c {
/* 8021C250 */ void getString(u32, char*, JMSMesgEntry_c*);
/* 8021CC00 */ void resetMeterString();
};
struct JUtility {
struct TColor {};
};
struct dMeter2Draw_c {
/* 802140DC */ void drawPikari(f32, f32, f32*, f32, JUtility::TColor, JUtility::TColor,
JUtility::TColor, JUtility::TColor, f32, u8);
};
struct JKRFileLoader {
/* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*);
};
struct JKRExpHeap {};
struct JKRArchive {};
struct J2DTextBox {
/* 80300658 */ void getStringPtr() const;
/* 8030074C */ void setString(s16, char const*, ...);
};
struct J2DGrafContext {};
struct J2DScreen {
/* 802F8498 */ J2DScreen();
/* 802F8648 */ void setPriority(char const*, u32, JKRArchive*);
/* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*);
};
struct J2DPane {
/* 802F7AFC */ void getParentPane();
/* 802F7FCC */ void animationTransform();
};
struct J2DAnmLoaderDataBase {
/* 80308A6C */ void load(void const*);
};
struct CPaneMgrAlpha {
/* 802557D0 */ void setAlphaRate(f32);
};
struct CPaneMgr {
/* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
/* 802545B0 */ void paneTrans(f32, f32);
/* 80254EBC */ void getGlobalVtxCenter(J2DPane*, bool, s16);
};
//
// Forward References:
//
extern "C" void __ct__14dMeterString_cFi();
extern "C" void __dt__14dMeterString_cFv();
extern "C" void _create__14dMeterString_cFv();
extern "C" void _execute__14dMeterString_cFUl();
extern "C" void draw__14dMeterString_cFv();
extern "C" void _delete__14dMeterString_cFv();
extern "C" void createString__14dMeterString_cFi();
extern "C" void playBckAnimation__14dMeterString_cFf();
extern "C" void drawPikari__14dMeterString_cFv();
extern "C" void isLeadByte__14dMeterString_cFi();
extern "C" extern char const* const d_meter_d_meter_string__stringBase0;
//
// External References:
//
extern "C" void mDoExt_getMesgFont__Fv();
extern "C" void dComIfG_TimerDeleteRequest__Fi();
extern "C" bool isDead__11dMeterSub_cFv();
extern "C" void
drawPikari__13dMeter2Draw_cFffPffQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorfUc();
extern "C" void getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c();
extern "C" void resetMeterString__13dMeter2Info_cFv();
extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
extern "C" void paneTrans__8CPaneMgrFff();
extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
extern "C" void dTimer_createTimer__FlUlUcUcffff();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader();
extern "C" void getParentPane__7J2DPaneFv();
extern "C" void animationTransform__7J2DPaneFv();
extern "C" void __ct__9J2DScreenFv();
extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
extern "C" void getStringPtr__10J2DTextBoxCFv();
extern "C" void setString__10J2DTextBoxFsPCce();
extern "C" void load__20J2DAnmLoaderDataBaseFPCv();
extern "C" void _savegpr_23();
extern "C" void _restgpr_23();
extern "C" void strcpy();
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern void* __vt__11dMeterSub_c[8 + 3 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_drawHIO[3880];
extern "C" extern u8 g_meter2_info[248];
//
// Declarations:
//
/* ############################################################################################## */
/* 803BF308-803BF328 01C428 0020+00 2/2 0/0 0/0 .data __vt__14dMeterString_c */
SECTION_DATA extern void* __vt__14dMeterString_c[8] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)draw__14dMeterString_cFv,
(void*)__dt__14dMeterString_cFv,
(void*)_create__14dMeterString_cFv,
(void*)_execute__14dMeterString_cFUl,
(void*)_delete__14dMeterString_cFv,
(void*)isDead__11dMeterSub_cFv,
};
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/J2DGraph/J2DTextBox.h"
#include "JSystem/JUtility/JUTFont.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_timer.h"
#include "d/meter/d_meter2_draw.h"
#include "d/meter/d_meter2_info.h"
#include "d/meter/d_meter_HIO.h"
#include "d/pane/d_pane_class.h"
/* 8020ED60-8020EDF4 2096A0 0094+00 0/0 1/1 0/0 .text __ct__14dMeterString_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMeterString_c::dMeterString_c(int param_0) {
nofralloc
#include "asm/d/meter/d_meter_string/__ct__14dMeterString_cFi.s"
dMeterString_c::dMeterString_c(int i_stringID) {
mpMapArchive = dComIfGp_getAllMapArchive();
field_0x28 = 0;
mStringID = i_stringID;
_create();
if (mpMapArchive != NULL) {
createString(mStringID);
}
}
#pragma pop
/* 8020EDF4-8020EE70 209734 007C+00 1/0 0/0 0/0 .text __dt__14dMeterString_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMeterString_c::~dMeterString_c() {
nofralloc
#include "asm/d/meter/d_meter_string/__dt__14dMeterString_cFv.s"
dMeterString_c::~dMeterString_c() {
_delete();
}
#pragma pop
/* ############################################################################################## */
/* 80398210-80398210 024870 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80398210 = "zelda_game_image_cow_get_in.blo";
SECTION_DEAD static char const* const stringBase_80398230 = "zelda_game_image_cow_get_in.bck";
SECTION_DEAD static char const* const stringBase_80398250 = "";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_80398251 = "\0\0\0\0\0\0";
#pragma pop
/* 80454848-8045484C 002E48 0004+00 1/1 0/0 0/0 .sdata2 @3758 */
SECTION_SDATA2 static f32 lit_3758 = 210.0f;
/* 8045484C-80454850 002E4C 0004+00 1/1 0/0 0/0 .sdata2 @3759 */
SECTION_SDATA2 static f32 lit_3759 = 410.0f;
/* 80454850-80454854 002E50 0004+00 1/1 0/0 0/0 .sdata2 @3760 */
SECTION_SDATA2 static f32 lit_3760 = 32.0f;
/* 80454854-80454858 002E54 0004+00 1/1 0/0 0/0 .sdata2 @3761 */
SECTION_SDATA2 static f32 lit_3761 = 419.0f;
/* 80454858-8045485C 002E58 0004+00 3/3 0/0 0/0 .sdata2 @3762 */
SECTION_SDATA2 static u8 lit_3762[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 8020EE70-8020F150 2097B0 02E0+00 1/0 0/0 0/0 .text _create__14dMeterString_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::_create() {
nofralloc
#include "asm/d/meter/d_meter_string/_create__14dMeterString_cFv.s"
int dMeterString_c::_create() {
if (mpMapArchive == NULL) {
if (field_0x28 == 0) {
dTimer_createTimer(9, 0x989298, 0, 0, 210.0f, 410.0f, 32.0f, 419.0f);
field_0x28 = 1;
}
if (dComIfGp_getAllMapArchive() == NULL) {
return cPhs_ERROR_e;
}
mpMapArchive = dComIfGp_getAllMapArchive();
}
mpScreen = new J2DScreen();
JUT_ASSERT(mpScreen != 0);
bool fg = mpScreen->setPriority("zelda_game_image_cow_get_in.blo", 0x20000, mpMapArchive);
JUT_ASSERT(fg != false);
dPaneClass_showNullPane(mpScreen);
i_OSInitFastCast();
mpGetInBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(
JKRGetNameResource("zelda_game_image_cow_get_in.bck", mpMapArchive));
mpParentPane = new CPaneMgr(mpScreen, 'get_in_n', 2, NULL);
JUT_ASSERT(mpParentPane != 0);
mpRootPane = new CPaneMgr(mpScreen, 'n_all', 0, NULL);
JUT_ASSERT(mpRootPane != 0);
mpTextPane = new CPaneMgr(mpScreen, 'get_in', 0, NULL);
JUT_ASSERT(mpTextPane != 0);
static_cast<J2DTextBox*>(mpScreen->search('get_in_s'))->setFont(mDoExt_getMesgFont());
static_cast<J2DTextBox*>(mpScreen->search('get_in'))->setFont(mDoExt_getMesgFont());
static_cast<J2DTextBox*>(mpScreen->search('get_in_s'))->setString(0x100, "");
static_cast<J2DTextBox*>(mpScreen->search('get_in'))->setString(0x100, "");
mAnimFrame = 0.0f;
mPikariAnimFrame = 0.0f;
mOffsetX = 0;
mOffsetY = 0;
mStringID2 = 0;
field_0x3c = 0xFF;
playBckAnimation(0.0f);
return cPhs_COMPLEATE_e;
}
#pragma pop
/* 8020F150-8020F1B0 209A90 0060+00 1/0 0/0 0/0 .text _execute__14dMeterString_cFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::_execute(u32 param_0) {
nofralloc
#include "asm/d/meter/d_meter_string/_execute__14dMeterString_cFUl.s"
int dMeterString_c::_execute(u32 unused) {
if (mpMapArchive == NULL) {
_create();
if (mpMapArchive != NULL) {
createString(mStringID);
}
}
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 8045485C-80454860 002E5C 0004+00 1/1 0/0 0/0 .sdata2 @3819 */
SECTION_SDATA2 static f32 lit_3819 = 60.0f;
/* 80454860-80454864 002E60 0004+00 2/2 0/0 0/0 .sdata2 @3820 */
SECTION_SDATA2 static f32 lit_3820 = 1.0f;
/* 80454864-80454868 002E64 0004+00 2/2 0/0 0/0 .sdata2 @3821 */
SECTION_SDATA2 static f32 lit_3821 = -1.0f;
/* 80454868-80454870 002E68 0004+04 1/1 0/0 0/0 .sdata2 @3822 */
SECTION_SDATA2 static f32 lit_3822[1 + 1 /* padding */] = {
18.0f,
/* padding */
0.0f,
};
/* 80454870-80454878 002E70 0008+00 2/2 0/0 0/0 .sdata2 @3824 */
SECTION_SDATA2 static f64 lit_3824 = 4503601774854144.0 /* cast s32 to float */;
/* 8020F1B0-8020F49C 209AF0 02EC+00 1/0 0/0 0/0 .text draw__14dMeterString_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::draw() {
nofralloc
#include "asm/d/meter/d_meter_string/draw__14dMeterString_cFv.s"
void dMeterString_c::draw() {
if (mpMapArchive != NULL && !dComIfGp_isPauseFlag()) {
J2DGrafContext* graf_ctx = dComIfGp_getCurrentGrafPort();
graf_ctx->setup2D();
f32 var_f31 = (f32)g_drawHIO.mMiniGame.field_0x172 +
((f32)g_drawHIO.mMiniGame.mReadyFightTextWaitFrames + 60.0f);
if (mAnimFrame > 0.0f && mAnimFrame < var_f31) {
f32 var_f30 = 1.0f;
if (mAnimFrame < 60.0f) {
mAnimFrame += g_drawHIO.mMiniGame.mReadyFightTextAnimSpeed;
if (mAnimFrame > 60.0f) {
mAnimFrame = 60.0f;
}
playBckAnimation(mAnimFrame);
} else if (mAnimFrame < (f32)g_drawHIO.mMiniGame.mReadyFightTextWaitFrames + 60.0f) {
mAnimFrame += var_f30;
} else if (mAnimFrame < var_f31) {
mAnimFrame += var_f30;
var_f30 = acc(g_drawHIO.mMiniGame.field_0x172, var_f31 - mAnimFrame, 0);
}
mpParentPane->setAlphaRate(var_f30);
mpRootPane->paneTrans(mOffsetX + g_drawHIO.mMiniGame.mReadyFightTextPosX,
mOffsetY + g_drawHIO.mMiniGame.mReadyFightTextPosY);
mpRootPane->scale(g_drawHIO.mMiniGame.mReadyFightTextSizeX,
g_drawHIO.mMiniGame.mReadyFightTextSizeY);
mpScreen->draw(0.0f, 0.0f, graf_ctx);
if (mPikariAnimFrame > 0.0f) {
drawPikari();
} else if (mPikariAnimFrame == -1.0f &&
mAnimFrame > g_drawHIO.mMiniGame.mReadyFightHighlightAppearFrames)
{
mPikariAnimFrame = 18.0f - g_drawHIO.mMiniGame.mReadyFightHighlightAnimSpeed;
}
if (mAnimFrame >= var_f31) {
dMeter2Info_resetMeterString();
}
}
}
}
#pragma pop
/* 8020F49C-8020F5A4 209DDC 0108+00 1/0 0/0 0/0 .text _delete__14dMeterString_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::_delete() {
nofralloc
#include "asm/d/meter/d_meter_string/_delete__14dMeterString_cFv.s"
}
#pragma pop
int dMeterString_c::_delete() {
delete mpScreen;
mpScreen = NULL;
/* ############################################################################################## */
/* 80454878-8045487C 002E78 0004+00 1/1 0/0 0/0 .sdata2 @3866 */
SECTION_SDATA2 static f32 lit_3866 = 40.0f;
delete mpGetInBck;
mpGetInBck = NULL;
delete mpParentPane;
mpParentPane = NULL;
delete mpRootPane;
mpRootPane = NULL;
delete mpTextPane;
mpTextPane = NULL;
if (field_0x28 != 0) {
dComIfG_TimerDeleteRequest(9);
}
return 1;
}
/* 8020F5A4-8020F66C 209EE4 00C8+00 2/2 1/1 0/0 .text createString__14dMeterString_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::createString(int param_0) {
nofralloc
#include "asm/d/meter/d_meter_string/createString__14dMeterString_cFi.s"
int dMeterString_c::createString(int i_stringID) {
char str_buf[32];
dMeter2Info_getString(i_stringID, str_buf, NULL);
strcpy(static_cast<J2DTextBox*>(mpScreen->search('get_in_s'))->getStringPtr(), str_buf);
strcpy(static_cast<J2DTextBox*>(mpScreen->search('get_in'))->getStringPtr(), str_buf);
mAnimFrame = 40.0f;
mPikariAnimFrame = -1.0f;
mOffsetX = 0;
mOffsetY = 0;
mStringID2 = i_stringID;
return 1;
}
#pragma pop
/* 8020F66C-8020F6EC 209FAC 0080+00 2/2 0/0 0/0 .text playBckAnimation__14dMeterString_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::playBckAnimation(f32 param_0) {
nofralloc
#include "asm/d/meter/d_meter_string/playBckAnimation__14dMeterString_cFf.s"
void dMeterString_c::playBckAnimation(f32 i_frame) {
mpParentPane->getPanePtr()->setAnimation(mpGetInBck);
mpGetInBck->setFrame(i_frame);
mpParentPane->getPanePtr()->animationTransform();
mpParentPane->getPanePtr()->setAnimation((J2DAnmTransform*)NULL);
}
#pragma pop
/* ############################################################################################## */
/* 8045487C-80454880 002E7C 0004+00 1/1 0/0 0/0 .sdata2 @3979 */
SECTION_SDATA2 static f32 lit_3979 = 0.5f;
/* 8020F6EC-8020FA88 20A02C 039C+00 1/1 0/0 0/0 .text drawPikari__14dMeterString_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::drawPikari() {
nofralloc
#include "asm/d/meter/d_meter_string/drawPikari__14dMeterString_cFv.s"
void dMeterString_c::drawPikari() {
f32 anim_frame = mPikariAnimFrame;
Vec center = mpTextPane->getGlobalVtxCenter(false, 0);
char* string = static_cast<J2DTextBox*>(mpTextPane->getPanePtr())->getStringPtr();
s16 str_idx = 0;
f32 var_f25 = 0.0f;
f32 var_f29 = 0.0f;
J2DTextBox::TFontSize font_size;
static_cast<J2DTextBox*>(mpTextPane->getPanePtr())->getFontSize(font_size);
JUTFont* font_p = mDoExt_getMesgFont();
f32 var_f28 = 1.0f;
for (J2DPane* pane = mpTextPane->getPanePtr(); pane != NULL; pane = pane->getParentPane()) {
var_f28 *= pane->getScaleX();
}
for (; string[str_idx] != 0; str_idx++) {
int c = string[str_idx] & 0xFF;
if (str_idx > 0) {
var_f25 += var_f28 * static_cast<J2DTextBox*>(mpTextPane->getPanePtr())->getCharSpace();
}
if (isLeadByte(c)) {
c = ((string[str_idx] & 0xFF) << 8) | (string[str_idx + 1] & 0xFF);
str_idx++;
} else {
c = string[str_idx] & 0xFF;
}
var_f25 +=
var_f28 * (font_size.mSizeX * ((f32)font_p->getWidth(c) / (f32)font_p->getCellWidth()));
}
var_f25 = center.x - (var_f25 / 2);
f32 frame;
for (str_idx = 0; string[str_idx] != 0; str_idx++) {
frame = anim_frame;
int c = string[str_idx] & 0xFF;
if (str_idx > 0) {
var_f29 += var_f28 * static_cast<J2DTextBox*>(mpTextPane->getPanePtr())->getCharSpace();
}
if (isLeadByte(c)) {
c = ((string[str_idx] & 0xFF) << 8) | (string[str_idx + 1] & 0xFF);
str_idx++;
} else {
c = string[str_idx] & 0xFF;
}
f32 temp_f24 =
var_f28 * (font_size.mSizeX * ((f32)font_p->getWidth(c) / (f32)font_p->getCellWidth()));
if (c != 0x20 && c != 0x8140) {
dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari(
(temp_f24 / 2) + (var_f25 + var_f29), center.y, &frame,
g_drawHIO.mMiniGame.mReadyFightHighlightScale,
g_drawHIO.mMiniGame.mReadyFightHighlightFrontOuter,
g_drawHIO.mMiniGame.mReadyFightHighlightFrontInner,
g_drawHIO.mMiniGame.mReadyFightHighlightBackOuter,
g_drawHIO.mMiniGame.mReadyFightHighlightBackInner,
g_drawHIO.mMiniGame.mReadyFightHighlightAnimSpeed, 0);
}
var_f29 += temp_f24;
}
mPikariAnimFrame = frame;
}
#pragma pop
/* 8020FA88-8020FAB4 20A3C8 002C+00 1/1 0/0 0/0 .text isLeadByte__14dMeterString_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMeterString_c::isLeadByte(int param_0) {
nofralloc
#include "asm/d/meter/d_meter_string/isLeadByte__14dMeterString_cFi.s"
bool dMeterString_c::isLeadByte(int c) {
return (c >= 0x81 && c <= 0x9F) || (c >= 0xE0 && c <= 0xFC);
}
#pragma pop
/* 80398210-80398210 024870 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */