From f2af4867e466fdddd998b7c45f35da5b901ab701 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Thu, 2 Nov 2023 18:36:13 -0500 Subject: [PATCH] Identified and organized libultra (#15) * libultra sorted out * missed some things * forgot some things * one more thing * not actually libultra * also split out the data into three sections * finer split * parameter is a thing, apparently --- Makefile | 32 ++-- include/functions.h | 8 +- linker_scripts/us/symbol_addrs.txt | 1 + linker_scripts/us/symbol_addrs_libultra.txt | 22 +++ src/libultra/206B0.c | 93 ---------- src/libultra/28330.c | 9 - src/libultra/28820.c | 3 - src/libultra/28B90.c | 3 - src/libultra/28C90.c | 7 - src/libultra/294F0.c | 3 - src/libultra/297E0.c | 5 - src/libultra/2A7A0.c | 11 -- src/libultra/2AAB0.c | 11 -- src/libultra/2AD80.c | 3 - src/libultra/2B830.c | 3 - src/libultra/2BD50.c | 5 - src/libultra/2BDF0.c | 33 ---- src/libultra/2C700.c | 49 ------ src/libultra/2D300.c | 49 ------ src/libultra/2E9E0.c | 9 - src/libultra/2EDE0.c | 3 - src/libultra/2EE30.c | 3 - src/libultra/conteepprobe.c | 3 - src/libultra/conteepread.c | 5 - src/libultra/conteepwrite.c | 7 - src/libultra/debug/kdebugserver.c | 11 ++ src/libultra/gu/mtxutil.c | 9 + src/libultra/gu/{guSqrtf.c => sqrtf.c} | 0 src/libultra/host/readhost.c | 3 + src/libultra/io/aisetnextbuf.c | 50 ++++++ src/libultra/io/cartrominit.c | 3 + src/libultra/io/conteepprobe.c | 3 + src/libultra/io/conteepread.c | 5 + src/libultra/io/conteepwrite.c | 7 + src/libultra/io/contramwrite.c | 9 + src/libultra/io/controller.c | 1 + src/libultra/io/leodiskinit.c | 3 + src/libultra/io/leointerrupt.c | 7 + src/libultra/io/pfsgetstatus.c | 3 + src/libultra/io/piacs.c | 7 + src/libultra/io/pidma.c | 1 + src/libultra/io/pimgr.c | 93 ++++++++++ src/libultra/io/siacs.c | 7 + src/libultra/io/sirawread.c | 3 + src/libultra/io/sirawwrite.c | 3 + src/libultra/io/sprawread.c | 3 + src/libultra/io/sprawwrite.c | 3 + src/libultra/io/vigetcurrcontext.c | 3 + src/libultra/leointerrupt.c | 7 - src/libultra/libc/xldtob.c | 9 + src/libultra/{rmon => libc}/xlitob.c | 0 src/libultra/libc/xprintf.c | 5 + src/libultra/mtxutil.c | 9 - src/libultra/os/getactivequeue.c | 6 + src/libultra/os/initialize.c | 3 + src/libultra/os/initrdb.c | 3 + src/libultra/os/rdbsend.c | 3 + src/libultra/os/timerintr.c | 9 + src/libultra/rmon/rmonbrk.c | 29 +++ src/libultra/rmon/rmoncmds.c | 5 + src/libultra/rmon/rmonmain.c | 9 + src/libultra/rmon/rmonmem.c | 31 ++++ src/libultra/rmon/rmonregs.c | 49 ++++++ src/libultra/rmon/rmonsio.c | 9 + src/libultra/rmon/rmontask.c | 47 +++++ src/libultra/rmon/xldtob.c | 9 - src/main/233A0.c | 5 - src/main/23760.c | 3 - src/main/24C60.c | 7 - src/main/25950.c | 3 - src/main/25AC0.c | 3 - src/main/25CA0.c | 3 - src/main/25E10.c | 7 - src/main/271C0.c | 9 - src/main/2DF00.c | 31 ---- src/main/4650.c | 4 +- src/main/math64.c | 94 ++++++++-- src/{libultra/rmon => main}/sprintf.c | 0 yamls/us/main.yaml | 184 +++++++++++--------- 79 files changed, 680 insertions(+), 532 deletions(-) delete mode 100644 src/libultra/206B0.c delete mode 100644 src/libultra/28330.c delete mode 100644 src/libultra/28820.c delete mode 100644 src/libultra/28B90.c delete mode 100644 src/libultra/28C90.c delete mode 100644 src/libultra/294F0.c delete mode 100644 src/libultra/297E0.c delete mode 100644 src/libultra/2A7A0.c delete mode 100644 src/libultra/2AAB0.c delete mode 100644 src/libultra/2AD80.c delete mode 100644 src/libultra/2B830.c delete mode 100644 src/libultra/2BD50.c delete mode 100644 src/libultra/2BDF0.c delete mode 100644 src/libultra/2C700.c delete mode 100644 src/libultra/2D300.c delete mode 100644 src/libultra/2E9E0.c delete mode 100644 src/libultra/2EDE0.c delete mode 100644 src/libultra/2EE30.c delete mode 100644 src/libultra/conteepprobe.c delete mode 100644 src/libultra/conteepread.c delete mode 100644 src/libultra/conteepwrite.c create mode 100644 src/libultra/debug/kdebugserver.c create mode 100644 src/libultra/gu/mtxutil.c rename src/libultra/gu/{guSqrtf.c => sqrtf.c} (100%) create mode 100644 src/libultra/host/readhost.c create mode 100644 src/libultra/io/aisetnextbuf.c create mode 100644 src/libultra/io/cartrominit.c create mode 100644 src/libultra/io/conteepprobe.c create mode 100644 src/libultra/io/conteepread.c create mode 100644 src/libultra/io/conteepwrite.c create mode 100644 src/libultra/io/contramwrite.c create mode 100644 src/libultra/io/leodiskinit.c create mode 100644 src/libultra/io/leointerrupt.c create mode 100644 src/libultra/io/pfsgetstatus.c create mode 100644 src/libultra/io/piacs.c create mode 100644 src/libultra/io/pimgr.c create mode 100644 src/libultra/io/siacs.c create mode 100644 src/libultra/io/sirawread.c create mode 100644 src/libultra/io/sirawwrite.c create mode 100644 src/libultra/io/sprawread.c create mode 100644 src/libultra/io/sprawwrite.c create mode 100644 src/libultra/io/vigetcurrcontext.c delete mode 100644 src/libultra/leointerrupt.c create mode 100644 src/libultra/libc/xldtob.c rename src/libultra/{rmon => libc}/xlitob.c (100%) create mode 100644 src/libultra/libc/xprintf.c delete mode 100644 src/libultra/mtxutil.c create mode 100644 src/libultra/os/getactivequeue.c create mode 100644 src/libultra/os/initialize.c create mode 100644 src/libultra/os/initrdb.c create mode 100644 src/libultra/os/rdbsend.c create mode 100644 src/libultra/os/timerintr.c create mode 100644 src/libultra/rmon/rmonbrk.c create mode 100644 src/libultra/rmon/rmoncmds.c create mode 100644 src/libultra/rmon/rmonmain.c create mode 100644 src/libultra/rmon/rmonmem.c create mode 100644 src/libultra/rmon/rmonregs.c create mode 100644 src/libultra/rmon/rmonsio.c create mode 100644 src/libultra/rmon/rmontask.c delete mode 100644 src/libultra/rmon/xldtob.c delete mode 100644 src/main/233A0.c delete mode 100644 src/main/23760.c delete mode 100644 src/main/24C60.c delete mode 100644 src/main/25950.c delete mode 100644 src/main/25AC0.c delete mode 100644 src/main/25CA0.c delete mode 100644 src/main/25E10.c delete mode 100644 src/main/271C0.c delete mode 100644 src/main/2DF00.c rename src/{libultra/rmon => main}/sprintf.c (100%) diff --git a/Makefile b/Makefile index e5991c74..978b724d 100644 --- a/Makefile +++ b/Makefile @@ -187,33 +187,39 @@ $(shell mkdir -p $(BUILD_DIR)/linker_scripts/$(VERSION) $(BUILD_DIR)/linker_scri # directory flags # per-file flags - -build/src/libultra/206B0.o: OPTFLAGS := -O2 -g0 -build/src/libultra/rmon/sprintf.o: OPTFLAGS := -O2 -g0 -build/src/libultra/libc/string.o: OPTFLAGS := -O2 -g0 -build/src/libultra/libc/ldiv.o: OPTFLAGS := -O2 -g0 -build/src/libultra/rmon/xlitob.o: OPTFLAGS := -O2 -g0 - -build/src/libultra/2BDF0.o: OPTFLAGS := -O1 -g0 -build/src/libultra/2C700.o: OPTFLAGS := -O1 -g0 -build/src/libultra/2D300.o: OPTFLAGS := -O1 -g0 -build/src/libultra/io/pidma.o: OPTFLAGS := -O1 -g0 build/src/main/1EB50.o: OPTFLAGS := -O1 -g0 -build/src/libultra/os/stopthread.o: OPTFLAGS := -O1 -g0 -build/src/libultra/gu/guSqrtf.o: OPTFLAGS := -O1 -g0 +build/src/main/sprintf.o: OPTFLAGS := -O2 -g0 +build/src/main/math64.o: OPTFLAGS := -O2 -g0 + +build/src/libultra/gu/sqrtf.o: OPTFLAGS := -O3 -g0 build/src/libultra/gu/ortho.o: OPTFLAGS := -O3 -g0 build/src/libultra/gu/lookat.o: OPTFLAGS := -O3 -g0 + +build/src/libultra/io/pidma.o: OPTFLAGS := -O1 -g0 +build/src/libultra/io/aisetnextbuf.o: OPTFLAGS := -O1 -g0 +build/src/libultra/io/pimgr.o: OPTFLAGS := -O1 -g0 build/src/libultra/io/motor.o: OPTFLAGS := -O1 -g0 build/src/libultra/io/controller.o: OPTFLAGS := -O1 -g0 build/src/libultra/io/ai.o: OPTFLAGS := -O1 -g0 build/src/libultra/io/aigetlen.o: OPTFLAGS := -O1 -g0 build/src/libultra/io/aisetfreq.o: OPTFLAGS := -O1 -g0 + +build/src/libultra/libc/ldiv.o: OPTFLAGS := -O2 -g0 +build/src/libultra/libc/string.o: OPTFLAGS := -O2 -g0 +build/src/libultra/libc/xlitob.o: OPTFLAGS := -O2 -g0 build/src/libultra/libc/ll.o: OPTFLAGS := -O1 -g0 build/src/libultra/libc/ll.o: MIPS_VERSION := -mips3 -32 +build/src/libultra/os/getactivequeue.o: OPTFLAGS := -O1 -g0 +build/src/libultra/os/stopthread.o: OPTFLAGS := -O1 -g0 + +build/src/libultra/rmon/rmonmem.o: OPTFLAGS := -O1 -g0 +build/src/libultra/rmon/rmontask.o: OPTFLAGS := -O1 -g0 +build/src/libultra/rmon/rmonregs.o: OPTFLAGS := -O1 -g0 # cc & asm-processor CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(IDO) -- $(AS) $(ASFLAGS) -- +build/src/libultra/gu/sqrtf.o: CC := $(IDO) build/src/libultra/gu/lookat.o: CC := $(IDO) build/src/libultra/gu/ortho.o: CC := $(IDO) build/src/libultra/libc/ll.o: CC := $(IDO) diff --git a/include/functions.h b/include/functions.h index 8b4c7010..011189f4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -76,9 +76,7 @@ f32 Math_FAtan2F(f32, f32); f32 Math_FAsinF(f32); f32 Math_FAcosF(f32); -void func_800227A0(s32, OSMesgQueue*, OSMesg*, s32); - -s32 func_80022B60(void); +void osCreatePiMgr(s32, OSMesgQueue*, OSMesg*, s32); f32 __sinf(f32); f32 __cosf(f32); @@ -87,10 +85,6 @@ s64 __ull_div(s64, s64); s64 __ll_mul(s64, s64); s64 __ll_rshift(s64, s64); -void __osSiCreateAccessQueue(void); - -OSMesgQueue* osPiGetCmdQueue(void); - s32 func_8002DE78(void*, s32, s32); // Not real signature void func_80060FBC(u8*, f32*); diff --git a/linker_scripts/us/symbol_addrs.txt b/linker_scripts/us/symbol_addrs.txt index a065f917..00e93948 100644 --- a/linker_scripts/us/symbol_addrs.txt +++ b/linker_scripts/us/symbol_addrs.txt @@ -30,6 +30,7 @@ D_800D55E4_fake = 0x800D55E4; // force_migration:True D_800D8570 = 0x800D8570; // force_migration:True D_800D8594 = 0x800D8594; // force_migration:True D_800C9524 = 0x800C9524; // force_migration:True +D_800C93EC = 0x800C93EC; // force_migration:True D_8019B1EC_E07F2C = 0x8019B1EC; // force_migration:True segment:segment_DF4260 D_801C171C_E50E4C = 0x801C171C; // force_migration:True segment:segment_E16C50 diff --git a/linker_scripts/us/symbol_addrs_libultra.txt b/linker_scripts/us/symbol_addrs_libultra.txt index 757c2ec0..00ab8511 100644 --- a/linker_scripts/us/symbol_addrs_libultra.txt +++ b/linker_scripts/us/symbol_addrs_libultra.txt @@ -34,7 +34,10 @@ osDpSetStatus = 0x80022190; osCreateThread = 0x800221A0; osStartThread = 0x800222F0; osCreateViManager = 0x80022440; +osCreatePiMgr = 0x800227A0; +ramromMain = 0x8002296C; osSetThreadPri = 0x80022A80; +osInitialize = 0x80022B60; osGetTime = 0x80023000; __sinf = 0x80023090; __cosf = 0x80023250; @@ -57,9 +60,12 @@ osEepromProbe = 0x80023F50; memcpy = 0x80023FC0; strlen = 0x80023FEC; strchr = 0x80024014; +_Putfld = 0x80024060; _Printf = 0x800246D0; osSetTime = 0x80024D20; +__osGetActiveQueue = 0x80024D50; osAiSetFrequency = 0x80024D60; +osCartRomInit = 0x80024EC0; osEPiStartDma = 0x80024FB0; osAiGetLength = 0x80025090; osAiSetNextBuffer = 0x800250A0; @@ -105,9 +111,13 @@ __osInsertTimer = 0x80027A74; osGetThreadPri = 0x80027C00; __osViGetCurrentContext = 0x80027C20; __osViSwapContext = 0x80027C30; +__osPiCreateAccessQueue = 0x80028090; +__osPiGetAccess = 0x800280E0; +__osPiRelAccess = 0x80028124; osPiRawStartDma = 0x80028150; osEPiRawStartDma = 0x80028230; __osDevMgrMain = 0x80028460; +__osRdbSend = 0x800288F0; __osSetSR = 0x80028BB0; __osGetSR = 0x80028BC0; __osSetFpcCsr = 0x80028BD0; @@ -149,6 +159,7 @@ __osRunningThread = 0x800C7EB0; __osViCurr = 0x800C7F40; __osViNext = 0x800C7F44; __osTimerList = 0x800C7F50; +__osPiAccessQueueEnabled = 0x800C7F60; ldigs = 0x800C7F80; udigs = 0x800C7F94; __osRcpImTable = 0x800E95E0; @@ -163,6 +174,17 @@ _MotorStopData = 0x801566B0; _MotorStartData = 0x801567B0; _motorstopbuf= 0x801568B0; _motorstartbuf = 0x801568D0; +piThread = 0x80157C10; +piThreadStack = 0x80157DC0; +ramromThread = 0x80158DC0; +ramromThreadStack = 0x80158F70; +getRamromQ = 0x80159370; +getRamromBuf= 0x80159388; +freeRamromQ = 0x80159390; +freeRamromBuf = 0x801593A8; +piEventQueue = 0x801593B0; +piEventBuf = 0x801593C8; +__osPiAccessQueue = 0x801595E8; __osEepPifRam = 0x801793E0; __osCurrentTime = 0x80179520; __osBaseCounter = 0x80179528; diff --git a/src/libultra/206B0.c b/src/libultra/206B0.c deleted file mode 100644 index 2ae59de2..00000000 --- a/src/libultra/206B0.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "global.h" - -f32 func_8001FAB0(f32 x) { - return __sinf(x) / __cosf(x); -} - -f32 func_8001FAE4(f32 x) { - return func_8001FE60(x); -} - -f32 func_8001FB04(f32 x) { - return func_8001FE98(x); -} - -f64 func_8001FB24(f64 x) { - return (x < 0.0) ? -x : x; -} - -f32 func_8001FB58(f32 x) { - return (x < 0.0f) ? -x : x; -} - -f32 func_8001FB88(f32 x) { - return func_8001FF40(x); -} - -f32 func_8001FBA8(f32 x) { - return func_8001FED0(x); -} - -f32 func_8001FBC8(f32 x) { - return func_8001FF08(x); -} - -f32 Math_FAtanF(f32 x) { - s32 sector; - s32 i; - f32 sq; - f32 conv = 0.0f; - f32 z; - - if (x > 1.0f) { - sector = 1; - x = 1.0f / x; - } else if (x < -1.0f) { - sector = -1; - x = 1.0f / x; - } else { - sector = 0; - } - - sq = SQ(x); - - for (z = i = 24; i != 0; i--) { - conv = SQ(z) * sq / (2.0f * z + 1.0f + conv); - z -= 1.0f; - } - - if (sector > 0) { - return M_PI / 2 - (x / (1.0f + conv)); - } else if (sector < 0) { - return -M_PI / 2 - (x / (1.0f + conv)); - } else { - return x / (1.0f + conv); - } -} - -f32 Math_FAtan2F(f32 y, f32 x) { - if ((y == 0.0f) && (x == 0.0f)) { - return 0.0f; - } - if (x == 0.0f) { - if (y < 0.0f) { - return -M_PI / 2; - } - return M_PI / 2; - } - if (x < 0.0f) { - if (y < 0.0f) { - return -(M_PI - Math_FAtanF(fabs(y / x))); - } - return M_PI - Math_FAtanF(fabs(y / x)); - } - return Math_FAtanF(y / x); -} - -f32 Math_FAsinF(f32 x) { - return Math_FAtan2F(x, sqrtf(1 - SQ(x))); -} - -f32 Math_FAcosF(f32 x) { - return M_PI / 2.0f - Math_FAsinF(x); -} diff --git a/src/libultra/28330.c b/src/libultra/28330.c deleted file mode 100644 index 52b51c5a..00000000 --- a/src/libultra/28330.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28330/__osTimerServicesInit.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28330/__osTimerInterrupt.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28330/__osSetTimerIntr.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28330/__osInsertTimer.s") diff --git a/src/libultra/28820.c b/src/libultra/28820.c deleted file mode 100644 index 289f5252..00000000 --- a/src/libultra/28820.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28820/__osViGetCurrentContext.s") diff --git a/src/libultra/28B90.c b/src/libultra/28B90.c deleted file mode 100644 index 81b687e8..00000000 --- a/src/libultra/28B90.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28B90/func_80027F90.s") diff --git a/src/libultra/28C90.c b/src/libultra/28C90.c deleted file mode 100644 index d3d8cecc..00000000 --- a/src/libultra/28C90.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28C90/func_80028090.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28C90/func_800280E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/28C90/func_80028124.s") diff --git a/src/libultra/294F0.c b/src/libultra/294F0.c deleted file mode 100644 index 1df6d5b2..00000000 --- a/src/libultra/294F0.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/294F0/func_800288F0.s") diff --git a/src/libultra/297E0.c b/src/libultra/297E0.c deleted file mode 100644 index 80a5f840..00000000 --- a/src/libultra/297E0.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/297E0/func_80028BE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/297E0/func_80028C30.s") diff --git a/src/libultra/2A7A0.c b/src/libultra/2A7A0.c deleted file mode 100644 index 7e7adbd8..00000000 --- a/src/libultra/2A7A0.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2A7A0/func_80029BA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2A7A0/func_80029BF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2A7A0/func_80029C6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2A7A0/func_80029CD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2A7A0/func_80029DA8.s") diff --git a/src/libultra/2AAB0.c b/src/libultra/2AAB0.c deleted file mode 100644 index 7ae05d9b..00000000 --- a/src/libultra/2AAB0.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2AAB0/func_80029EB0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2AAB0/func_80029F80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2AAB0/func_80029FF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2AAB0/func_8002A044.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2AAB0/func_8002A0B0.s") diff --git a/src/libultra/2AD80.c b/src/libultra/2AD80.c deleted file mode 100644 index 5acaa4fa..00000000 --- a/src/libultra/2AD80.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2AD80/func_8002A180.s") diff --git a/src/libultra/2B830.c b/src/libultra/2B830.c deleted file mode 100644 index 09d4bf86..00000000 --- a/src/libultra/2B830.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2B830/func_8002AC30.s") diff --git a/src/libultra/2BD50.c b/src/libultra/2BD50.c deleted file mode 100644 index 34018c71..00000000 --- a/src/libultra/2BD50.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BD50/func_8002B150.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BD50/func_8002B15C.s") diff --git a/src/libultra/2BDF0.c b/src/libultra/2BDF0.c deleted file mode 100644 index e1ccbeaf..00000000 --- a/src/libultra/2BDF0.c +++ /dev/null @@ -1,33 +0,0 @@ -#include "common.h" - -// OPTFLAGS := -O1 -g0 - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B1F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B238.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B28C.s") - -void func_8002B2C0(s32* arg0, s32* arg1, s32 arg2) { - while (arg2--) { - *arg0++ = *arg1++; - } -} - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B2F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B330.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B52C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B778.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B7F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/D_800C95E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B804.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B8AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2BDF0/func_8002B91C.s") diff --git a/src/libultra/2C700.c b/src/libultra/2C700.c deleted file mode 100644 index c0d97266..00000000 --- a/src/libultra/2C700.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "global.h" - -// OPTFLAGS := -O1 -g0 - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002BB00.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002BB7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002BBFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002BD04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002BE38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002C12C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002C194.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002C2DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002C570.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002C5BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2C700/func_8002C698.s") - -typedef struct { - /* 0x00 */ char pad_0[0x4]; - /* 0x04 */ u8 unk4; -} Unkstruct_func_8002C6B8_1; - -typedef struct { - /* 0x00 */ char pad_0[0x4]; - /* 0x04 */ s8 unk4; - /* 0x05 */ char pad_5; - /* 0x06 */ s16 unk6; - /* 0x08 */ char pad_[0x4]; - /* 0x12 */ s32 unk12; -} Unkstruct_func_8002C6B8_2; - -s32 func_8002C6B8(Unkstruct_func_8002C6B8_1* arg0) { - Unkstruct_func_8002C6B8_2 temp; - - temp.unk4 = arg0->unk4; - temp.unk12 = 0; - temp.unk6 = 0; - func_8002DE78(&temp, 16, 1); - return 0; -} diff --git a/src/libultra/2D300.c b/src/libultra/2D300.c deleted file mode 100644 index 48936487..00000000 --- a/src/libultra/2D300.c +++ /dev/null @@ -1,49 +0,0 @@ -#include "global.h" - -s32 func_8002B238(s32); -void func_8002C700(s32, s32); -void func_8002C818(s32); -void func_8002C8C0(s32); -s32 func_8002E340(void); -void func_8002E3A8(void); - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002C700.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002C784.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002C818.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002C8C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002C968.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002CAC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002CC14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002CCCC.s") - -s32 func_8002CD80(s32 arg0) { - s32 ret; - - if (func_8002E340() != 0) { - return 0; - } else { - func_8002C818(0); - func_8002C700(0x2B, arg0); - func_8002E3A8(); - ret = func_8002B238(0x04000000); - func_8002C8C0(0); - return ret; - } -} - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002CDE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002CF44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002D054.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002D16C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2D300/func_8002D230.s") diff --git a/src/libultra/2E9E0.c b/src/libultra/2E9E0.c deleted file mode 100644 index 0c60ba63..00000000 --- a/src/libultra/2E9E0.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2E9E0/func_8002DDE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2E9E0/func_8002DE78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2E9E0/func_8002DF20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2E9E0/func_8002E040.s") diff --git a/src/libultra/2EDE0.c b/src/libultra/2EDE0.c deleted file mode 100644 index 1aabadb7..00000000 --- a/src/libultra/2EDE0.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2EDE0/func_8002E1E0.s") diff --git a/src/libultra/2EE30.c b/src/libultra/2EE30.c deleted file mode 100644 index d09ebd38..00000000 --- a/src/libultra/2EE30.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/2EE30/func_8002E230.s") diff --git a/src/libultra/conteepprobe.c b/src/libultra/conteepprobe.c deleted file mode 100644 index 3f7f99bf..00000000 --- a/src/libultra/conteepprobe.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/conteepprobe/osEepromProbe.s") diff --git a/src/libultra/conteepread.c b/src/libultra/conteepread.c deleted file mode 100644 index d05ba8d5..00000000 --- a/src/libultra/conteepread.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/conteepread/osEepromRead.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/conteepread/func_800236A0.s") diff --git a/src/libultra/conteepwrite.c b/src/libultra/conteepwrite.c deleted file mode 100644 index f8b0e57b..00000000 --- a/src/libultra/conteepwrite.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/conteepwrite/osEepromWrite.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/conteepwrite/func_80023960.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/conteepwrite/__osEepStatus.s") diff --git a/src/libultra/debug/kdebugserver.c b/src/libultra/debug/kdebugserver.c new file mode 100644 index 00000000..1f57a436 --- /dev/null +++ b/src/libultra/debug/kdebugserver.c @@ -0,0 +1,11 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/debug/kdebugserver/func_80029BA0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/debug/kdebugserver/func_80029BF8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/debug/kdebugserver/func_80029C6C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/debug/kdebugserver/func_80029CD8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/debug/kdebugserver/func_80029DA8.s") diff --git a/src/libultra/gu/mtxutil.c b/src/libultra/gu/mtxutil.c new file mode 100644 index 00000000..a1d5fc9d --- /dev/null +++ b/src/libultra/gu/mtxutil.c @@ -0,0 +1,9 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/gu/mtxutil/guMtxF2L.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/gu/mtxutil/guMtxIdentF.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/gu/mtxutil/guMtxIdent.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/gu/mtxutil/guMtxL2F.s") diff --git a/src/libultra/gu/guSqrtf.c b/src/libultra/gu/sqrtf.c similarity index 100% rename from src/libultra/gu/guSqrtf.c rename to src/libultra/gu/sqrtf.c diff --git a/src/libultra/host/readhost.c b/src/libultra/host/readhost.c new file mode 100644 index 00000000..abfbad79 --- /dev/null +++ b/src/libultra/host/readhost.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/host/readhost/func_80029EB0.s") diff --git a/src/libultra/io/aisetnextbuf.c b/src/libultra/io/aisetnextbuf.c new file mode 100644 index 00000000..cb19d276 --- /dev/null +++ b/src/libultra/io/aisetnextbuf.c @@ -0,0 +1,50 @@ +#include "global.h" + +#ifdef NON_MATCHING // needs data import +s32 osAiSetNextBuffer(void* bufPtr, u32 size) { + static u8 hdwrBugFlag = FALSE; + char* bptr; + +#if BUILD_VERSION >= VERSION_J + if (__osAiDeviceBusy()) { + return -1; + } +#endif + +#ifdef _DEBUG + if ((u32) bufPtr & (8 - 1)) { + __osError(ERR_OSAISETNEXTBUFFER_ADDR, 1, bufPtr); + return -1; + } + + if ((u32) size & (8 - 1)) { + __osError(ERR_OSAISETNEXTBUFFER_SIZE, 1, size); + return -1; + } +#endif + + bptr = bufPtr; + + if (hdwrBugFlag) { + bptr = (u8*) bufPtr - 0x2000; + } + + if ((((u32) bufPtr + size) & 0x3fff) == 0x2000) { + hdwrBugFlag = TRUE; + } else { + hdwrBugFlag = FALSE; + } + +#if BUILD_VERSION < VERSION_J + if (__osAiDeviceBusy()) { + return -1; + } +#endif + + IO_WRITE(AI_DRAM_ADDR_REG, osVirtualToPhysical(bptr)); + IO_WRITE(AI_LEN_REG, size); + return 0; +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/aisetnextbuf/osAiSetNextBuffer.s") +#endif diff --git a/src/libultra/io/cartrominit.c b/src/libultra/io/cartrominit.c new file mode 100644 index 00000000..885b44c9 --- /dev/null +++ b/src/libultra/io/cartrominit.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/cartrominit/osCartRomInit.s") diff --git a/src/libultra/io/conteepprobe.c b/src/libultra/io/conteepprobe.c new file mode 100644 index 00000000..a73466f7 --- /dev/null +++ b/src/libultra/io/conteepprobe.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/conteepprobe/osEepromProbe.s") diff --git a/src/libultra/io/conteepread.c b/src/libultra/io/conteepread.c new file mode 100644 index 00000000..35487e8c --- /dev/null +++ b/src/libultra/io/conteepread.c @@ -0,0 +1,5 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/conteepread/osEepromRead.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/conteepread/func_800236A0.s") diff --git a/src/libultra/io/conteepwrite.c b/src/libultra/io/conteepwrite.c new file mode 100644 index 00000000..d036ab25 --- /dev/null +++ b/src/libultra/io/conteepwrite.c @@ -0,0 +1,7 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/conteepwrite/osEepromWrite.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/conteepwrite/func_80023960.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/conteepwrite/__osEepStatus.s") diff --git a/src/libultra/io/contramwrite.c b/src/libultra/io/contramwrite.c new file mode 100644 index 00000000..022d24cf --- /dev/null +++ b/src/libultra/io/contramwrite.c @@ -0,0 +1,9 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/contramwrite/__osContRamWrite.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/contramwrite/func_800267C4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/contramwrite/__osContRamRead.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/contramwrite/func_80026B5C.s") diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index 36d69d71..9ecba032 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -1,5 +1,6 @@ #include "global.h" #include "PR/controller.h" +#include "siint.h" extern s32 __osContinitialized; diff --git a/src/libultra/io/leodiskinit.c b/src/libultra/io/leodiskinit.c new file mode 100644 index 00000000..0df6aafa --- /dev/null +++ b/src/libultra/io/leodiskinit.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/leodiskinit/func_80027F90.s") diff --git a/src/libultra/io/leointerrupt.c b/src/libultra/io/leointerrupt.c new file mode 100644 index 00000000..617ce118 --- /dev/null +++ b/src/libultra/io/leointerrupt.c @@ -0,0 +1,7 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/leointerrupt/__osLeoInterrupt.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/leointerrupt/func_8002A8B4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/leointerrupt/func_8002A99C.s") diff --git a/src/libultra/io/pfsgetstatus.c b/src/libultra/io/pfsgetstatus.c new file mode 100644 index 00000000..fccd8a00 --- /dev/null +++ b/src/libultra/io/pfsgetstatus.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/pfsgetstatus/func_8002AC30.s") diff --git a/src/libultra/io/piacs.c b/src/libultra/io/piacs.c new file mode 100644 index 00000000..d84ad887 --- /dev/null +++ b/src/libultra/io/piacs.c @@ -0,0 +1,7 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/piacs/__osPiCreateAccessQueue.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/piacs/__osPiGetAccess.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/piacs/__osPiRelAccess.s") diff --git a/src/libultra/io/pidma.c b/src/libultra/io/pidma.c index 80329836..fdeebeb6 100644 --- a/src/libultra/io/pidma.c +++ b/src/libultra/io/pidma.c @@ -1,4 +1,5 @@ #include "global.h" +#include "piint.h" s32 osPiStartDma(OSIoMesg* mb, s32 pri, s32 rw, u32 devAddr, void* dramAddr, u32 size, OSMesgQueue* piHandle) { register s32 result; diff --git a/src/libultra/io/pimgr.c b/src/libultra/io/pimgr.c new file mode 100644 index 00000000..b9ef4cc4 --- /dev/null +++ b/src/libultra/io/pimgr.c @@ -0,0 +1,93 @@ +#include "global.h" +#include "piint.h" +#include "PR/rdb.h" + +void ramromMain(void* /*arg*/); +extern OSMesgQueue* D_800C7DF0; +extern char piEventBuf[]; +extern OSMesgQueue piEventQueue; +extern OSThread piThread; +extern char piThreadStack[]; +extern OSThread ramromThread; +extern char ramromThreadStack[]; + +#ifdef NON_MATCHING +OSDevMgr __osPiDevMgr = { 0 }; + +void osCreatePiMgr(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt) { + u32 savedMask; + OSPri oldPri; + OSPri myPri; + + if (__osPiDevMgr.active) { + return; + } + osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt); + osCreateMesgQueue(&piEventQueue, (OSMesg*) piEventBuf, 1); + + if (!__osPiAccessQueueEnabled) { + __osPiCreateAccessQueue(); + } + + osSetEventMesg(OS_EVENT_PI, &piEventQueue, (OSMesg) 0x22222222); + oldPri = -1; + myPri = osGetThreadPri(NULL); + + if (myPri < pri) { + oldPri = myPri; + osSetThreadPri(NULL, pri); + } + + savedMask = __osDisableInt(); + __osPiDevMgr.active = 1; + __osPiDevMgr.thread = &piThread; + __osPiDevMgr.cmdQueue = cmdQ; + __osPiDevMgr.evtQueue = &piEventQueue; + __osPiDevMgr.acsQueue = &__osPiAccessQueue; + __osPiDevMgr.dma = __osPiRawStartDma; + __osPiDevMgr.edma = __osEPiRawStartDma; + osCreateThread(&piThread, 0, __osDevMgrMain, &__osPiDevMgr, &piThreadStack[OS_PIM_STACKSIZE], pri); + osStartThread(&piThread); + osCreateThread(&ramromThread, 0, ramromMain, NULL, &ramromThreadStack[1024], (OSPri) pri - 1); + osStartThread(&ramromThread); + + __osRestoreInt(savedMask); + + if (oldPri != -1) { + osSetThreadPri(NULL, oldPri); + } +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/pimgr/osCreatePiMgr.s") +#endif + +extern char freeRamromBuf[]; +extern OSMesgQueue freeRamromQ; +extern char getRamromBuf[]; +extern OSMesgQueue getRamromQ; + +void ramromMain(void* arg) { + u32 sent; + u8 tmp[3]; + + osCreateMesgQueue(&getRamromQ, getRamromBuf, 1); + osCreateMesgQueue(&freeRamromQ, freeRamromBuf, 1); + osSetEventMesg(18 /*OS_EVENT_RDB_REQ_RAMROM*/, &getRamromQ, NULL); + osSetEventMesg(19 /*OS_EVENT_RDB_FREE_RAMROM*/, &freeRamromQ, NULL); + + while (TRUE) { + osRecvMesg(&getRamromQ, NULL, OS_MESG_BLOCK); + + __osPiGetAccess(); + + sent = 0; + + while (sent < 1) { + sent += __osRdbSend(tmp, 1, RDB_TYPE_GtoH_RAMROM); + } + + osRecvMesg(&freeRamromQ, NULL, OS_MESG_BLOCK); + + __osPiRelAccess(); + } +} diff --git a/src/libultra/io/siacs.c b/src/libultra/io/siacs.c new file mode 100644 index 00000000..bf8233d0 --- /dev/null +++ b/src/libultra/io/siacs.c @@ -0,0 +1,7 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/siacs/__osSiCreateAccessQueue.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/siacs/__osSiGetAccess.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/siacs/__osSiRelAccess.s") diff --git a/src/libultra/io/sirawread.c b/src/libultra/io/sirawread.c new file mode 100644 index 00000000..afc7a9bb --- /dev/null +++ b/src/libultra/io/sirawread.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/sirawread/func_80028BE0.s") diff --git a/src/libultra/io/sirawwrite.c b/src/libultra/io/sirawwrite.c new file mode 100644 index 00000000..f57f5815 --- /dev/null +++ b/src/libultra/io/sirawwrite.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/sirawwrite/func_80028C30.s") diff --git a/src/libultra/io/sprawread.c b/src/libultra/io/sprawread.c new file mode 100644 index 00000000..ffdde40a --- /dev/null +++ b/src/libultra/io/sprawread.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/sprawread/func_8002E230.s") diff --git a/src/libultra/io/sprawwrite.c b/src/libultra/io/sprawwrite.c new file mode 100644 index 00000000..121377ee --- /dev/null +++ b/src/libultra/io/sprawwrite.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/sprawwrite/func_8002E1E0.s") diff --git a/src/libultra/io/vigetcurrcontext.c b/src/libultra/io/vigetcurrcontext.c new file mode 100644 index 00000000..e4469692 --- /dev/null +++ b/src/libultra/io/vigetcurrcontext.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/vigetcurrcontext/__osViGetCurrentContext.s") diff --git a/src/libultra/leointerrupt.c b/src/libultra/leointerrupt.c deleted file mode 100644 index 0ae66d16..00000000 --- a/src/libultra/leointerrupt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/leointerrupt/__osLeoInterrupt.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/leointerrupt/func_8002A8B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/leointerrupt/func_8002A99C.s") diff --git a/src/libultra/libc/xldtob.c b/src/libultra/libc/xldtob.c new file mode 100644 index 00000000..fd1553dd --- /dev/null +++ b/src/libultra/libc/xldtob.c @@ -0,0 +1,9 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/xldtob/func_80029080.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/xldtob/D_800C9580.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/xldtob/_Ldtob.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/xldtob/D_800C95D0.s") diff --git a/src/libultra/rmon/xlitob.c b/src/libultra/libc/xlitob.c similarity index 100% rename from src/libultra/rmon/xlitob.c rename to src/libultra/libc/xlitob.c diff --git a/src/libultra/libc/xprintf.c b/src/libultra/libc/xprintf.c new file mode 100644 index 00000000..9e461508 --- /dev/null +++ b/src/libultra/libc/xprintf.c @@ -0,0 +1,5 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/xprintf/_Putfld.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/libc/xprintf/_Printf.s") diff --git a/src/libultra/mtxutil.c b/src/libultra/mtxutil.c deleted file mode 100644 index bd8eaf12..00000000 --- a/src/libultra/mtxutil.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/mtxutil/guMtxF2L.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/mtxutil/guMtxIdentF.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/mtxutil/guMtxIdent.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/mtxutil/guMtxL2F.s") diff --git a/src/libultra/os/getactivequeue.c b/src/libultra/os/getactivequeue.c new file mode 100644 index 00000000..1fefc884 --- /dev/null +++ b/src/libultra/os/getactivequeue.c @@ -0,0 +1,6 @@ +#include "PR/os_internal.h" +#include "osint.h" + +OSThread* __osGetActiveQueue(void) { + return __osActiveQueue; +} diff --git a/src/libultra/os/initialize.c b/src/libultra/os/initialize.c new file mode 100644 index 00000000..d43a9805 --- /dev/null +++ b/src/libultra/os/initialize.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/initialize/osInitialize.s") diff --git a/src/libultra/os/initrdb.c b/src/libultra/os/initrdb.c new file mode 100644 index 00000000..f3d99d32 --- /dev/null +++ b/src/libultra/os/initrdb.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/initrdb/func_8002A180.s") diff --git a/src/libultra/os/rdbsend.c b/src/libultra/os/rdbsend.c new file mode 100644 index 00000000..c8e5085c --- /dev/null +++ b/src/libultra/os/rdbsend.c @@ -0,0 +1,3 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/rdbsend/__osRdbSend.s") diff --git a/src/libultra/os/timerintr.c b/src/libultra/os/timerintr.c new file mode 100644 index 00000000..8dcb17cf --- /dev/null +++ b/src/libultra/os/timerintr.c @@ -0,0 +1,9 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/timerintr/__osTimerServicesInit.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/timerintr/__osTimerInterrupt.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/timerintr/__osSetTimerIntr.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/os/timerintr/__osInsertTimer.s") diff --git a/src/libultra/rmon/rmonbrk.c b/src/libultra/rmon/rmonbrk.c new file mode 100644 index 00000000..2084728b --- /dev/null +++ b/src/libultra/rmon/rmonbrk.c @@ -0,0 +1,29 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D300.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D3AC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D494.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D654.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D660.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D7BC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002D9E4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DA78.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DB3C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DB7C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DC38.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DC68.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DCD0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/func_8002DD00.s") diff --git a/src/libultra/rmon/rmoncmds.c b/src/libultra/rmon/rmoncmds.c new file mode 100644 index 00000000..8b9cf5dd --- /dev/null +++ b/src/libultra/rmon/rmoncmds.c @@ -0,0 +1,5 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmoncmds/func_8002B150.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmoncmds/func_8002B15C.s") diff --git a/src/libultra/rmon/rmonmain.c b/src/libultra/rmon/rmonmain.c new file mode 100644 index 00000000..84881c12 --- /dev/null +++ b/src/libultra/rmon/rmonmain.c @@ -0,0 +1,9 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmain/func_8002DDE0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmain/func_8002DE78.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmain/func_8002DF20.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmain/func_8002E040.s") diff --git a/src/libultra/rmon/rmonmem.c b/src/libultra/rmon/rmonmem.c new file mode 100644 index 00000000..ca47dd0e --- /dev/null +++ b/src/libultra/rmon/rmonmem.c @@ -0,0 +1,31 @@ +#include "global.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B1F0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B238.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B28C.s") + +void func_8002B2C0(s32* arg0, s32* arg1, s32 arg2) { + while (arg2--) { + *arg0++ = *arg1++; + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B2F4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B330.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B52C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B778.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B7F8.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/D_800C9660.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B804.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B8AC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmem/func_8002B91C.s") diff --git a/src/libultra/rmon/rmonregs.c b/src/libultra/rmon/rmonregs.c new file mode 100644 index 00000000..510afe0b --- /dev/null +++ b/src/libultra/rmon/rmonregs.c @@ -0,0 +1,49 @@ +#include "global.h" + +s32 func_8002B238(s32); +void func_8002C700(s32, s32); +void func_8002C818(s32); +void func_8002C8C0(s32); +s32 func_8002E340(void); +void func_8002E3A8(void); + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002C700.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002C784.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002C818.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002C8C0.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002C968.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002CAC4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002CC14.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002CCCC.s") + +s32 func_8002CD80(s32 arg0) { + s32 ret; + + if (func_8002E340() != 0) { + return 0; + } else { + func_8002C818(0); + func_8002C700(0x2B, arg0); + func_8002E3A8(); + ret = func_8002B238(0x04000000); + func_8002C8C0(0); + return ret; + } +} + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002CDE4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002CF44.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002D054.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002D16C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/func_8002D230.s") diff --git a/src/libultra/rmon/rmonsio.c b/src/libultra/rmon/rmonsio.c new file mode 100644 index 00000000..85526d86 --- /dev/null +++ b/src/libultra/rmon/rmonsio.c @@ -0,0 +1,9 @@ +#include "common.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonsio/func_80029F80.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonsio/func_80029FF4.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonsio/func_8002A044.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonsio/func_8002A0B0.s") diff --git a/src/libultra/rmon/rmontask.c b/src/libultra/rmon/rmontask.c new file mode 100644 index 00000000..2bca3af7 --- /dev/null +++ b/src/libultra/rmon/rmontask.c @@ -0,0 +1,47 @@ +#include "global.h" + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002BB00.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002BB7C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002BBFC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002BD04.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002BE38.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002C12C.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002C194.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002C2DC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002C570.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002C5BC.s") + +#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmontask/func_8002C698.s") + +typedef struct { + /* 0x00 */ char pad_0[0x4]; + /* 0x04 */ u8 unk4; +} Unkstruct_func_8002C6B8_1; + +typedef struct { + /* 0x00 */ char pad_0[0x4]; + /* 0x04 */ s8 unk4; + /* 0x05 */ char pad_5; + /* 0x06 */ s16 unk6; + /* 0x08 */ char pad_[0x4]; + /* 0x12 */ s32 unk12; +} Unkstruct_func_8002C6B8_2; + +s32 func_8002C6B8(Unkstruct_func_8002C6B8_1* arg0) { + Unkstruct_func_8002C6B8_2 temp; + + temp.unk4 = arg0->unk4; + temp.unk12 = 0; + temp.unk6 = 0; + func_8002DE78(&temp, 16, 1); + return 0; +} diff --git a/src/libultra/rmon/xldtob.c b/src/libultra/rmon/xldtob.c deleted file mode 100644 index c72b3642..00000000 --- a/src/libultra/rmon/xldtob.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/xldtob/func_80029080.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/xldtob/D_800C9580.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/xldtob/_Ldtob.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/xldtob/D_800C95D0.s") diff --git a/src/main/233A0.c b/src/main/233A0.c deleted file mode 100644 index a37e8321..00000000 --- a/src/main/233A0.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/233A0/func_800227A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/233A0/func_8002296C.s") diff --git a/src/main/23760.c b/src/main/23760.c deleted file mode 100644 index 086e6269..00000000 --- a/src/main/23760.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/23760/func_80022B60.s") diff --git a/src/main/24C60.c b/src/main/24C60.c deleted file mode 100644 index 63ced48e..00000000 --- a/src/main/24C60.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/24C60/func_80024060.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/24C60/_Printf.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/24C60/D_800C93EC.s") diff --git a/src/main/25950.c b/src/main/25950.c deleted file mode 100644 index e28c2030..00000000 --- a/src/main/25950.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/25950/func_80024D50.s") diff --git a/src/main/25AC0.c b/src/main/25AC0.c deleted file mode 100644 index e46e4ff9..00000000 --- a/src/main/25AC0.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/25AC0/func_80024EC0.s") diff --git a/src/main/25CA0.c b/src/main/25CA0.c deleted file mode 100644 index 50b80ee9..00000000 --- a/src/main/25CA0.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/25CA0/osAiSetNextBuffer.s") diff --git a/src/main/25E10.c b/src/main/25E10.c deleted file mode 100644 index 4bdc4e8a..00000000 --- a/src/main/25E10.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/25E10/__osSiCreateAccessQueue.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/25E10/__osSiGetAccess.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/25E10/__osSiRelAccess.s") diff --git a/src/main/271C0.c b/src/main/271C0.c deleted file mode 100644 index bff3f24b..00000000 --- a/src/main/271C0.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "common.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/271C0/__osContRamWrite.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/271C0/func_800267C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/271C0/__osContRamRead.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/271C0/func_80026B5C.s") diff --git a/src/main/2DF00.c b/src/main/2DF00.c deleted file mode 100644 index 45b06885..00000000 --- a/src/main/2DF00.c +++ /dev/null @@ -1,31 +0,0 @@ -#define _MIPS_SZLONG 32 - -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D300.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D3AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D494.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D654.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D660.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D7BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002D9E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DA78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DB3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DB7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DC38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DC68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DCD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/2DF00/func_8002DD00.s") diff --git a/src/main/4650.c b/src/main/4650.c index 397e4cae..79a79dee 100644 --- a/src/main/4650.c +++ b/src/main/4650.c @@ -42,7 +42,7 @@ void func_80004D00(void* arg0) { osCreateViManager(254); func_80003EE0(); func_800034E8(1); - func_800227A0(150, &D_800E2010, &D_800E2028, 50); + osCreatePiMgr(150, &D_800E2010, &D_800E2028, 50); osCreateThread(&D_8013A040, 3, &func_80004ABC, arg0, &D_8013B1F0, 100); osStartThread(&D_8013A040); func_80008018(); @@ -53,7 +53,7 @@ loop_1: void bootproc(void) { func_8001EF10(); - func_80022B60(); + osInitialize(); func_80003A50(); osCreateThread(&D_80138E90, 1, &func_80004D00, 0, &D_8013A040, 255); osStartThread(&D_80138E90); diff --git a/src/main/math64.c b/src/main/math64.c index ffb59b11..2ae59de2 100644 --- a/src/main/math64.c +++ b/src/main/math64.c @@ -1,25 +1,93 @@ -#include "common.h" +#include "global.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FAB0.s") +f32 func_8001FAB0(f32 x) { + return __sinf(x) / __cosf(x); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FAE4.s") +f32 func_8001FAE4(f32 x) { + return func_8001FE60(x); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FB04.s") +f32 func_8001FB04(f32 x) { + return func_8001FE98(x); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FB24.s") +f64 func_8001FB24(f64 x) { + return (x < 0.0) ? -x : x; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FB58.s") +f32 func_8001FB58(f32 x) { + return (x < 0.0f) ? -x : x; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FB88.s") +f32 func_8001FB88(f32 x) { + return func_8001FF40(x); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FBA8.s") +f32 func_8001FBA8(f32 x) { + return func_8001FED0(x); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/func_8001FBC8.s") +f32 func_8001FBC8(f32 x) { + return func_8001FF08(x); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/Math_FAtanF.s") +f32 Math_FAtanF(f32 x) { + s32 sector; + s32 i; + f32 sq; + f32 conv = 0.0f; + f32 z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/Math_FAtan2F.s") + if (x > 1.0f) { + sector = 1; + x = 1.0f / x; + } else if (x < -1.0f) { + sector = -1; + x = 1.0f / x; + } else { + sector = 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/Math_FAsinF.s") + sq = SQ(x); -#pragma GLOBAL_ASM("asm/us/nonmatchings/main/math64/Math_FAcosF.s") + for (z = i = 24; i != 0; i--) { + conv = SQ(z) * sq / (2.0f * z + 1.0f + conv); + z -= 1.0f; + } + + if (sector > 0) { + return M_PI / 2 - (x / (1.0f + conv)); + } else if (sector < 0) { + return -M_PI / 2 - (x / (1.0f + conv)); + } else { + return x / (1.0f + conv); + } +} + +f32 Math_FAtan2F(f32 y, f32 x) { + if ((y == 0.0f) && (x == 0.0f)) { + return 0.0f; + } + if (x == 0.0f) { + if (y < 0.0f) { + return -M_PI / 2; + } + return M_PI / 2; + } + if (x < 0.0f) { + if (y < 0.0f) { + return -(M_PI - Math_FAtanF(fabs(y / x))); + } + return M_PI - Math_FAtanF(fabs(y / x)); + } + return Math_FAtanF(y / x); +} + +f32 Math_FAsinF(f32 x) { + return Math_FAtan2F(x, sqrtf(1 - SQ(x))); +} + +f32 Math_FAcosF(f32 x) { + return M_PI / 2.0f - Math_FAsinF(x); +} diff --git a/src/libultra/rmon/sprintf.c b/src/main/sprintf.c similarity index 100% rename from src/libultra/rmon/sprintf.c rename to src/main/sprintf.c diff --git a/yamls/us/main.yaml b/yamls/us/main.yaml index f4831a35..2cfbfa2c 100644 --- a/yamls/us/main.yaml +++ b/yamls/us/main.yaml @@ -5,33 +5,36 @@ vram: 0x80000450 bss_size: 0x9B1F0 subsegments: - - [0x1050, textbin] - - [0x1270, textbin] - - - [0x3440, c, 3440] - - [0x3A80, c, 3A80] - - [0x41D0, c, 41D0] - - [0x4650, c, 4650] - - [0x5A20, c, 5A20] # -O2 -g3 - - [0x6280, c, 6280] # -O2 -g3 - - [0x7B20, c, 7B20] - - [0x7D30, c, 7D30] - - [0x7FC0, c, 7FC0] - - [0x8CC0, c, 8CC0] - - [0xC870, c, C870] - - [0xF0A0, c, F0A0] + # Microcode + - [0x01050, textbin, rspboot] + - [0x01120, textbin, aspmain] + - [0x02010, textbin, f3dex] + + # Nintendo libraries + - [0x03440, c, 3440] + - [0x03A80, c, 3A80] + - [0x041D0, c, 41D0] + - [0x04650, c, 4650] + - [0x05A20, c, 5A20] + - [0x06280, c, 6280] + - [0x07B20, c, 7B20] + - [0x07D30, c, 7D30] + - [0x07FC0, c, 7FC0] + - [0x08CC0, c, 8CC0] + - [0x0C870, c, C870] + - [0x0F0A0, c, F0A0] - [0x12490, c, 12490] - [0x14AA0, c, 14AA0] - [0x17650, c, 17650] # Sound related - [0x1EB50, c, 1EB50] # Audio Thread - - [0x1FA60, c] - - [0x1FA70, hasm] - - [0x1FB10, hasm] - - [0x205E0, c, ../libultra/rmon/sprintf] - - [0x206B0, c, math64] # math64 - - [0x20A60, hasm, fp.text] # fp.text.s + - [0x1FA60, c, 1FA60] + - [0x1FA70, hasm, decompress] # May be blanked out osDriveRomInit + - [0x1FB10, hasm, rdramcheck] + - [0x205E0, c, sprintf] + - [0x206B0, c, math64] + - [0x20A60, hasm, fp.text] - # LIBULTRA + # Libultra - [0x20BC0, c, ../libultra/io/controller] - [0x20F80, c, ../libultra/io/contreaddata] - [0x211E0, c, ../libultra/os/recvmesg] @@ -45,10 +48,10 @@ - [0x22340, hasm, ../libultra/os/invaldcache] - [0x223F0, c, ../libultra/io/pidma] - [0x22500, c, ../libultra/io/viblack] - - [0x22570, hasm, writebackdcacheall] + - [0x22570, hasm, ../libultra/os/writebackdcacheall] - [0x225A0, c, ../libultra/io/viswapbuf] - [0x225F0, c, ../libultra/io/virepeatline] - - [0x22660, hasm] # padding + - [0x22660, hasm, ../libultra/os/parameter] - [0x226C0, c, ../libultra/io/visetmode] - [0x22730, c, ../libultra/io/visetspecial] - [0x228F0, c, ../libultra/os/createmesgqueue] @@ -61,93 +64,95 @@ - [0x22DA0, c, ../libultra/os/createthread] - [0x22EF0, c, ../libultra/os/startthread] - [0x23040, c, ../libultra/io/vimgr] - - [0x233A0, c] + - [0x233A0, c, ../libultra/io/pimgr] - [0x23680, c, ../libultra/os/setthreadpri] - - [0x23760, c] + - [0x23760, c, ../libultra/os/initialize] - [0x23C00, c, ../libultra/os/gettime] - [0x23C90, c, ../libultra/gu/sinf] - [0x23E50, c, ../libultra/gu/cosf] - - [0x23FC0, c, ../libultra/gu/guSqrtf] + - [0x23FC0, c, ../libultra/gu/sqrtf] - [0x23FD0, c, ../libultra/os/settimer] - - [0x240B0, c, ../libultra/conteepread] - - [0x243B0, c, ../libultra/conteepwrite] + - [0x240B0, c, ../libultra/io/conteepread] + - [0x243B0, c, ../libultra/io/conteepwrite] - [0x24890, c, ../libultra/libc/ll] - - [0x24B50, c, ../libultra/conteepprobe] + - [0x24B50, c, ../libultra/io/conteepprobe] - [0x24BC0, c, ../libultra/libc/string] - - [0x24C60, c, 24C60] + - [0x24C60, c, ../libultra/libc/xprintf] - [0x25920, c, ../libultra/os/settime] - - [0x25950, c] + - [0x25950, c, ../libultra/os/getactivequeue] - [0x25960, c, ../libultra/io/aisetfreq] - - [0x25AC0, c] + - [0x25AC0, c, ../libultra/io/cartrominit] - [0x25BB0, c, ../libultra/io/epidma] - [0x25C90, c, ../libultra/io/aigetlen] - - [0x25CA0, c] - - [0x25D50, hasm, getcount] + - [0x25CA0, c, ../libultra/io/aisetnextbuf] + - [0x25D50, hasm, ../libultra/os/getcount] - [0x25D60, c, ../libultra/io/sirawdma] - - [0x25E10, c] - - [0x25ED0, hasm, interrupt] + - [0x25E10, c, ../libultra/io/siacs] + - [0x25ED0, hasm, ../libultra/os/interrupt] - [0x25F10, c, ../libultra/os/thread] - - [0x25F50, hasm] + - [0x25F50, hasm, ../libultra/os/exceptasm] - [0x26CD0, c, ../libultra/io/pfsisplug] - [0x27040, c, ../libultra/io/crc] - - [0x271C0, c] - - [0x278D0, c, ../libultra/mtxutil] + - [0x271C0, c, ../libultra/io/contramwrite] + - [0x278D0, c, ../libultra/gu/mtxutil] - [0x27B40, c, ../libultra/os/jammesg] - [0x27C90, c, ../libultra/io/pigetcmdq] - [0x27CC0, c, ../libultra/io/vi] - [0x27E00, c, ../libultra/io/spgetstat] - [0x27E10, c, ../libultra/io/spsetstat] - - [0x27E20, hasm, ../libultra/bcopy] + - [0x27E20, hasm, ../libultra/libc/bcopy] - [0x28130, c, ../libultra/os/virtualtophysical] - - [0x281B0, hasm, writebackdcache] + - [0x281B0, hasm, ../libultra/os/writebackdcache] - [0x28230, c, ../libultra/io/spsetpc] - [0x28270, c, ../libultra/io/sprawdma] - [0x28300, c, ../libultra/io/sp] - - [0x28330, c, ../libultra/28330] + - [0x28330, c, ../libultra/os/timerintr] - [0x28800, c, ../libultra/os/getthreadpri] - - [0x28820, c, ../libultra/28820] + - [0x28820, c, ../libultra/io/vigetcurrcontext] - [0x28830, c, ../libultra/io/viswapcontext] - - [0x28B90, c, ../libultra/28B90] - - [0x28C90, c, ../libultra/28C90] + - [0x28B90, c, ../libultra/io/leodiskinit] + - [0x28C90, c, ../libultra/io/piacs] - [0x28D50, c, ../libultra/io/pirawdma] - [0x28E30, c, ../libultra/io/epirawdma] - [0x29060, c, ../libultra/io/devmgr] - - [0x294F0, c, ../libultra/294F0] - - [0x297B0, hasm, ../libultra/setsr] - - [0x297C0, hasm, ../libultra/getsr] - - [0x297D0, hasm, ../libultra/setfpccsr] - - [0x297E0, c, ../libultra/297E0] - - [0x29880, hasm, ../libultra/maptlbrdb] + - [0x294F0, c, ../libultra/os/rdbsend] + - [0x297B0, hasm, ../libultra/os/setsr] + - [0x297C0, hasm, ../libultra/os/getsr] + - [0x297D0, hasm, ../libultra/os/setfpccsr] + - [0x297E0, c, ../libultra/io/sirawread] + - [0x29830, c, ../libultra/io/sirawwrite] + - [0x29880, hasm, ../libultra/os/maptlbrdb] - [0x298E0, c, ../libultra/io/pirawread] - - [0x29940, hasm, ../libultra/bzero] - - [0x299E0, c, ../libultra/rmon/xlitob] - - [0x29C80, c, ../libultra/rmon/xldtob] + - [0x29940, hasm, ../libultra/libc/bzero] + - [0x299E0, c, ../libultra/libc/xlitob] + - [0x29C80, c, ../libultra/libc/xldtob] - [0x2A740, c, ../libultra/io/ai] - [0x2A770, c, ../libultra/io/si] - - [0x2A7A0, c, ../libultra/2A7A0] - - [0x2AAB0, c, ../libultra/2AAB0] - - [0x2AD80, c, ../libultra/2AD80] - - [0x2AE10, c, ../libultra/leointerrupt] - - [0x2B690, hasm, ../libultra/setintmask] + - [0x2A7A0, c, ../libultra/debug/kdebugserver] + - [0x2AAB0, c, ../libultra/host/readhost] + - [0x2AB80, c, ../libultra/rmon/rmonsio] + - [0x2AD80, c, ../libultra/os/initrdb] + - [0x2AE10, c, ../libultra/io/leointerrupt] + - [0x2B690, hasm, ../libultra/os/setintmask] - [0x2B730, c, ../libultra/os/destroythread] - - [0x2B830, c, ../libultra/2B830] - - [0x2B940, hasm, ../libultra/probetlb] - - [0x2BA00, hasm, ../libultra/setcompare] + - [0x2B830, c, ../libultra/io/pfsgetstatus] + - [0x2B940, hasm, ../libultra/os/probetlb] + - [0x2BA00, hasm, ../libultra/os/setcompare] - [0x2BA10, c, ../libultra/os/resetglobalintmask] - [0x2BA70, c, ../libultra/io/epirawwrite] - [0x2BAC0, c, ../libultra/io/epirawread] - [0x2BB10, c, ../libultra/os/setglobalintmask] - [0x2BB60, c, ../libultra/os/yieldthread] - [0x2BBB0, c, ../libultra/libc/ldiv] - - [0x2BD40, hasm, ../libultra/getcause] - - [0x2BD50, c, ../libultra/2BD50] - - [0x2BDF0, c, ../libultra/2BDF0] - - [0x2C700, c, ../libultra/2C700] # -O1 -g0 - - [0x2D300, c, ../libultra/2D300] # -O1 -g0 - - [0x2DF00, c, 2DF00] - - [0x2E9E0, c, ../libultra/2E9E0] - - [0x2EDE0, c, ../libultra/2EDE0] - - [0x2EE30, c, ../libultra/2EE30] + - [0x2BD40, hasm, ../libultra/os/getcause] + - [0x2BD50, c, ../libultra/rmon/rmoncmds] + - [0x2BDF0, c, ../libultra/rmon/rmonmem] + - [0x2C700, c, ../libultra/rmon/rmontask] + - [0x2D300, c, ../libultra/rmon/rmonregs] + - [0x2DF00, c, ../libultra/rmon/rmonbrk] + - [0x2E9E0, c, ../libultra/rmon/rmonmain] + - [0x2EDE0, c, ../libultra/io/sprawwrite] + - [0x2EE30, c, ../libultra/io/sprawread] - [0x2EE80, c, ../libultra/os/stopthread] - [0x2EF40, hasm, ../libultra/rmon/rmonrcp] @@ -160,7 +165,7 @@ - [0x496C0, c, sf_496C0] - [0x52730, c, sf_52730] - [0x59780, c, sf_59780] - - [0x5A2C0, c, sf_5A2C0] # -02 -g3 + - [0x5A2C0, c, sf_5A2C0] - [0x61B30, c, sf_61B30] - [0x6B3B0, c, sf_6B3B0] - [0x77E40, c, sf_77E40] @@ -172,15 +177,23 @@ - [0xA4290, c, sf_A4290] - [0xA48A0, c, sf_A48A0] - [0xA4B50, c, sf_A4B50] - - [0xB99D0, c, sf_B99D0] # -02 -g3, no rodata + - [0xB99D0, c, sf_B99D0] # no rodata - [0xBB360, c, sf_BB360] - [0xBD360, c, sf_versus] - [0xC3430, c, sf_C3430] - # DATA - Libultra - - [0xC3EE0, data, libraries] + # DATA - Microcode + - [0xC3EE0, data, aspmain] + - [0xC4210, data, audiotables] + - [0xC49D0, data, f3dex] - # RODATA - Libultra + # DATA - Nintendo Libraries + - [0xC51D0, data, nlib] + + # DATA - Libultra + - [0xC88C0, data, ../libultra/libultra] + + # RODATA - Nintendo Libraries - [0xC8CC0, .rodata, 5A20] - [0xC8D10, .rodata, 6280] - [0xC8D20, .rodata, 7D30] @@ -193,17 +206,20 @@ - [0xC99D0, .rodata, 17650] - [0xC9CF0, .rodata, 1EB50] - [0xC9F10, .rodata, math64] + + # RODATA - Libultra - [0xC9F30, .rodata, ../libultra/gu/perspective] - [0xC9F40, .rodata, ../libultra/gu/sinf] - [0xC9F90, .rodata, ../libultra/gu/cosf] - - [0xC9FE0, .rodata, 24C60] - - [0xCA0E0, rodata, 25F50] # handwritten + - [0xC9FE0, .rodata, ../libultra/libc/xprintf] + - [0xCA0E0, rodata, ../libultra/os/exceptasm] - [0xCA150, .rodata, ../libultra/io/devmgr] - - [0xCA170, rodata, __libm_qnan_f] - - [0xCA180, .rodata, ../libultra/rmon/xldtob] - - [0xCA1E0, .rodata, ../libultra/2BDF0] - - [0xCA5A0, .rodata, 2DF00] - - [0xCA650, rodata, ../libultra/rmon/rmonrcp] + - [0xCA170, rodata, ../libultra/gu/libm_vals] + - [0xCA180, .rodata, ../libultra/libc/xldtob] + - [0xCA1E0, rodata, ../libultra/os/setintmask] + - [0xCA260, .rodata, ../libultra/rmon/rmonmem] + - [0xCA5A0, .rodata, ../libultra/rmon/rmonbrk] + - [0xCA650, rodata, ../libultra/rmon/rmonrcp] # DATA - game engine - [0xCA690, data, engine]