summaryrefslogtreecommitdiff
path: root/src/siirtc.c
diff options
context:
space:
mode:
authorfroggestspirit <froggestspirit@gmail.com>2021-09-06 10:32:14 -0400
committerfroggestspirit <froggestspirit@gmail.com>2021-09-06 10:32:14 -0400
commit73554ec88d4f269b6146f6d1ab5d2742cb0a6f89 (patch)
treefac5bee8a4ce4757816dbbe42265523478b78781 /src/siirtc.c
parentec6b1ea3735ff98a9714b219e4a999894ecc6010 (diff)
parent63e6b914e4d9b9bdb0a8d621b2ed233990f2ef66 (diff)
Merge remote-tracking branch 'pret/master'
Diffstat (limited to 'src/siirtc.c')
-rw-r--r--src/siirtc.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/siirtc.c b/src/siirtc.c
index 5c153a841..5f4fc0a23 100644
--- a/src/siirtc.c
+++ b/src/siirtc.c
@@ -71,6 +71,7 @@ static bool8 sLocked;
static int WriteCommand(u8 value);
static int WriteData(u8 value);
static u8 ReadData();
+
static void EnableGpioPortRead();
static void DisableGpioPortRead();
@@ -98,8 +99,12 @@ u8 SiiRtcProbe(void)
errorCode = 0;
+#ifdef BUGFIX
+ if (!(rtc.status & SIIRTCINFO_24HOUR) || (rtc.status & SIIRTCINFO_POWER))
+#else
if ((rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == SIIRTCINFO_POWER
|| (rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == 0)
+#endif
{
// The RTC is in 12-hour mode. Reset it and switch to 24-hour mode.
@@ -131,7 +136,7 @@ u8 SiiRtcProbe(void)
bool8 SiiRtcReset(void)
{
- u8 result;
+ bool8 result;
struct SiiRtcInfo rtc;
if (sLocked == TRUE)
@@ -392,7 +397,11 @@ static int WriteCommand(u8 value)
GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
}
- // control reaches end of non-void function
+ // Nothing uses the returned value from this function,
+ // so the undefined behavior is harmless in the vanilla game.
+#ifdef UBFIX
+ return 0;
+#endif
}
static int WriteData(u8 value)
@@ -409,7 +418,11 @@ static int WriteData(u8 value)
GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
}
- // control reaches end of non-void function
+ // Nothing uses the returned value from this function,
+ // so the undefined behavior is harmless in the vanilla game.
+#ifdef UBFIX
+ return 0;
+#endif
}
static u8 ReadData()
@@ -418,6 +431,10 @@ static u8 ReadData()
u8 temp;
u8 value;
+#ifdef UBFIX
+ value = 0;
+#endif
+
for (i = 0; i < 8; i++)
{
GPIO_PORT_DATA = CS_HI;
@@ -428,7 +445,7 @@ static u8 ReadData()
GPIO_PORT_DATA = SCK_HI | CS_HI;
temp = ((GPIO_PORT_DATA & SIO_HI) >> 1);
- value = (value >> 1) | (temp << 7); // UB: accessing uninitialized var
+ value = (value >> 1) | (temp << 7);
}
return value;
@@ -436,10 +453,10 @@ static u8 ReadData()
static void EnableGpioPortRead()
{
- GPIO_PORT_READ_ENABLE = 1;
+ GPIO_PORT_READ_ENABLE = TRUE;
}
static void DisableGpioPortRead()
{
- GPIO_PORT_READ_ENABLE = 0;
+ GPIO_PORT_READ_ENABLE = FALSE;
}