From 400dbb7a7018bbb1138cf820e1e5e08e50245bba Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Fri, 19 Jul 2024 10:59:08 -0700 Subject: [PATCH 1/3] 70100 split --- src/main/O2/70100.c | 4 ++++ yamls/us/main.yaml | 1 + 2 files changed, 5 insertions(+) create mode 100644 src/main/O2/70100.c diff --git a/src/main/O2/70100.c b/src/main/O2/70100.c new file mode 100644 index 0000000..0c8ffd1 --- /dev/null +++ b/src/main/O2/70100.c @@ -0,0 +1,4 @@ +#include "global.h" + + +#pragma GLOBAL_ASM("asm/us/nonmatchings/main/O2/70100/func_8006F500.s") diff --git a/yamls/us/main.yaml b/yamls/us/main.yaml index 522df6f..62d35f3 100644 --- a/yamls/us/main.yaml +++ b/yamls/us/main.yaml @@ -57,6 +57,7 @@ - [0x6CB80, asm] - [0x6DBC0, asm] - [0x6DF40, asm] # Probably has at least 1 file split + - [0x70100, c, O2/70100] - [0x70160, asm] - [0x70200, c, fault] - [0x720B0, pad] From d7da401395979b9094141a72055cdf52f193a2bf Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Fri, 19 Jul 2024 10:46:01 -0700 Subject: [PATCH 2/3] func_8006F500 OK --- include/global.h | 2 ++ src/main/O2/70100.c | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/include/global.h b/include/global.h index 0a85fec..448e98d 100644 --- a/include/global.h +++ b/include/global.h @@ -35,6 +35,8 @@ extern MallocRecord mallocRecord; extern UNK_TYPE D_800DA83C; extern UNK_TYPE D_8010DF40; +extern UNK_TYPE D_80108620; + typedef struct Y511F0UnkStruct { /* 0x0 */ uintptr_t unk0; /* 0x4 */ s16 unk4; diff --git a/src/main/O2/70100.c b/src/main/O2/70100.c index 0c8ffd1..9e2c39e 100644 --- a/src/main/O2/70100.c +++ b/src/main/O2/70100.c @@ -1,4 +1,23 @@ #include "global.h" +#define WAIT_ON_IOBUSY_ALT(stat) \ + do { \ + stat = IO_READ(PI_STATUS_REG); \ + } while (stat & (PI_STATUS_IO_BUSY | PI_STATUS_DMA_BUSY)) -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/O2/70100/func_8006F500.s") +#define ADDRESS_1 (PI_DOM1_ADDR2 + 0x458) // 0x10000458 +#define ADDRESS_2 (PI_DOM1_ADDR2 + 0x45C) // 0x1000045C + +void func_8006F500(void) { + register u32 stat; + u16 addr1Val; + u16 addr2Val; + + WAIT_ON_IOBUSY_ALT(stat); + addr1Val = IO_READ(ADDRESS_1); + + WAIT_ON_IOBUSY_ALT(stat); + addr2Val = IO_READ(ADDRESS_2); + + D_80108620 = (addr1Val << 16) | addr2Val; +} From aa9c93a7b9b47093c19e98a1f4a7bdb24c247999 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Fri, 19 Jul 2024 17:13:55 -0700 Subject: [PATCH 3/3] Move D_80108620 down --- include/global.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/global.h b/include/global.h index 10dedf1..bd7418e 100644 --- a/include/global.h +++ b/include/global.h @@ -32,8 +32,6 @@ typedef struct Y65430UnkStruct { /* 0x04 */ size_t unk04; } Y65430UnkStruct; // size >= 0x08; -extern UNK_TYPE D_80108620; - typedef struct Y511F0UnkStruct { /* 0x0 */ uintptr_t unk0; /* 0x4 */ s16 unk4; @@ -103,6 +101,7 @@ extern MallocRecord D_800F8E58; extern u8 D_800FAAF8; extern u8 D_800FAB1C; extern u8 D_800FAB20; +extern UNK_TYPE D_80108620; extern UNK_TYPE D_80108624; extern UNK_TYPE D_80108628; extern UNK_TYPE D_8010DF40;