summaryrefslogtreecommitdiff
path: root/src/d/meter/d_meter2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/meter/d_meter2.cpp')
-rw-r--r--src/d/meter/d_meter2.cpp65
1 files changed, 33 insertions, 32 deletions
diff --git a/src/d/meter/d_meter2.cpp b/src/d/meter/d_meter2.cpp
index 83c5120482..85852482d8 100644
--- a/src/d/meter/d_meter2.cpp
+++ b/src/d/meter/d_meter2.cpp
@@ -2028,7 +2028,8 @@ void dMeter2_c::moveButtonS() {
}
/* 80222518-80222E88 21CE58 0970+00 1/1 0/0 0/0 .text moveButtonXY__9dMeter2_cFv */
-// single r26 / r29 reg swap
+// 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];
@@ -2192,19 +2193,19 @@ void dMeter2_c::moveButtonXY() {
dComIfGp_setXStatusForce(0, 0);
}
- if (mItemStatus[i][1] != dComIfGp_getXStatus()) {
- mItemStatus[i][1] = dComIfGp_getXStatus();
+ if (mItemStatus[i*2+1] != dComIfGp_getXStatus()) {
+ mItemStatus[i*2+1] = dComIfGp_getXStatus();
- if (mItemStatus[i][1] == 0x2D || mItemStatus[i][1] == 0x2E) {
- dComIfGp_setXStatus(mItemStatus[i][1], 1);
+ if (mItemStatus[i*2+1] == 0x2D || mItemStatus[i*2+1] == 0x2E) {
+ dComIfGp_setXStatus(mItemStatus[i*2+1], 1);
}
spC[i] = 1;
sp8[i] = 1;
}
- if (mXSetFlag[i] != dComIfGp_isXSetFlag(2)) {
- mXSetFlag[i] = dComIfGp_isXSetFlag(2);
+ if ((&mXSetFlag)[i] != dComIfGp_isXSetFlag(2)) {
+ (&mXSetFlag)[i] = dComIfGp_isXSetFlag(2);
spC[i] = 1;
sp8[i] = 1;
}
@@ -2214,37 +2215,37 @@ void dMeter2_c::moveButtonXY() {
dComIfGp_setYStatusForce(0, 0);
}
- if (mItemStatus[i][1] != dComIfGp_getYStatus()) {
- mItemStatus[i][1] = dComIfGp_getYStatus();
+ if (mItemStatus[i*2+1] != dComIfGp_getYStatus()) {
+ mItemStatus[i*2+1] = dComIfGp_getYStatus();
- if (mItemStatus[i][1] == 0x2D || mItemStatus[i][1] == 0x2E) {
- dComIfGp_setYStatus(mItemStatus[i][1], 1);
+ if (mItemStatus[i*2+1] == 0x2D || mItemStatus[i*2+1] == 0x2E) {
+ dComIfGp_setYStatus(mItemStatus[i*2+1], 1);
}
spC[i] = 1;
sp8[i] = 1;
}
- if (mXSetFlag[i] != dComIfGp_isYSetFlag(2)) {
- mXSetFlag[i] = dComIfGp_isYSetFlag(2);
+ if ((&mXSetFlag)[i] != dComIfGp_isYSetFlag(2)) {
+ (&mXSetFlag)[i] = dComIfGp_isYSetFlag(2);
spC[i] = 1;
sp8[i] = 1;
}
}
} else {
- if (mItemStatus[0][i] != dComIfGp_getSelectItem(i) || field_0x128 != field_0x12c) {
- mItemStatus[0][i] = dComIfGp_getSelectItem(i);
- spC[i] = 1; //
+ if (mItemStatus[2*i] != dComIfGp_getSelectItem(i) || field_0x128 != field_0x12c) {
+ mItemStatus[2*i] = dComIfGp_getSelectItem(i);
+ spC[i] = 1;
sp8[i] = 1;
}
- if (field_0x1d6[i][0] != dMeter2Info_isDirectUseItem(i)) {
- field_0x1d6[i][0] = dMeter2Info_isDirectUseItem(i);
- spC[i] = 1; //
+ if (field_0x1d6[i] != dMeter2Info_isDirectUseItem(i)) {
+ field_0x1d6[i] = dMeter2Info_isDirectUseItem(i);
+ spC[i] = 1;
sp8[i] = 1;
}
- if (mItemStatus[0][i] == 0x48) {
+ if (mItemStatus[2*i] == 0x48) {
if (field_0x1ec == 0) {
if (dComIfGs_getOil() != 0) {
field_0x1ec = 1;
@@ -2256,7 +2257,7 @@ void dMeter2_c::moveButtonXY() {
sp8[i] = 1;
}
}
- } else if (mItemStatus[0][i] == 0x46) {
+ } else if (mItemStatus[2*i] == 0x46) {
if (field_0x1ed == 0) {
if (daPy_getPlayerActorClass()->checkCopyRodTopUse()) {
field_0x1ed = 1;
@@ -2268,16 +2269,16 @@ void dMeter2_c::moveButtonXY() {
sp8[i] = 1;
}
}
- } else if (mItemStatus[0][i] == 0x50 || mItemStatus[0][i] == 0x70 ||
- mItemStatus[0][i] == 0x71 || mItemStatus[0][i] == 0x72)
+ } else if (mItemStatus[2*i] == 0x50 || mItemStatus[2*i] == 0x70 ||
+ mItemStatus[2*i] == 0x71 || mItemStatus[2*i] == 0x72)
{
if (sp8[i] != 0) {
mpMeterDraw->setItemNum(i, dComIfGp_getSelectItemNum(i),
dComIfGp_getSelectItemMaxNum(i));
}
- } else if (mItemStatus[0][i] == 0x76) {
- if (field_0x1d6[i][2] != dComIfGp_getSelectItemNum(i)) {
- field_0x1d6[i][2] = dComIfGp_getSelectItemNum(i);
+ } else if (mItemStatus[2*i] == 0x76) {
+ if (field_0x1d8[i] != dComIfGp_getSelectItemNum(i)) {
+ field_0x1d8[i] = dComIfGp_getSelectItemNum(i);
sp8[i] = 1;
}
@@ -2285,18 +2286,18 @@ void dMeter2_c::moveButtonXY() {
mpMeterDraw->setItemNum(i, dComIfGp_getSelectItemNum(i),
dComIfGp_getSelectItemMaxNum(i));
}
- } else if (mItemStatus[0][i] == 0x43 || mItemStatus[0][i] == 0x53 ||
- mItemStatus[0][i] == 0x54 || mItemStatus[0][i] == 0x55 ||
- mItemStatus[0][i] == 0x56 || mItemStatus[0][i] == 0x5A)
+ } else if (mItemStatus[2*i] == 0x43 || mItemStatus[2*i] == 0x53 ||
+ mItemStatus[2*i] == 0x54 || mItemStatus[2*i] == 0x55 ||
+ mItemStatus[2*i] == 0x56 || mItemStatus[2*i] == 0x5A)
{
if (sp8[i] != 0) {
mpMeterDraw->setItemNum(i, mArrowNum, dComIfGs_getArrowMax());
}
- } else if (mItemStatus[0][i] == 0x4B) {
+ } else if (mItemStatus[2*i] == 0x4B) {
if (sp8[i] != 0) {
mpMeterDraw->setItemNum(i, mPachinkoNum, dComIfGs_getPachinkoMax());
}
- } else if (mItemStatus[0][i] == 0x59) {
+ } else if (mItemStatus[2*i] == 0x59) {
u8 var_r25 = dComIfGp_getSelectItemNum(i);
u8 var_r6_2 = dComIfGp_getSelectItemMaxNum(i);
@@ -2313,7 +2314,7 @@ void dMeter2_c::moveButtonXY() {
}
if (sp8[i] != 0) {
- mpMeterDraw->drawButtonXY(i, mItemStatus[i][0], mItemStatus[i][1],
+ mpMeterDraw->drawButtonXY(i, mItemStatus[2*i], mItemStatus[i*2+1],
field_0x128 == 0 ? true : false, spC[i]);
}
}