summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangzhengwenjz <jiangzhengwenjzw@qq.com>2020-04-28 07:25:55 +0800
committerjiangzhengwenjz <jiangzhengwenjzw@qq.com>2020-04-28 07:25:55 +0800
commit2010ed0f12979bffe812d8d90bf624e028cd5348 (patch)
treeacfca81be25a0cca321a01778b7066cd7eb1f57d
parentdbe48cfb08233052883096c17992a9c360f1d478 (diff)
librfu issues
-rw-r--r--include/librfu.h5
-rw-r--r--src/librfu_rfu.c9
2 files changed, 3 insertions, 11 deletions
diff --git a/include/librfu.h b/include/librfu.h
index 1baa4253e..aff96a72c 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -90,13 +90,8 @@
#define RFU_MBOOT_DOWNLOADER_SERIAL_NO 0x0000 // The game serial number of the multi-boot downloader (programs that boot without a Game Pak)
-#if LIBRFU_VERSION >= 1028
-#define RFU_API_BUFF_SIZE_RAM 0x0e8c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in RAM)
-#define RFU_API_BUFF_SIZE_ROM 0x052c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in ROM)
-#else
#define RFU_API_BUFF_SIZE_RAM 0x0e64 // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in RAM)
#define RFU_API_BUFF_SIZE_ROM 0x0504 // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in ROM)
-#endif
#define RFU_CHILD_MAX 4 // Maximum number of slaves that can be connected to one parent device
diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c
index 582060f78..061dc76ad 100644
--- a/src/librfu_rfu.c
+++ b/src/librfu_rfu.c
@@ -110,7 +110,7 @@ static const struct LLSFStruct llsf_struct[2] = {
#define xstr(s) str(s)
#define str(s) #s
-const char version_string[] = "RFU_V" xstr(LIBRFU_VERSION);
+static const char version_string[] = "RFU_V" xstr(LIBRFU_VERSION);
static const char str_checkMbootLL[] = "RFU-MBOOT";
@@ -154,16 +154,13 @@ u16 rfu_initializeAPI(u32 *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p
gRfuStatic = (void *)APIBuffer + 0xb4; // + sizeof(*gRfuLinkStatus)
gRfuFixed = (void *)APIBuffer + 0xdc; // + sizeof(*gRfuStatic)
gRfuSlotStatusNI[0] = (void *)APIBuffer + 0x1bc; // + sizeof(*gRfuFixed)
- gRfuSlotStatusUNI[0] = (void *)APIBuffer + 0x37c; // + sizeof(*gRfuSlotStatusNI[0])
+ gRfuSlotStatusUNI[0] = (void *)APIBuffer + 0x37c; // + sizeof(*gRfuSlotStatusNI[0]) * RFU_CHILD_MAX
for (i = 1; i < RFU_CHILD_MAX; ++i)
{
gRfuSlotStatusNI[i] = &gRfuSlotStatusNI[i - 1][1];
gRfuSlotStatusUNI[i] = &gRfuSlotStatusUNI[i - 1][1];
}
- // TODO: Is it possible to fix the following 2 statements?
- // It's equivalent to:
- // gRfuFixed->STWIBuffer = &APIBuffer->intr;
- // STWI_init_all(&APIBuffer->intr, sioIntrTable_p, copyInterruptToRam);
+ // remaining space in API buffer is used for `struct RfuIntrStruct`.
gRfuFixed->STWIBuffer = (struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1];
STWI_init_all((struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1], sioIntrTable_p, copyInterruptToRam);
rfu_STC_clearAPIVariables();