summaryrefslogtreecommitdiff
path: root/src/d/meter
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-01-25 12:24:14 -0800
committerGitHub <noreply@github.com>2022-01-25 21:24:14 +0100
commit612f26c132280da43ecfa5fa8c8cc32966f06eb6 (patch)
treeac20d071712cf830ec526222c98d340d90721f77 /src/d/meter
parent6f4d068f1d7c5a9f25f1920e64e5b10dc29aea07 (diff)
d_kankyo_wether / d_eye_hl (#178)
* d_eye_hl / d_kankyo_wether wip * more d_kankyo_wether + format * remove asm * some d_kankyo wip * fix dccs vtable * some m_Do_graphic / d_meter2_draw work
Diffstat (limited to 'src/d/meter')
-rw-r--r--src/d/meter/d_meter2_draw.cpp723
-rw-r--r--src/d/meter/d_meter_HIO.cpp16
2 files changed, 586 insertions, 153 deletions
diff --git a/src/d/meter/d_meter2_draw.cpp b/src/d/meter/d_meter2_draw.cpp
index 85392410c6..4fe4ed13bf 100644
--- a/src/d/meter/d_meter2_draw.cpp
+++ b/src/d/meter/d_meter2_draw.cpp
@@ -6,7 +6,9 @@
#include "d/meter/d_meter2_draw.h"
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "d/com/d_com_inf_game.h"
+#include "d/d_kantera_icon_meter.h"
#include "d/meter/d_meter_HIO.h"
+#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -14,14 +16,6 @@
// Types:
//
-struct dKantera_icon_c {
- /* 801AE938 */ dKantera_icon_c();
- /* 801AEB7C */ void setAlphaRate(f32);
- /* 801AEBA0 */ void setPos(f32, f32);
- /* 801AEBF4 */ void setScale(f32, f32);
- /* 801AEC44 */ void setNowGauge(u16, u16);
-};
-
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
@@ -231,57 +225,46 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
// Declarations:
//
+inline bool dComIfGp_checkPlayerStatus0(int param_0, u32 param_1) {
+ return g_dComIfG_gameInfo.play.checkPlayerStatus(param_0, 0, param_1);
+}
+
/* ############################################################################################## */
/* 80398258-80398280 0248B8 0028+00 4/4 0/0 0/0 .rodata a_tag$3949 */
-SECTION_RODATA static u8 const a_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x61, 0x74, 0x34, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x61, 0x74,
+static u64 const a_tag[5] = {
+ 'cont_at1', 'cont_at2', 'cont_at3', 'cont_at4', 'cont_at',
};
-COMPILER_STRIP_GATE(0x80398258, &a_tag);
/* 80398280-803982A8 0248E0 0028+00 0/1 0/0 0/0 .rodata b_tag$3950 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const b_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x62, 0x74, 0x34, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x62, 0x74,
+static u64 const b_tag[5] = {
+ 'cont_bt1', 'cont_bt2', 'cont_bt3', 'cont_bt4', 'cont_bt',
};
-COMPILER_STRIP_GATE(0x80398280, &b_tag);
#pragma pop
/* 803982A8-803982D0 024908 0028+00 0/1 0/0 0/0 .rodata z_tag$3951 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const z_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x7A,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x7A, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x7A, 0x74, 0x34, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x72, 0x74,
+static u64 const z_tag[5] = {
+ 'cont_zt1', 'cont_zt2', 'cont_zt3', 'cont_zt4', 'cont_rt',
};
-COMPILER_STRIP_GATE(0x803982A8, &z_tag);
#pragma pop
/* 803982D0-803982F8 024930 0028+00 0/1 0/0 0/0 .rodata x_tag$3952 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const x_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x78, 0x74, 0x34, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x78, 0x74, 0x35,
+static u64 const x_tag[5] = {
+ 'cont_xt1', 'cont_xt2', 'cont_xt3', 'cont_xt4', 'cont_xt5',
};
-COMPILER_STRIP_GATE(0x803982D0, &x_tag);
#pragma pop
/* 803982F8-80398320 024958 0028+00 0/1 0/0 0/0 .rodata y_tag$3953 */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const y_tag[40] = {
- 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79, 0x74, 0x31, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79,
- 0x74, 0x32, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79, 0x74, 0x33, 0x63, 0x6F, 0x6E, 0x74,
- 0x5F, 0x79, 0x74, 0x34, 0x63, 0x6F, 0x6E, 0x74, 0x5F, 0x79, 0x74, 0x35,
+static u64 const y_tag[5] = {
+ 'cont_yt1', 'cont_yt2', 'cont_yt3', 'cont_yt4', 'cont_yt5',
};
-COMPILER_STRIP_GATE(0x803982F8, &y_tag);
#pragma pop
/* 803988D0-803988D0 024F30 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -307,17 +290,9 @@ SECTION_DEAD static char const* const stringBase_803989BF = "";
#pragma pop
/* 803BF328-803BF350 -00001 0028+00 1/1 0/0 0/0 .data bmg_filename$3954 */
-SECTION_DATA static void* bmg_filename[10] = {
- (void*)&d_meter_d_meter2_draw__stringBase0,
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0xB),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x16),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x21),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x2C),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x37),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x42),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x4D),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x58),
- (void*)(((char*)&d_meter_d_meter2_draw__stringBase0) + 0x63),
+SECTION_DATA static char* bmg_filename[10] = {
+ "zel_00.bmg", "zel_01.bmg", "zel_02.bmg", "zel_03.bmg", "zel_04.bmg",
+ "zel_05.bmg", "zel_06.bmg", "zel_07.bmg", "zel_08.bmg", "zel_99.bmg",
};
/* 803BF350-803BF554 01C470 0204+00 1/1 0/0 0/0 .data i_action_num$8471 */
@@ -527,6 +502,91 @@ SECTION_SDATA2 static f32 lit_4185 = 20.0f;
/* 8020FAB4-802102F8 20A3F4 0844+00 0/0 1/1 0/0 .text __ct__13dMeter2Draw_cFP10JKRExpHeap
*/
+#ifdef NONMATCHING
+dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* p_heap) {
+ mp_heap = p_heap;
+ JKRHeap* heap = mDoExt_setCurrentHeap(dComIfGp_getMsgExpHeap());
+
+ void* msg_res = JKRGetTypeResource('ROOT', "zel_00.bmg", dComIfGp_getMsgDtArchive(0));
+ dMeter2Info_setMsgResource(msg_res);
+
+ void* stg_msg_res = JKRGetTypeResource('ROOT', bmg_filename[dMsgObject_getGroupID()],
+ dComIfGp_getMsgDtArchive(1));
+ dMeter2Info_setStageMsgResource(stg_msg_res);
+
+ void* msg_unit_res = JKRGetTypeResource('ROOT', "zel_unit.bmg", dComIfGp_getMsgDtArchive(0));
+ dMeter2Info_setMsgUnitResource(msg_unit_res);
+ mDoExt_setCurrentHeap(heap);
+
+ mpScreen = new J2DScreen();
+ mpScreen->setPriority("zelda_game_image.blo", 0x20000, dComIfGp_getMain2DArchive());
+ dPaneClass_showNullPane(mpScreen);
+ mpScreen->search('ju_ring5')->hide();
+
+ field_0x73c = 0.0f;
+ for (int i = 0; i < 2; i++) {
+ mpKanteraMeter[i] = new dKantera_icon_c();
+ }
+ mpKanteraScreen = new J2DScreen();
+ mpKanteraScreen->setPriority("zelda_game_image_kantera.blo", 0x20000,
+ dComIfGp_getMain2DArchive());
+ dPaneClass_showNullPane(mpKanteraScreen);
+
+ mpPikariScreen = new J2DScreen();
+ mpPikariScreen->setPriority("zelda_icon_pikari.blo", 0x20000, dComIfGp_getMain2DArchive());
+ dPaneClass_showNullPane(mpPikariScreen);
+ mpPikariParent = new CPaneMgr(mpPikariScreen, 'pika_n', 0, NULL);
+ field_0x548 = ((J2DPicture*)mpPikariScreen->search('pika00'))->getBlack();
+ field_0x54c = ((J2DPicture*)mpPikariScreen->search('pika00'))->getWhite();
+ OSInitFastCast();
+ void* pikari_bck = JKRGetNameResource("zelda_icon_pikari.bck", dComIfGp_getMain2DArchive());
+ mPikariBck = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(pikari_bck);
+ playPikariBckAnimation(1.0f);
+ void* pikari_bpk = JKRGetNameResource("zelda_icon_pikari.bpk", dComIfGp_getMain2DArchive());
+ mPikariBpk = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(pikari_bpk);
+ mPikariBpk->searchUpdateMaterialID(mpPikariScreen);
+ playPikariBpkAnimation(1.0f);
+
+ mpParent = new CPaneMgr(mpScreen, 'n_all', 2, NULL);
+ for (int i = 0; i < 5; i++) {
+ mpAText[i] = new CPaneMgr(mpScreen, a_tag[i], 0, NULL);
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setCharSpace(g_drawHIO.mAButtonFontSpacing);
+
+ mpBText[i] = new CPaneMgr(mpScreen, b_tag[i], 0, NULL);
+ ((J2DTextBox*)mpBText[i]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpBText[i]->getPanePtr())->setFont(mDoExt_getMesgFont());
+
+ mpXYText[i][2] = new CPaneMgr(mpScreen, z_tag[i], 0, NULL);
+ ((J2DTextBox*)mpXYText[i][2]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpXYText[i][2]->getPanePtr())->setFont(mDoExt_getMesgFont());
+
+ mpXYText[i][0] = new CPaneMgr(mpScreen, x_tag[i], 0, NULL);
+ ((J2DTextBox*)mpXYText[i][0]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpXYText[i][0]->getPanePtr())->setFont(mDoExt_getMesgFont());
+
+ mpXYText[i][1] = new CPaneMgr(mpScreen, y_tag[i], 0, NULL);
+ ((J2DTextBox*)mpXYText[i][1]->getPanePtr())->setString(64, "");
+ ((J2DTextBox*)mpXYText[i][1]->getPanePtr())->setFont(mDoExt_getMesgFont());
+ }
+
+ J2DTextBox::TFontSize font_size = {lit_4184, lit_4185};
+ for (int i = 0; i < 5; i++) {
+ ((J2DTextBox*)mpAText[i]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpBText[i]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpXYText[i][2]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpXYText[i][0]->getPanePtr())->setFontSize(font_size);
+ ((J2DTextBox*)mpXYText[i][1]->getPanePtr())->setFontSize(font_size);
+ }
+
+ init();
+ field_0xa8 = 0;
+ field_0x1e4 = 0;
+ field_0x2fc = 0;
+ field_0x36c = 0;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -535,36 +595,437 @@ asm dMeter2Draw_c::dMeter2Draw_c(JKRExpHeap* param_0) {
#include "asm/d/meter/d_meter2_draw/__ct__13dMeter2Draw_cFP10JKRExpHeap.s"
}
#pragma pop
+#endif
/* 802102F8-80210FB0 20AC38 0CB8+00 1/0 0/0 0/0 .text __dt__13dMeter2Draw_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dMeter2Draw_c::~dMeter2Draw_c() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/__dt__13dMeter2Draw_cFv.s"
+dMeter2Draw_c::~dMeter2Draw_c() {
+ dComIfGp_getMsgDtArchive(0)->removeResource(dMeter2Info_getMsgResource());
+ dComIfGp_getMsgDtArchive(0)->removeResource(dMeter2Info_getMsgUnitResource());
+ dComIfGp_getItemIconArchive()->removeResourceAll();
+
+ delete mpScreen;
+ mpScreen = NULL;
+
+ delete mpKanteraScreen;
+ mpKanteraScreen = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ delete mpKanteraMeter[i];
+ mpKanteraMeter[i] = NULL;
+ }
+
+ delete mpParent;
+ mpParent = NULL;
+
+ delete mpPikariScreen;
+ mpPikariScreen = NULL;
+
+ delete mpPikariParent;
+ mpPikariParent = NULL;
+
+ delete mPikariBck;
+ mPikariBck = NULL;
+
+ delete mPikariBpk;
+ mPikariBpk = NULL;
+
+ for (int i = 0; i < 5; i++) {
+ delete mpAText[i];
+ mpAText[i] = NULL;
+
+ delete mpBText[i];
+ mpBText[i] = NULL;
+
+ for (int j = 0; j < 3; j++) {
+ delete mpXYText[i][j];
+ mpXYText[i][j] = NULL;
+ }
+ }
+
+ delete mpLifeParent;
+ mpLifeParent = NULL;
+
+ for (int i = 0; i < 20; i++) {
+ delete mpLifeParts[i];
+ mpLifeParts[i] = NULL;
+
+ delete mpHeartMask[i];
+ mpHeartMask[i] = NULL;
+
+ delete mpHeartBase[i];
+ mpHeartBase[i] = NULL;
+
+ delete mpLifeTexture[i][0];
+ mpLifeTexture[i][0] = NULL;
+
+ delete mpLifeTexture[i][1];
+ mpLifeTexture[i][1] = NULL;
+ }
+
+ delete mpBigHeart;
+ mpBigHeart = NULL;
+
+ delete mpMagicParent;
+ mpMagicParent = NULL;
+
+ delete mpMagicBase;
+ mpMagicBase = NULL;
+
+ delete mpMagicFrameL;
+ mpMagicFrameL = NULL;
+
+ delete mpMagicFrameR;
+ mpMagicFrameR = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete field_0x53c[i];
+ field_0x53c[i] = NULL;
+ }
+
+ delete mpMagicMeter;
+ mpMagicMeter = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ delete mpSIParent[i];
+ mpSIParent[i] = NULL;
+ }
+
+ delete mpLightDropParent;
+ mpLightDropParent = NULL;
+
+ for (int i = 0; i < 16; i++) {
+ for (int j = 0; j < 3; j++) {
+ if (mpSIParts[i][j] != NULL) {
+ delete mpSIParts[i][j];
+ mpSIParts[i][j] = NULL;
+ }
+ }
+ }
+
+ delete mpRupeeKeyParent;
+ mpRupeeKeyParent = NULL;
+
+ for (int i = 0; i < 4; i++) {
+ delete mpRupeeTexture[i][0];
+ mpRupeeTexture[i][0] = NULL;
+
+ delete mpRupeeTexture[i][1];
+ mpRupeeTexture[i][1] = NULL;
+ }
+
+ for (int i = 0; i < 3; i++) {
+ delete mpRupeeParent[i];
+ mpRupeeParent[i] = NULL;
+ }
+
+ for (int i = 0; i < 5; i++) {
+ delete mpKeyTexture[i];
+ mpKeyTexture[i] = NULL;
+ }
+
+ delete mpKeyParent;
+ mpKeyParent = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 2; j++) {
+ mp_heap->free(mpItemBTex[i][j]);
+ mpItemBTex[i][j] = NULL;
+ }
+ }
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 2; j++) {
+ for (int k = 0; k < 2; k++) {
+ mp_heap->free(mpItemXYTex[i][j][k]);
+ mpItemXYTex[i][j][k] = NULL;
+ }
+ }
+ }
+
+ delete mpItemB;
+ mpItemB = NULL;
+ mpItemBPane = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ if (mpItemXY[i] != NULL) {
+ delete mpItemXY[i];
+ mpItemXY[i] = NULL;
+ }
+ }
+
+ delete mpItemR;
+ mpItemR = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ mpItemXYPane[i] = NULL;
+ }
+
+ delete mpLightB;
+ mpLightB = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ if (mpLightXY[i] != NULL) {
+ delete mpLightXY[i];
+ mpLightXY[i] = NULL;
+ }
+ }
+
+ delete mpBTextA;
+ mpBTextA = NULL;
+
+ delete mpBTextB;
+ mpBTextB = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ if (mpBTextXY[i] != NULL) {
+ delete mpBTextXY[i];
+ mpBTextXY[i] = NULL;
+ }
+ }
+
+ delete mpTextA;
+ mpTextA = NULL;
+
+ delete mpTextB;
+ mpTextB = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete mpTextXY[i];
+ mpTextXY[i] = NULL;
+ }
+
+ delete mpTextI;
+ mpTextI = NULL;
+
+ delete mpTextM;
+ mpTextM = NULL;
+
+ for (int i = 0; i < 5; i++) {
+ if (mpJujiI[i] != NULL) {
+ delete mpJujiI[i];
+ mpJujiI[i] = NULL;
+ }
+
+ if (mpJujiM[i] != NULL) {
+ delete mpJujiM[i];
+ mpJujiM[i] = NULL;
+ }
+ }
+
+ delete mpButtonParent;
+ mpButtonParent = NULL;
+
+ delete mpButtonA;
+ mpButtonA = NULL;
+
+ delete mpButtonB;
+ mpButtonB = NULL;
+
+ delete mpButtonMidona;
+ mpButtonMidona = NULL;
+
+ for (int i = 0; i < 3; i++) {
+ delete mpButtonXY[i];
+ mpButtonXY[i] = NULL;
+ }
+
+ if (mpUzu != NULL) {
+ delete mpUzu;
+ mpUzu = NULL;
+ }
+
+ delete mpButtonCrossParent;
+ mpButtonCrossParent = NULL;
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 3; j++) {
+ if (mpItemNumTex[i][j] != NULL) {
+ delete mpItemNumTex[i][j];
+ mpItemNumTex[i][j] = NULL;
+ }
+ }
+ }
+
+ for (int i = 0; i < 3; i++) {
+ if (field_0x9c[i] != NULL) {
+ delete field_0x9c[i];
+ field_0x9c[i] = NULL;
+ }
+ }
}
-#pragma pop
/* 80210FB0-8021135C 20B8F0 03AC+00 1/1 0/0 0/0 .text init__13dMeter2Draw_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::init() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/init__13dMeter2Draw_cFv.s"
+void dMeter2Draw_c::init() {
+ f32 tmp_0 = FLOAT_LABEL(lit_4182);
+ field_0x608 = tmp_0;
+ field_0x60c = tmp_0;
+
+ for (int i = 0; i < 3; i++) {
+ field_0x620[i] = tmp_0;
+ field_0x610[i] = tmp_0;
+ }
+
+ f32 tmp_0_1 = FLOAT_LABEL(lit_4182);
+ field_0x61c = tmp_0_1;
+ for (int i = 0; i < 16; i++) {
+ field_0x62c[i] = tmp_0_1;
+ field_0x66c[i] = tmp_0_1;
+ }
+
+ field_0x759 = 0;
+ field_0x75a = 0;
+ for (int i = 0; i < 3; i++) {
+ field_0x75c[i] = 0;
+ }
+
+ field_0x75f = 0;
+ field_0x756 = -1;
+
+ field_0x760 = 0;
+
+ int j = 0;
+ f32 tmp_0_3 = FLOAT_LABEL(lit_4182);
+ for (; j < 3; j++) {
+ field_0x6ac[j] = tmp_0_3;
+ field_0x6b8[j] = tmp_0_3;
+ field_0x6c4[j] = tmp_0_3;
+ field_0x6d0[j] = tmp_0_3;
+ }
+
+ f32 tmp_0_4 = FLOAT_LABEL(lit_4182);
+ field_0x6dc = tmp_0_4;
+ field_0x6e0 = tmp_0_4;
+ field_0x6e4 = tmp_0_4;
+ field_0x6e8 = tmp_0_4;
+ field_0x6ec = tmp_0_4;
+ field_0x6f0 = tmp_0_4;
+ mHUDScale = g_drawHIO.mHUDScale;
+ mHUDAlpha = g_drawHIO.mHUDAlpha;
+ mButtonsPosX = tmp_0_4;
+ mButtonsPosY = tmp_0_4;
+ mButtonsScale = lit_4183;
+ field_0x78c = g_drawHIO.mButtonDisplayBackScale;
+ field_0x790 = tmp_0_4;
+ mLifeGaugeHeartAlpha = g_drawHIO.mLifeGaugeHeartAlpha;
+ mLifeGaugeBaseAlpha = g_drawHIO.mLifeGaugeBaseAlpha;
+ mHeartAlpha = g_drawHIO.mHeartAlpha;
+ mLargeHeartAlpha = g_drawHIO.mLargeHeartAlpha;
+ field_0x7a4 = tmp_0_4;
+ mMagicMeterAlpha = g_drawHIO.mMagicMeterAlpha;
+ mMagicMeterFrameAlpha = g_drawHIO.mMagicMeterFrameAlpha;
+ field_0x7b0 = tmp_0_4;
+ mLanternMeterAlpha = g_drawHIO.mLanternMeterAlpha;
+ mLanternMeterFrameAlpha = g_drawHIO.mLanternMeterFrameAlpha;
+ field_0x7bc = tmp_0_4;
+ mOxygenMeterAlpha = g_drawHIO.mOxygenMeterAlpha;
+ mOxygenMeterFrameAlpha = g_drawHIO.mOxygenMeterFrameAlpha;
+ field_0x7c8 = tmp_0_4;
+ field_0x861 = 0;
+ field_0x860 = 0;
+ field_0x7cc = g_drawHIO.mHUDAlpha;
+ field_0x7d0 = g_drawHIO.mRupeeKeyAlpha;
+ mRupeeAlpha = g_drawHIO.mRupeeAlpha;
+ mRupeeFrameAlpha = g_drawHIO.mRupeeFrameAlpha;
+ mRupeeCountAlpha = g_drawHIO.mRupeeCountAlpha;
+ field_0x7e0 = g_drawHIO.mHUDAlpha;
+ field_0x7e4 = g_drawHIO.mRupeeKeyAlpha;
+ mKeyAlpha = g_drawHIO.mKeyAlpha;
+ mKeyNumAlpha = g_drawHIO.mKeyNumAlpha;
+ field_0x7f0 = g_drawHIO.mHUDAlpha;
+ mMainHUDButtonsAlpha = g_drawHIO.mMainHUDButtonsAlpha;
+ mButtonDisplayBackAlpha = g_drawHIO.mButtonDisplayBackAlpha;
+ mAButtonAlpha = g_drawHIO.mAButtonAlpha;
+ mBButtonAlpha = g_drawHIO.mBButtonAlpha;
+ mXButtonAlpha = g_drawHIO.mXButtonAlpha;
+ mYButtonAlpha = g_drawHIO.mYButtonAlpha;
+ field_0x80c = g_drawHIO.field_0x168;
+ field_0x810 = g_drawHIO.mZButtonAlpha;
+
+ for (int i = 0; i < 2; i++) {
+ mBItemBaseAlpha[i] = g_drawHIO.mBItemBaseAlpha[i];
+ mXButtonItemBaseAlpha[i] = g_drawHIO.mXButtonItemBaseAlpha[i];
+ mYButtonItemBaseAlpha[i] = g_drawHIO.mYButtonItemBaseAlpha[i];
+ field_0x82c[i] = g_drawHIO.field_0x298[i];
+ }
+
+ mZButtonItemBaseAlpha = g_drawHIO.mZButtonItemBaseAlpha;
+ mButtonBaseAlpha = g_drawHIO.mButtonBaseAlpha;
+ mAButtonFontSpacing = g_drawHIO.mAButtonFontSpacing;
+ mDPadButtonAlpha = g_drawHIO.mDPadButtonAlpha;
+ mDPadButtonITEMAlpha = g_drawHIO.mDPadButtonITEMAlpha;
+ mDPadButtonMAPAlpha = g_drawHIO.mDPadButtonMAPAlpha;
+ field_0x84c = g_drawHIO.mAButtonFontColor.r;
+ field_0x84d = g_drawHIO.mAButtonFontColor.g;
+ field_0x84e = g_drawHIO.mAButtonFontColor.b;
+ field_0x84f = g_drawHIO.mAButtonFontColor.a;
+ field_0x850 = g_drawHIO.mBButtonFontColor.r;
+ field_0x851 = g_drawHIO.mBButtonFontColor.g;
+ field_0x852 = g_drawHIO.mBButtonFontColor.b;
+ field_0x853 = g_drawHIO.mBButtonFontColor.a;
+ field_0x854 = g_drawHIO.field_0x2f0.r;
+ field_0x855 = g_drawHIO.field_0x2f0.g;
+ field_0x856 = g_drawHIO.field_0x2f0.b;
+ field_0x857 = g_drawHIO.field_0x2f0.a;
+ field_0x858 = g_drawHIO.mZButtonFontColor.r;
+ field_0x859 = g_drawHIO.mZButtonFontColor.g;
+ field_0x85a = g_drawHIO.mZButtonFontColor.b;
+ field_0x85b = g_drawHIO.mZButtonFontColor.a;
+ field_0x85c = g_drawHIO.mXYButtonFontColor.r;
+ field_0x85d = g_drawHIO.mXYButtonFontColor.g;
+ field_0x85e = g_drawHIO.mXYButtonFontColor.b;
+ field_0x85f = g_drawHIO.mXYButtonFontColor.a;
+
+ setItemParamX(0);
+ setItemParamY(0);
+ setItemParamZ(0);
+ setItemParamB(0);
+ initLife();
+ initMagic();
+ initLightDrop();
+ initRupeeKey();
+ initButton();
+ initButtonCross();
+ field_0x772 = 0;
}
-#pragma pop
/* 8021135C-8021151C 20BC9C 01C0+00 0/0 1/1 0/0 .text exec__13dMeter2Draw_cFUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::exec(u32 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/exec__13dMeter2Draw_cFUl.s"
+void dMeter2Draw_c::exec(u32 param_0) {
+ if (mHUDScale != g_drawHIO.mHUDScale) {
+ mHUDScale = g_drawHIO.mHUDScale;
+ mpParent->scale(g_drawHIO.mHUDScale, g_drawHIO.mHUDScale);
+ }
+
+ if (mHUDAlpha != g_drawHIO.mHUDAlpha) {
+ mHUDAlpha = g_drawHIO.mHUDAlpha;
+ mpParent->setAlphaRate(g_drawHIO.mHUDAlpha);
+ }
+
+ if (param_0 & 0x1000000) {
+ if (mButtonsPosX != g_drawHIO.mRingHUDButtonsPosX ||
+ mButtonsPosY != g_drawHIO.mRingHUDButtonsPosY) {
+ mButtonsPosX = g_drawHIO.mRingHUDButtonsPosX;
+ mButtonsPosY = g_drawHIO.mRingHUDButtonsPosY;
+ mpButtonParent->paneTrans(g_drawHIO.mRingHUDButtonsPosX, g_drawHIO.mRingHUDButtonsPosY);
+ }
+
+ if (mButtonsScale != g_drawHIO.mRingHUDButtonsScale) {
+ mButtonsScale = g_drawHIO.mRingHUDButtonsScale;
+ mpButtonParent->scale(g_drawHIO.mRingHUDButtonsScale, g_drawHIO.mRingHUDButtonsScale);
+ }
+ } else {
+ if (mButtonsPosX != g_drawHIO.mMainHUDButtonsPosX ||
+ mButtonsPosY != g_drawHIO.mMainHUDButtonsPosY) {
+ mButtonsPosX = g_drawHIO.mMainHUDButtonsPosX;
+ mButtonsPosY = g_drawHIO.mMainHUDButtonsPosY;
+ mpButtonParent->paneTrans(g_drawHIO.mMainHUDButtonsPosX, g_drawHIO.mMainHUDButtonsPosY);
+ }
+
+ if (mButtonsScale != g_drawHIO.mMainHUDButtonsScale) {
+ mButtonsScale = g_drawHIO.mMainHUDButtonsScale;
+ mpButtonParent->scale(g_drawHIO.mMainHUDButtonsScale, g_drawHIO.mMainHUDButtonsScale);
+ }
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80454890-80454894 002E90 0004+00 1/1 0/0 0/0 .sdata2 @4921 */
@@ -704,6 +1165,7 @@ SECTION_DEAD static char const* const stringBase_80398A0A = "zelda_game_image_sa
#pragma pop
/* 80211E64-80212190 20C7A4 032C+00 1/1 0/0 0/0 .text initMagic__13dMeter2Draw_cFv */
+// matches with literals
#ifdef NONMATCHING
void dMeter2Draw_c::initMagic() {
field_0x550 = 0.0f;
@@ -714,21 +1176,22 @@ void dMeter2Draw_c::initMagic() {
mpMagicFrameL = new CPaneMgr(mpKanteraScreen, 'm_w_l_n', 2, NULL);
mpMagicFrameR = new CPaneMgr(mpKanteraScreen, 'm_w_r_n', 2, NULL);
mpMagicMeter = new CPaneMgr(mpKanteraScreen, 'mm_00', 0, NULL);
+ OSInitFastCast();
void* res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_10percent.bpk",
dComIfGp_getMain2DArchive());
- field_0x53c = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
- field_0x53c->searchUpdateMaterialID(mpKanteraScreen);
+ field_0x53c[0] = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
+ field_0x53c[0]->searchUpdateMaterialID(mpKanteraScreen);
res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_25percent.bpk",
dComIfGp_getMain2DArchive());
- field_0x540 = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
- field_0x540->searchUpdateMaterialID(mpKanteraScreen);
+ field_0x53c[1] = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
+ field_0x53c[1]->searchUpdateMaterialID(mpKanteraScreen);
res = JKRFileLoader::getGlbResource("zelda_game_image_sanso_50percent.bpk",
dComIfGp_getMain2DArchive());
- field_0x544 = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
- field_0x544->searchUpdateMaterialID(mpKanteraScreen);
+ field_0x53c[2] = (J2DAnmColorKey*)J2DAnmLoaderDataBase::load(res);
+ field_0x53c[2]->searchUpdateMaterialID(mpKanteraScreen);
field_0x558 = 0.0f;
mpMagicParent->setAlphaRate(0.0f);
@@ -751,10 +1214,9 @@ void dMeter2Draw_c::initMagic() {
g_drawHIO.mMagicMeterPosY + offsetY);
setAlphaMagicChange(true);
- u16 oil = dComIfGs_getOil();
- u16 max_oil = dComIfGs_getMaxOil();
- drawKantera(max_oil, oil, g_drawHIO.mLanternMeterPosX + offsetX,
- g_drawHIO.mLanternMeterPosY + (g_drawHIO.mNoMagicPosY + offsetY));
+ drawKantera((u16)dComIfGs_getMaxOil(), (u16)dComIfGs_getOil(),
+ g_drawHIO.mLanternMeterPosX + offsetX,
+ g_drawHIO.mNoMagicPosY + (g_drawHIO.mLanternMeterPosY + offsetY));
setAlphaKanteraChange(true);
}
#else
@@ -908,35 +1370,28 @@ asm void dMeter2Draw_c::initButtonCross() {
#pragma pop
/* 80213CEC-80213D6C 20E62C 0080+00 3/3 0/0 0/0 .text playPikariBckAnimation__13dMeter2Draw_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::playPikariBckAnimation(f32 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/playPikariBckAnimation__13dMeter2Draw_cFf.s"
+void dMeter2Draw_c::playPikariBckAnimation(f32 frame) {
+ mpPikariParent->getPanePtr()->setAnimation(mPikariBck);
+ mPikariBck->setFrame(frame);
+ mpPikariParent->getPanePtr()->animationTransform();
+ mpPikariParent->getPanePtr()->setAnimation((J2DAnmTransformKey*)NULL);
}
-#pragma pop
/* 80213D6C-80213E3C 20E6AC 00D0+00 1/1 0/0 0/0 .text
* setPikariBpkAnimation__13dMeter2Draw_cFP11J2DAnmColor */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::setPikariBpkAnimation(J2DAnmColor* param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/setPikariBpkAnimation__13dMeter2Draw_cFP11J2DAnmColor.s"
+void dMeter2Draw_c::setPikariBpkAnimation(J2DAnmColor* p_anmcolor) {
+ mpPikariScreen->search('pika00')->setAnimation(p_anmcolor);
+ mpPikariScreen->search('moya00')->setAnimation(p_anmcolor);
+ mpPikariScreen->search('moyabs')->setAnimation(p_anmcolor);
}
-#pragma pop
/* 80213E3C-80213E94 20E77C 0058+00 3/3 0/0 0/0 .text playPikariBpkAnimation__13dMeter2Draw_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::playPikariBpkAnimation(f32 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/playPikariBpkAnimation__13dMeter2Draw_cFf.s"
+void dMeter2Draw_c::playPikariBpkAnimation(f32 frame) {
+ setPikariBpkAnimation(mPikariBpk);
+ mPikariBpk->setFrame(frame);
+ mpPikariScreen->animation();
+ setPikariBpkAnimation(NULL);
}
-#pragma pop
/* 80213E94-80213FF0 20E7D4 015C+00 1/1 0/0 0/0 .text
* playOxygenBpkAnimation__13dMeter2Draw_cFP11J2DAnmColor */
@@ -1414,14 +1869,12 @@ asm void dMeter2Draw_c::drawButtonC(u8 param_0, bool param_1) {
#pragma pop
/* 802179C0-80217A10 212300 0050+00 1/1 1/1 0/0 .text drawButtonS__13dMeter2Draw_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::drawButtonS(u8 param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/drawButtonS__13dMeter2Draw_cFUc.s"
+void dMeter2Draw_c::drawButtonS(u8 param_0) {
+ getActionString(param_0, 1, &field_0x767);
+ if (param_0 != 0) {
+ field_0x767 = 7;
+ }
}
-#pragma pop
/* 80217A10-80217AB4 212350 00A4+00 0/0 1/1 0/0 .text drawButtonBin__13dMeter2Draw_cFUc
*/
@@ -1671,14 +2124,10 @@ asm void dMeter2Draw_c::setButtonIconAlpha(int param_0, u8 param_1, u32 param_2,
/* 8021A29C-8021A2F4 214BDC 0058+00 1/1 0/0 0/0 .text getNumberTexture__13dMeter2Draw_cFi
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getNumberTexture(int param_0) {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getNumberTexture__13dMeter2Draw_cFi.s"
+ResTIMG* dMeter2Draw_c::getNumberTexture(int i) {
+ return (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG',
+ dMeter2Info_getNumberTextureName(i));
}
-#pragma pop
/* ############################################################################################## */
/* 80430158-80430178 05CE78 0020+00 1/1 0/0 0/0 .bss i_text_buf$8454 */
@@ -1795,14 +2244,9 @@ asm void dMeter2Draw_c::drawKanteraMeter(u8 param_0, f32 param_1) {
/* 8021B0C8-8021B104 215A08 003C+00 0/0 3/3 0/0 .text isButtonVisible__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::isButtonVisible() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/isButtonVisible__13dMeter2Draw_cFv.s"
+u8 dMeter2Draw_c::isButtonVisible() {
+ return (mpButtonParent->getAlphaRate() == FLOAT_LABEL(lit_4182)) ^ 1;
}
-#pragma pop
/* ############################################################################################## */
/* 804548E8-804548EC 002EE8 0004+00 2/2 0/0 0/0 .sdata2 @8992 */
@@ -1986,14 +2430,13 @@ asm void dMeter2Draw_c::setItemParamB(u8 param_0) {
/* 8021BB6C-8021BBB4 2164AC 0048+00 1/1 0/0 0/0 .text getFishingType__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getFishingType() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getFishingType__13dMeter2Draw_cFv.s"
+bool dMeter2Draw_c::getFishingType() {
+ if (dMeter2Info_isGameStatus(1) && getCanoeFishing()) {
+ return true;
+ } else {
+ return false;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 803988D0-803988D0 024F30 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -2010,14 +2453,14 @@ SECTION_DEAD static char const* const pad_80398A77 = "";
/* 8021BBB4-8021BC24 2164F4 0070+00 2/2 1/1 0/0 .text getCanoeFishing__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getCanoeFishing() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getCanoeFishing__13dMeter2Draw_cFv.s"
+bool dMeter2Draw_c::getCanoeFishing() {
+ if (!strcmp(dComIfGp_getStartStageName(), "F_SP127") &&
+ g_dComIfG_gameInfo.play.mPlayer[0]->checkCanoeRide()) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
}
-#pragma pop
/* 8021BC24-8021BC54 216564 0030+00 0/0 1/1 0/0 .text getCameraSubject__13dMeter2Draw_cFv
*/
@@ -2043,14 +2486,9 @@ asm void dMeter2Draw_c::getItemSubject() {
/* 8021BCAC-8021BCC0 2165EC 0014+00 0/0 1/1 0/0 .text getPlayerSubject__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getPlayerSubject() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getPlayerSubject__13dMeter2Draw_cFv.s"
+bool dMeter2Draw_c::getPlayerSubject() {
+ return dComIfGp_checkPlayerStatus0(0, 0x8000000);
}
-#pragma pop
/* 8021BCC0-8021BDD0 216600 0110+00 2/2 2/2 0/0 .text isBButtonShow__13dMeter2Draw_cFb */
#pragma push
@@ -2064,14 +2502,9 @@ asm void dMeter2Draw_c::isBButtonShow(bool param_0) {
/* 8021BDD0-8021BDDC 216710 000C+00 0/0 1/1 0/0 .text getButtonTimer__13dMeter2Draw_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dMeter2Draw_c::getButtonTimer() {
- nofralloc
-#include "asm/d/meter/d_meter2_draw/getButtonTimer__13dMeter2Draw_cFv.s"
+s16 dMeter2Draw_c::getButtonTimer() {
+ return mpButtonParent->getAlphaTimer();
}
-#pragma pop
/* ############################################################################################## */
/* 803988B8-803988D0 024F18 0018+00 0/0 0/0 0/0 .rodata tag$7759 */
diff --git a/src/d/meter/d_meter_HIO.cpp b/src/d/meter/d_meter_HIO.cpp
index 1974afaff4..d2a47d6bf0 100644
--- a/src/d/meter/d_meter_HIO.cpp
+++ b/src/d/meter/d_meter_HIO.cpp
@@ -1011,38 +1011,38 @@ dMeter_drawHIO_c::dMeter_drawHIO_c() {
mBItemBasePosY[i] = 0.0f;
}
- mBItemBaseAlpha = 0.5f;
- field_0x23c = 0.5f;
+ mBItemBaseAlpha[0] = 0.5f;
+ mBItemBaseAlpha[1] = 0.5f;
mXButtonItemBaseScale = 1.5f;
mXButtonItemBasePosX = 14.0f;
mXButtonItemBasePosY = -12.0f;
- mXButtonItemBaseAlpha = 0.5f;
+ mXButtonItemBaseAlpha[0] = 0.5f;
mXButtonItemBaseNoItemScale = 1.5f;
mXButtonItemBaseNoItemPosX = 0.0f;
mXButtonItemBaseNoItemPosY = 0.0f;
- mXButtonItemBaseNoItemAlpha = 1.0f;
+ mXButtonItemBaseAlpha[1] = 1.0f;
mYButtonItemBaseScale = 1.5f;
mYButtonItemBasePosX = -15.0f;
mYButtonItemBasePosY = -12.0f;
- mYButtonItemBaseAlpha = 0.5f;
+ mYButtonItemBaseAlpha[0] = 0.5f;
mYButtonItemBaseNoItemScale = 1.5f;
mYButtonItemBaseNoItemPosX = 0.0f;
mYButtonItemBaseNoItemPosY = 0.0f;
- mYButtonItemBaseNoItemAlpha = 0.5f;
+ mYButtonItemBaseAlpha[1] = 0.5f;
field_0x280 = 1.5f;
field_0x288 = 0.0f;
field_0x290 = 6.0f;
- field_0x298 = 0.5f;
+ field_0x298[0] = 0.5f;
field_0x284 = 1.0f;
field_0x28c = 0.0f;
field_0x294 = 4.0f;
- field_0x29c = 1.0f;
+ field_0x298[1] = 1.0f;
mZButtonItemBaseScale = 1.0f;
mZButtonItemBasePosX = 0.0f;