diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 28167f4a..5fa272cb 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -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 diff --git a/configure.py b/configure.py index 77fdd972..f90c5889 100644 --- a/configure.py +++ b/configure.py @@ -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"), diff --git a/include/d/lyt/d_lyt_meter_configuration.h b/include/d/lyt/d_lyt_meter_configuration.h index 1330cbb4..181c0db4 100644 --- a/include/d/lyt/d_lyt_meter_configuration.h +++ b/include/d/lyt/d_lyt_meter_configuration.h @@ -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; diff --git a/src/d/lyt/meter/d_lyt_meter_rupy.cpp b/src/d/lyt/meter/d_lyt_meter_rupy.cpp index 7fbea6b1..976ba037 100644 --- a/src/d/lyt/meter/d_lyt_meter_rupy.cpp +++ b/src/d/lyt/meter/d_lyt_meter_rupy.cpp @@ -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);