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;