summaryrefslogtreecommitdiff
path: root/src/siirtc.c
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-07-31 13:30:40 -0400
committerGitHub <noreply@github.com>2021-07-31 13:30:40 -0400
commit3e60a7840653e50845abf10bb02cd1b519dcd80f (patch)
treecb4a0d227a238ebdeb3b6cb9fdb92781bcc4f5e7 /src/siirtc.c
parent602855ea99d8015ef5b7709f6fb1e9fd167239e2 (diff)
parentd391486247cc9f29d85787d6711f7cb993cf6585 (diff)
Merge branch 'master' into doc-frontierpass2
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;
}