d_lyt_meter_rupy OK

This commit is contained in:
robojumper
2025-04-15 00:09:46 +02:00
parent cd3556c433
commit 3403907ba6
4 changed files with 60 additions and 43 deletions
+26 -26
View File
@@ -31673,31 +31673,31 @@ __vt__38sFStateID_c<23dLytMeterDowsingInput_c> = .data:0x8051898C; // type:objec
__vt__38sFStateID_c<23dLytMeterDowsingBlink_c> = .data:0x805189C0; // type:object size:0x34
__vt__41sFStateID_c<26dLytMeterDowsingMenuIcon_c> = .data:0x805189F4; // type:object size:0x34
__vt__33sFStateID_c<18dLytMeterDowsing_c> = .data:0x80518A28; // type:object size:0x34
lbl_80518A60 = .data:0x80518A60; // type:object size:0x14
lbl_80518A74 = .data:0x80518A74; // type:object size:0xC
lbl_80518A80 = .data:0x80518A80; // type:object size:0x1C
lbl_80518A9C = .data:0x80518A9C; // type:object size:0x10
lbl_80518AAC = .data:0x80518AAC; // type:object size:0x14
lbl_80518AC0 = .data:0x80518AC0; // type:object size:0xC
lbl_80518A60 = .data:0x80518A60; // type:object size:0x11 data:string
lbl_80518A74 = .data:0x80518A74; // type:object size:0xB data:string
lbl_80518A80 = .data:0x80518A80; // type:object size:0x19 data:string
lbl_80518A9C = .data:0x80518A9C; // type:object size:0xD data:string
lbl_80518AAC = .data:0x80518AAC; // type:object size:0x13 data:string
lbl_80518AC0 = .data:0x80518AC0; // type:object size:0xA data:string
lbl_80518ACC = .data:0x80518ACC; // type:object size:0x14 data:string
lbl_80518AE0 = .data:0x80518AE0; // type:object size:0xC
lbl_80518AEC = .data:0x80518AEC; // type:object size:0x18
lbl_80518AE0 = .data:0x80518AE0; // type:object size:0xB data:string
lbl_80518AEC = .data:0x80518AEC; // type:object size:0x15 data:string
lbl_80518B04 = .data:0x80518B04; // type:object size:0xC data:string
lbl_80518B10 = .data:0x80518B10; // type:object size:0xC data:string
lbl_80518B1C = .data:0x80518B1C; // type:object size:0xC data:string
lbl_80518B28 = .data:0x80518B28; // type:object size:0xC data:string
lbl_80518B34 = .data:0x80518B34; // type:object size:0x14
lbl_80518B48 = .data:0x80518B48; // type:object size:0xC
lbl_80518B54 = .data:0x80518B54; // type:object size:0x1C
lbl_80518B70 = .data:0x80518B70; // type:object size:0x14
lbl_80518B34 = .data:0x80518B34; // type:object size:0x13 data:string
lbl_80518B48 = .data:0x80518B48; // type:object size:0xA data:string
lbl_80518B54 = .data:0x80518B54; // type:object size:0x1A data:string
lbl_80518B70 = .data:0x80518B70; // type:object size:0x13 data:string
lbl_80518B84 = .data:0x80518B84; // type:object size:0x14 data:string
lbl_80518B98 = .data:0x80518B98; // type:object size:0x14
lbl_80518BAC = .data:0x80518BAC; // type:object size:0xC
lbl_80518BB8 = .data:0x80518BB8; // type:object size:0xC
lbl_80518BC4 = .data:0x80518BC4; // type:object size:0xC
lbl_80518BD0 = .data:0x80518BD0; // type:object size:0x10
lbl_80518B98 = .data:0x80518B98; // type:object size:0x12 data:string
lbl_80518BAC = .data:0x80518BAC; // type:object size:0xB data:string
lbl_80518BB8 = .data:0x80518BB8; // type:object size:0xB data:string
lbl_80518BC4 = .data:0x80518BC4; // type:object size:0xB data:string
lbl_80518BD0 = .data:0x80518BD0; // type:object size:0xB data:string
lbl_80518BE0 = .data:0x80518BE0; // type:object size:0x10 data:4byte
lbl_80518BF0 = .data:0x80518BF0; // type:object size:0x10
lbl_80518BF0 = .data:0x80518BF0; // type:object size:0xE data:string
__vt__15dLytMeterRupy_c = .data:0x80518C00; // type:object size:0x34
__vt__30sFStateID_c<15dLytMeterRupy_c> = .data:0x80518E60; // type:object size:0x34
__vt__35sFStateID_c<20dLytMeterRupyBlink_c> = .data:0x80518E94; // type:object size:0x34
@@ -48762,14 +48762,14 @@ LytMeterDowsing__STATE_TO_USE = .bss:0x805AC420; // type:object size:0x30 data:4
LytMeterDowsing__STATE_UNUSE = .bss:0x805AC4A0; // type:object size:0x30 data:4byte
LytMeterDowsing__STATE_DEMO_MOVE = .bss:0x805AC4E0; // type:object size:0x30 data:4byte
LytMeterDowsing__STATE_DEMO_OUT = .bss:0x805AC520; // type:object size:0x30 data:4byte
lbl_805AC550 = .bss:0x805AC550; // type:object size:0x10
LytMeterRupyStart__STATE_WAIT = .bss:0x805AC560; // type:object size:0x40 data:4byte
LytMeterRupyStart__STATE_START = .bss:0x805AC5A0; // type:object size:0x40 data:4byte
LytMeterRupyBlink__WAIT = .bss:0x805AC5E0; // type:object size:0x40 data:4byte
LytMeterRupyBlink__STATE_FLASH = .bss:0x805AC620; // type:object size:0x40 data:4byte
LytMeterRupy__STATE_IN = .bss:0x805AC660; // type:object size:0x40 data:4byte
LytMeterRupy__STATE_ACTIVE = .bss:0x805AC6A0; // type:object size:0x40 data:4byte
LytMeterRupy__STATE_START = .bss:0x805AC6E0; // type:object size:0x40 data:4byte
lbl_805AC550 = .bss:0x805AC550; // type:object size:0xC
LytMeterRupyStart__STATE_WAIT = .bss:0x805AC560; // type:object size:0x30 data:4byte
LytMeterRupyStart__STATE_START = .bss:0x805AC5A0; // type:object size:0x30 data:4byte
LytMeterRupyBlink__WAIT = .bss:0x805AC5E0; // type:object size:0x30 data:4byte
LytMeterRupyBlink__STATE_FLASH = .bss:0x805AC620; // type:object size:0x30 data:4byte
LytMeterRupy__STATE_IN = .bss:0x805AC660; // type:object size:0x30 data:4byte
LytMeterRupy__STATE_ACTIVE = .bss:0x805AC6A0; // type:object size:0x30 data:4byte
LytMeterRupy__STATE_START = .bss:0x805AC6E0; // type:object size:0x30 data:4byte
LytMeterRupy__STATE_OUT = .bss:0x805AC720; // type:object size:0x30 data:4byte
lbl_805AC750 = .bss:0x805AC750; // type:object size:0x10
LytMeterGanbariGauge__STATE_INVISIBLE_WAIT = .bss:0x805AC760; // type:object size:0x80 data:4byte
+1 -1
View File
@@ -398,7 +398,7 @@ config.libs = [
Object(Matching, "d/lyt/meter/d_lyt_meter_minus_btn.cpp"),
Object(Matching, "d/lyt/meter/d_lyt_meter_cross_btn.cpp"),
Object(Matching, "d/lyt/meter/d_lyt_meter_dowsing.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_rupy.cpp"),
Object(Matching, "d/lyt/meter/d_lyt_meter_rupy.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_ganbari_gauge.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_event_skip.cpp"),
Object(NonMatching, "d/lyt/meter/d_lyt_meter_timer.cpp"),
+17
View File
@@ -12,6 +12,23 @@ public:
return sInstance;
}
s32 getField_0x1D8() const {
return field_0x1D8;
}
s32 getField_0x1DC() const {
return field_0x1DC;
}
s32 getField_0x1E0() const {
return field_0x1E0;
}
s32 getField_0x1E4() const {
return field_0x1E4;
}
static dLytMeterConfiguration_c *sInstance;
/* 0x004 */ u8 field_0x004;
+16 -16
View File
@@ -407,7 +407,6 @@ void dLytMeterRupy_c::setDigit(s32 index, s32 digit) {
}
bool dLytMeterRupy_c::updateDisplayedAmount(bool suppressSound) {
// NONMATCHING - regswaps
s32 amount = getRupeeCounter2();
if (amount > 9999) {
amount = 9999;
@@ -419,10 +418,10 @@ bool dLytMeterRupy_c::updateDisplayedAmount(bool suppressSound) {
if (amount != mDisplayedRupeeCount || suppressSound) {
bool b = false;
if (amount < mDisplayedRupeeCount) {
if (mDisplayedRupeeCount - amount >= dLytMeterConfiguration_c::GetInstance()->field_0x1DC) {
newNumDisplayed = mDisplayedRupeeCount - dLytMeterConfiguration_c::GetInstance()->field_0x1E4;
} else if (mDisplayedRupeeCount - amount >= dLytMeterConfiguration_c::GetInstance()->field_0x1D8) {
newNumDisplayed = mDisplayedRupeeCount - dLytMeterConfiguration_c::GetInstance()->field_0x1E0;
if (mDisplayedRupeeCount - amount >= dLytMeterConfiguration_c::sInstance->getField_0x1DC()) {
newNumDisplayed = mDisplayedRupeeCount - dLytMeterConfiguration_c::sInstance->getField_0x1E4();
} else if (mDisplayedRupeeCount - amount >= dLytMeterConfiguration_c::sInstance->getField_0x1D8()) {
newNumDisplayed = mDisplayedRupeeCount - dLytMeterConfiguration_c::sInstance->getField_0x1E0();
} else {
newNumDisplayed = mDisplayedRupeeCount - 1;
}
@@ -438,10 +437,10 @@ bool dLytMeterRupy_c::updateDisplayedAmount(bool suppressSound) {
field_0x8AD = 0;
}
} else if (amount > mDisplayedRupeeCount) {
if (amount - mDisplayedRupeeCount >= dLytMeterConfiguration_c::GetInstance()->field_0x1DC) {
newNumDisplayed = mDisplayedRupeeCount + dLytMeterConfiguration_c::GetInstance()->field_0x1E4;
} else if (amount - mDisplayedRupeeCount >= dLytMeterConfiguration_c::GetInstance()->field_0x1D8) {
newNumDisplayed = mDisplayedRupeeCount + dLytMeterConfiguration_c::GetInstance()->field_0x1E0;
if (amount - mDisplayedRupeeCount >= dLytMeterConfiguration_c::sInstance->getField_0x1DC()) {
newNumDisplayed = mDisplayedRupeeCount + dLytMeterConfiguration_c::sInstance->getField_0x1E4();
} else if (amount - mDisplayedRupeeCount >= dLytMeterConfiguration_c::sInstance->getField_0x1D8()) {
newNumDisplayed = mDisplayedRupeeCount + dLytMeterConfiguration_c::sInstance->getField_0x1E0();
} else {
newNumDisplayed = mDisplayedRupeeCount + 1;
}
@@ -464,20 +463,21 @@ bool dLytMeterRupy_c::updateDisplayedAmount(bool suppressSound) {
newNumDisplayed = 0;
}
// The primary problem appear to be the lines marked with "// x".
s32 newNumDigits = 0;
if (newNumDisplayed >= 1000) {
newNumDigits = 4;
setDigit(0, newNumDisplayed / 1000);
setDigit(1, (newNumDisplayed % 1000) / 100); // x
setDigit(2, (newNumDisplayed % 100) / 10); // x
setDigit(3, newNumDisplayed % 10);
s32 rem = (newNumDisplayed % 1000);
setDigit(1, rem / 100);
rem = rem % 100;
setDigit(2, rem / 10);
setDigit(3, rem % 10);
} else if (newNumDisplayed >= 100) {
newNumDigits = 3;
setDigit(0, newNumDisplayed / 100);
setDigit(1, (newNumDisplayed % 100) / 10); // x
setDigit(2, newNumDisplayed % 10);
s32 rem = (newNumDisplayed % 100);
setDigit(1, rem / 10); // x
setDigit(2, rem % 10);
} else if (newNumDisplayed >= 10) {
newNumDigits = 2;
setDigit(0, newNumDisplayed / 10);