diff --git a/include/include_asm.h b/include/include_asm.h index 4e9a1b007e..55af381a05 100644 --- a/include/include_asm.h +++ b/include/include_asm.h @@ -20,9 +20,6 @@ ); #endif __asm__(".include \"include/macro.inc\"\n"); -#ifdef MOVE_ADDU -__asm__(".include \"include/move_addu.inc\"\n"); -#endif #else #define INCLUDE_ASM(TYPE, FOLDER, NAME, ARGS...) #endif diff --git a/include/macros.h b/include/macros.h index 2271973846..7ec75b16d5 100644 --- a/include/macros.h +++ b/include/macros.h @@ -76,6 +76,14 @@ #define TAU 6.28318f #define PI_S 3.14159f // Shorter PI +// Angle conversion macros +#define DEG_TO_BINANG(x) ((x) * (0x8000 / 180.0f)) +#define RAD_TO_BINANG(x) ((x) * (f32)(0x8000 / M_PI)) + +// Should be 1.0f / 0x7FFF, but precision is wrong for a double +#define SHT_MINV 3.051851e-05 + + #define SPRITE_WORLD_SCALE (5.0f/7.0f) #define SPRITE_WORLD_SCALE_D (5.0/7.0) @@ -89,9 +97,9 @@ #define PACK_FILL_COLOR(r, g, b, a) (GPACK_RGBA5551(r, g, b, a) << 0x10) | GPACK_RGBA5551(r, g, b, a) #define PACK_FILL_DEPTH(z,dz) (GPACK_ZDZ(z, dz) << 0x10) | GPACK_ZDZ(z, dz) -#define SQ(x) ((x)*(x)) -#define CUBE(x) (x*x*x) -#define QUART(x) (x*x*x*x) +#define SQ(x) ((x) * (x)) +#define CUBE(x) ((x) * (x) * (x)) +#define QUART(x) ((x) * (x) * (x) * (x)) /// Fixed-point short literal #define F16(f) (s16)(f * 327.67f) diff --git a/include/xstdio.h b/include/xstdio.h index 8a0b84bcb5..6e00114155 100755 --- a/include/xstdio.h +++ b/include/xstdio.h @@ -1,8 +1,7 @@ #ifndef _XSTDIO_H #define _XSTDIO_H #include "PR/ultratypes.h" -//#include "stdlib.h" -//#include "stdarg.h" +#include "stdlib/stdarg.h" typedef struct { /* 0x0 */ union { diff --git a/src/43F0.c b/src/43F0.c index 06e548ca7d..07312a121b 100644 --- a/src/43F0.c +++ b/src/43F0.c @@ -3,7 +3,7 @@ u16 heap_nextMallocID = 0; -f32 D_80074274[] = { +f32 sCosineTable[] = { 0.0f, 0.017452f, 0.034899f, 0.052336f, 0.069756f, 0.087156f, 0.104528f, 0.121869f, 0.139173f, 0.156434f, 0.173648f, 0.190809f, 0.207912f, 0.224951f, 0.241922f, 0.258819f, 0.275637f, 0.292372f, 0.309017f, 0.325568f, 0.34202f, 0.358368f, 0.374607f, 0.390731f, 0.406737f, 0.422618f, 0.438371f, 0.45399f, 0.469472f, @@ -15,7 +15,8 @@ f32 D_80074274[] = { 0.984808f, 0.987688f, 0.990268f, 0.992546f, 0.994522f, 0.996195f, 0.997564f, 0.99863f, 0.999391f, 0.999848f, 1.0f }; -u8 D_800743E0[] = { +// Digits for bases up to 36 +u8 sIntegerDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', @@ -25,7 +26,7 @@ u8 D_800743E0[] = { s32 gRandSeed = 1; -f32 D_80074414[] = { +f32 sAtanFactors[] = { 1.0f, 1.273187f, 1.27303f, 1.272768f, 1.272402f, 1.271932f, 1.271358f, 1.270681f, 1.269902f, 1.269021f, 1.268038f, 1.266956f, 1.265774f, 1.264494f, 1.263116f, 1.261643f, 1.260075f, 1.258413f, 1.256659f, 1.254815f, 1.252881f, 1.250859f, 1.248752f, 1.24656f, 1.244285f, 1.241929f, 1.239494f, 1.236981f, 1.234393f, 1.231731f, 1.228997f, @@ -50,7 +51,7 @@ Gfx D_80074580[] = { gsSPEndDisplayList(), }; -void dma_write_block(s32 dramAddr, s32 devAddr, s32 size); +void dma_write_block(Addr dramAddr, u32 devAddr, s32 size); #define ROM_CHUNK_SIZE 0x2000 @@ -62,9 +63,9 @@ HeapNode* _heap_create(HeapNode* addr, u32 size) { if (size < 32) { return (HeapNode*)-1; } else { - HeapNode* heapNode = ALIGN16((s32)addr); + HeapNode* heapNode = (HeapNode*)ALIGN16((u32)addr); - size -= ((s8*)heapNode - (s8*)addr); + size -= ((u8*)heapNode - (u8*)addr); heapNode->next = NULL; heapNode->length = size - sizeof(HeapNode); heapNode->allocated = 0; @@ -361,9 +362,9 @@ f32 cosine(s16 arg0) { } if (temp360 >= 180) { - return -D_80074274[idx]; + return -sCosineTable[idx]; } else { - return D_80074274[idx]; + return sCosineTable[idx]; } } @@ -376,54 +377,44 @@ s32 sign(s32 val) { return sign; } -// D_800743E0 index needs to add the upper 32 bits from func_8006DDC0 ret -#ifdef NON_EQUIVALENT +// Writes integer in base as a string to dest. base can range from 2 to 36 +char* int_to_string(s32 integer, char* dest, s32 base) { + u8 string[40]; // Even for binary this is a little long: 34 would suffice + s32 i = ARRAY_COUNT(string) - 2; + s32 negative = FALSE; + s64 longInteger = integer; -typedef struct { - u8 unk_00[39]; - u8 unk_39; -} Unk_struct_43F0; - -u32 func_8006DDC0(s64 arg0, s64 arg1); -u64 func_8006D800(s64 arg0, s64 arg1); - -char* int_to_string(s32 arg01, char* arg1, s32 arg2) { - Unk_struct_43F0 unk_struct; - s32 phi_s4 = 0x26; - s32 phi_fp = 0; - s64 arg0 = arg01; - - if (arg0 < 0) { - phi_fp = 1; - arg0 *= -1; + // handle negative integers + if (longInteger < 0) { + negative = TRUE; + longInteger *= -1; } - unk_struct.unk_39 = 0; + // null-terminate string + string[ARRAY_COUNT(string) - 1] = '\0'; + + // extract digits, filling string from the back while (TRUE) { - u8(*new_var)[]; - - unk_struct.unk_00[phi_s4] = (*(new_var = &D_800743E0))[func_8006DDC0(arg0, arg2)]; - arg0 = func_8006D800(arg0, arg2); - if (arg0 == 0 || phi_s4 == 0) { + string[i] = sIntegerDigits[longInteger % base]; + longInteger /= base; + if (longInteger == 0 || i == 0) { break; } - phi_s4--; + i--; } - if (phi_fp) { - phi_s4--; - unk_struct.unk_00[phi_s4] = 0x2D; + // Add - to negatives + if (negative) { + i--; + string[i] = '-'; } - strcpy(arg1, &unk_struct.unk_00[phi_s4]); + // copy only populated part of string + strcpy(dest, &string[i]); - return arg1; + return dest; } -#else -INCLUDE_ASM(char*, "43F0", int_to_string, s32 arg01, char* arg1, s32 arg2); -#endif -// should maybe be called bzero void mem_clear(void* data, s32 numBytes) { u8* addressableData = data; @@ -452,32 +443,32 @@ u32 dma_copy(Addr romStart, Addr romEnd, void* vramDest) { osInvalICache(vramDest, length); for (i = 0; i + ROM_CHUNK_SIZE < length; i += ROM_CHUNK_SIZE) { - nuPiReadRom(romStart + i, vramDest + i, ROM_CHUNK_SIZE); + nuPiReadRom((u32)romStart + i, vramDest + i, ROM_CHUNK_SIZE); } if (i != length) { - nuPiReadRom(romStart + i, vramDest + i, length - i); + nuPiReadRom((u32)romStart + i, vramDest + i, length - i); } return length; } -s32 dma_write(s32 romStart, s32 romEnd, void* vramDest) { +s32 dma_write(Addr romStart, Addr romEnd, void* vramDest) { u32 length = romEnd - romStart; s32 i; for (i = 0; i + ROM_CHUNK_SIZE < length; i += ROM_CHUNK_SIZE) { - dma_write_block(romStart + i, vramDest + i, ROM_CHUNK_SIZE); + dma_write_block(romStart + i, (u32)vramDest + i, ROM_CHUNK_SIZE); } if (i != length) { - dma_write_block(romStart + i, vramDest + i, length - i); + dma_write_block(romStart + i, (u32)vramDest + i, length - i); } return length; } -void dma_write_block(s32 dramAddr, s32 devAddr, s32 size) { +void dma_write_block(Addr dramAddr, u32 devAddr, s32 size) { OSIoMesg osIoMesg; OSMesg osMesg; OSMesgQueue osMesgQueue; @@ -564,11 +555,11 @@ f32 signF(f32 val) { return sign; } -s32 round(f32 arg0) { - if (!(arg0 >= 0.0f)) { - return -(s32)(0.5 - arg0); +s32 round(f32 x) { + if (!(x >= 0.0f)) { + return -(s32)(0.5 - x); } else { - return (s32)(0.5 + arg0); + return (s32)(0.5 + x); } } @@ -614,40 +605,40 @@ f32 atan2(f32 startX, f32 startZ, f32 endX, f32 endZ) { f32 zDiff = endZ - startZ; f32 absXDiff = fabsf(xDiff); f32 absZDiff = fabsf(zDiff); - f32 temp_f20; + f32 ret; if (absZDiff < absXDiff) { - temp_f20 = (absZDiff / absXDiff) * 45.0f; - temp_f20 *= D_80074414[round(2.0f * temp_f20)]; + ret = (absZDiff / absXDiff) * 45.0f; + ret *= sAtanFactors[round(2.0f * ret)]; if (xDiff >= 0.0f) { if (zDiff >= 0.0f) { - return temp_f20 + 90.0f; + return ret + 90.0f; } else { - return 90.0f - temp_f20; + return 90.0f - ret; } } if (zDiff >= 0.0f) { - return 270.0f - temp_f20; + return 270.0f - ret; } else { - return temp_f20 + 270.0f; + return ret + 270.0f; } } else { if (absZDiff == 0.0f) { return 0.0f; } - temp_f20 = (absXDiff / absZDiff) * 45.0f; - temp_f20 *= D_80074414[round(2.0f * temp_f20)]; + ret = (absXDiff / absZDiff) * 45.0f; + ret *= sAtanFactors[round(2.0f * ret)]; if (zDiff >= 0.0f) { if (xDiff >= 0.0f) { - return 180.0f - temp_f20; + return 180.0f - ret; } else { - return temp_f20 + 180.0f; + return ret + 180.0f; } } else if (!(xDiff >= 0.0f)) { - return 360.0f - temp_f20; + return 360.0f - ret; } } - return temp_f20; + return ret; } f32 get_player_normal_yaw(void) { @@ -681,50 +672,50 @@ void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta) { f32 sinTheta; f32 cosTheta; - sin_cos_rad((theta * 6.28318f) / 360.0f, &sinTheta, &cosTheta); + sin_cos_rad((theta * TAU) / 360.0f, &sinTheta, &cosTheta); *x += r * sinTheta; *y -= r * cosTheta; } +// Effectively computes theta % 0x100000 u16 _wrap_trig_lookup_value(f32 theta) { f32 ret = theta; - if (theta >= 1048576.0f || theta <= -1048576.0f) { - ret = theta * 0.0000009536743f; - ret = theta - ((s32) ret) * 1048576.0f; + if (theta >= 0x100000 || theta <= -0x100000) { + ret = theta / 0x100000; + ret = theta - (f32)(s32)ret * 0x100000; } return (s32) ret; } -void sin_cos_rad(f32 rad, f32* outSinTheta, f32* outCosTheta) { - u16 theta = _wrap_trig_lookup_value(rad * 10430.378f); +void sin_cos_rad(f32 theta, f32* outSinTheta, f32* outCosTheta) { + u16 binang = _wrap_trig_lookup_value(RAD_TO_BINANG(theta)); - *outSinTheta = sins(theta) * 3.051851e-05; - *outCosTheta = coss(theta) * 3.051851e-05; + *outSinTheta = sins(binang) * SHT_MINV; + *outCosTheta = coss(binang) * SHT_MINV; } -f32 sin_rad(f32 angle) { - return sins(_wrap_trig_lookup_value(angle * 10430.378f)) * 3.051851e-05; +f32 sin_rad(f32 theta) { + return sins(_wrap_trig_lookup_value(RAD_TO_BINANG(theta))) * SHT_MINV; } -f32 cos_rad(f32 angle) { - return coss(_wrap_trig_lookup_value(angle * 10430.378f)) * 3.051851e-05; +f32 cos_rad(f32 theta) { + return coss(_wrap_trig_lookup_value(RAD_TO_BINANG(theta))) * SHT_MINV; +} +void sin_cos_deg(f32 theta, f32* outSinTheta, f32* outCosTheta) { + u16 binang = _wrap_trig_lookup_value(DEG_TO_BINANG(theta)); + + *outSinTheta = sins(binang) * SHT_MINV; + *outCosTheta = coss(binang) * SHT_MINV; } -void sin_cos_deg(f32 rad, f32* outSinTheta, f32* outCosTheta) { - u16 theta = _wrap_trig_lookup_value(rad * 182.04445f); - - *outSinTheta = sins(theta) * 3.051851e-05; - *outCosTheta = coss(theta) * 3.051851e-05; +f32 sin_deg(f32 theta) { + return sins(_wrap_trig_lookup_value(DEG_TO_BINANG(theta))) * SHT_MINV; } -f32 sin_deg(f32 angle) { - return sins(_wrap_trig_lookup_value(angle * 182.04445f)) * 3.051851e-05; -} - -f32 cos_deg(f32 angle) { - return coss(_wrap_trig_lookup_value(angle * 182.04445f)) * 3.051851e-05; +f32 cos_deg(f32 theta) { + return coss(_wrap_trig_lookup_value(DEG_TO_BINANG(theta))) * SHT_MINV; } f32 update_lerp(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration) { diff --git a/src/os/41e70_len_340.c b/src/os/41e70_len_340.c deleted file mode 100644 index 60ee766ba4..0000000000 --- a/src/os/41e70_len_340.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(void, "os/41e70_len_340", osCreateViManager, OSPri pri); - -INCLUDE_ASM(s32, "os/41e70_len_340", viMgrMain); diff --git a/src/os/45a50_len_3a0.c b/src/os/45a50_len_3a0.c deleted file mode 100644 index 33876576b0..0000000000 --- a/src/os/45a50_len_3a0.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/45a50_len_3a0", func_8006A650) - -INCLUDE_ASM(void, "os/45a50_len_3a0", __osInitialize_common, void); - -void func_8006A9E0(void) { -} diff --git a/src/os/46c70_len_e00.c b/src/os/46c70_len_e00.c deleted file mode 100644 index 4e1b359580..0000000000 --- a/src/os/46c70_len_e00.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(int, "os/46c70_len_e00", bcmp, const void* src, const void* dst, int size); - -INCLUDE_ASM(s32, "os/46c70_len_e00", _Litob); - -INCLUDE_ASM(s32, "os/46c70_len_e00", _Ldtob); - -INCLUDE_ASM(s32, "os/46c70_len_e00", _Ldunscale); - -INCLUDE_ASM(s32, "os/46c70_len_e00", _Genld); diff --git a/src/os/47e90_len_110.c b/src/os/47e90_len_110.c deleted file mode 100644 index 7ee8bf8c50..0000000000 --- a/src/os/47e90_len_110.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/47e90_len_110", osViInit); diff --git a/src/os/47fa0_len_20.c b/src/os/47fa0_len_20.c deleted file mode 100644 index 2f37864f03..0000000000 --- a/src/os/47fa0_len_20.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/47fa0_len_20", osViGetCurrentContext); diff --git a/src/os/48c00_len_5c0.c b/src/os/48c00_len_5c0.c deleted file mode 100644 index 3da2a2ff49..0000000000 --- a/src/os/48c00_len_5c0.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/48c00_len_5c0", func_8006D800); diff --git a/src/os/491c0_len_f80.c b/src/os/491c0_len_f80.c deleted file mode 100644 index 83b174ea28..0000000000 --- a/src/os/491c0_len_f80.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/491c0_len_f80", func_8006DDC0); - -INCLUDE_ASM(s32, "os/491c0_len_f80", func_8006E310); diff --git a/src/os/49C70.c b/src/os/49C70.c deleted file mode 100644 index ca88caa7c1..0000000000 --- a/src/os/49C70.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(s32, "os/49C70", func_8006E870); diff --git a/src/os/4a140_len_70.c b/src/os/4a140_len_70.c deleted file mode 100644 index ae9285dc94..0000000000 --- a/src/os/4a140_len_70.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(char*, "os/4a140_len_70", strcpy, char* destination, const char* source); - -INCLUDE_ASM(s32, "os/4a140_len_70", strcmp, const char* str1, const char* str2); diff --git a/src/os/4a1b0_len_40.c b/src/os/4a1b0_len_40.c deleted file mode 100644 index 20aabf3472..0000000000 --- a/src/os/4a1b0_len_40.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "common.h" - -INCLUDE_ASM(void*, "os/4a1b0_len_40", memset, void* ptr, s32 value, s32 num); diff --git a/src/os/contramwrite.c b/src/os/contramwrite.c index 02a6470a8c..f67c3e82d9 100644 --- a/src/os/contramwrite.c +++ b/src/os/contramwrite.c @@ -1,5 +1,3 @@ -// nops in the end -#ifdef NON_MATCHING #include "PR/controller.h" #include "PR/osint.h" #include "PR/siint.h" @@ -68,7 +66,3 @@ s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int __osSiRelAccess(); return ret; } -#else -#include "common.h" -INCLUDE_ASM(s32, "os/457c0_len_270", osContRamWrite, OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int force); -#endif diff --git a/src/os/controller.c b/src/os/controller.c index 12210d13e7..ebc1dc6721 100644 --- a/src/os/controller.c +++ b/src/os/controller.c @@ -1,4 +1,5 @@ -#include "common.h" +#include "ultra64.h" +#include "include_asm.h" u32 __osContinitialized = 0; diff --git a/src/os/47c60_len_f0.c b/src/os/crc.c similarity index 54% rename from src/os/47c60_len_f0.c rename to src/os/crc.c index 00f08c6c7a..c3c285661f 100644 --- a/src/os/47c60_len_f0.c +++ b/src/os/crc.c @@ -1,8 +1,35 @@ -#define MOVE_ADDU +#include "ultra64.h" +#include "include_asm.h" -#include "common.h" +u8 __osContAddressCrc(u16 addr) { + u32 temp = 0; + u32 i; -INCLUDE_ASM(s32, "os/47c60_len_f0", osContAddressCrc); + for (i = 0x400; i != 0;) { + temp <<= 1; + + if (addr & i) { + if (temp & 0x20) { + temp ^= 0x14; + } else { + ++temp; + } + } else if (temp & 0x20) { + temp ^= 0x15; + } + + i >>= 1; + } + + for (i = 5; i != 0; --i) { + temp <<= 1; + if (temp & 0x20) { + temp ^= 0x15; + } + } + + return temp & 0x1F; +} u8 __osContDataCrc(u8* data) { s32 ret; diff --git a/src/os/divdi3.c b/src/os/divdi3.c new file mode 100644 index 0000000000..dcfdbfaa09 --- /dev/null +++ b/src/os/divdi3.c @@ -0,0 +1,3 @@ +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/divdi3", __divdi3); diff --git a/src/os/initialize.c b/src/os/initialize.c new file mode 100644 index 0000000000..e3c750302f --- /dev/null +++ b/src/os/initialize.c @@ -0,0 +1,9 @@ +#include "ultra64.h" +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/initialize", __createSpeedParam) + +INCLUDE_ASM(void, "os/initialize", __osInitialize_common, void); + +void __osInitialize_autodetect(void) { +} diff --git a/src/os/ldiv.c b/src/os/ldiv.c index 792805b29f..85a4b015ce 100644 --- a/src/os/ldiv.c +++ b/src/os/ldiv.c @@ -1,4 +1,5 @@ -#include "common.h" +#include "ultra64.h" +#include "include_asm.h" INCLUDE_ASM(s32, "os/ldiv", ldiv); diff --git a/src/os/memset.c b/src/os/memset.c new file mode 100644 index 0000000000..8c6e5a4e07 --- /dev/null +++ b/src/os/memset.c @@ -0,0 +1,10 @@ +#include "gcc/memory.h" + +void* memset(void* dest, int val, size_t len) { + unsigned char* ptr = dest; + + while (len--) { + *ptr++ = val; + } + return dest; +} diff --git a/src/os/moddi3.c b/src/os/moddi3.c new file mode 100644 index 0000000000..996d00a2e9 --- /dev/null +++ b/src/os/moddi3.c @@ -0,0 +1,3 @@ +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/moddi3", __moddi3); diff --git a/src/os/motor.c b/src/os/motor.c index 713a3f98c0..98d59bdd77 100644 --- a/src/os/motor.c +++ b/src/os/motor.c @@ -1,6 +1,8 @@ -#include "common.h" + +#include "ultra64.h" #include "controller.h" +#include "include_asm.h" -INCLUDE_ASM(s32, "os/43200_len_7c0", __osMotorAccess, OSPfs* pfs, s32 unk); +INCLUDE_ASM(s32, "os/motor", __osMotorAccess, OSPfs* pfs, s32 unk); -INCLUDE_ASM(s32, "os/43200_len_7c0", osMotorInit, OSMesgQueue* queue, OSPfs* pfs, int unk); +INCLUDE_ASM(s32, "os/motor", osMotorInit, OSMesgQueue* queue, OSPfs* pfs, int unk); diff --git a/src/os/osCartRomInit.c b/src/os/osCartRomInit.c index e9507996ff..0107715dc4 100644 --- a/src/os/osCartRomInit.c +++ b/src/os/osCartRomInit.c @@ -1,4 +1,5 @@ -#include "common.h" +#include "ultra64.h" +#include "include_asm.h" u32 D_80093D80 = 1; diff --git a/src/os/osCreatePiManager.c b/src/os/osCreatePiManager.c index 4514ceb656..ff84e0a33f 100644 --- a/src/os/osCreatePiManager.c +++ b/src/os/osCreatePiManager.c @@ -1,4 +1,5 @@ -#include "common.h" +#include "ultra64.h" +#include "include_asm.h" OSDevMgr __osPiDevMgr = {0}; OSPiHandle* __osPiTable = NULL; diff --git a/src/os/osSetThreadPri.c b/src/os/osSetThreadPri.c index 6b0a831bfe..5faa19d670 100644 --- a/src/os/osSetThreadPri.c +++ b/src/os/osSetThreadPri.c @@ -1,7 +1,6 @@ -#define MOVE_ADDU - -#include "common.h" +#include "ultra64.h" #include +#include "include_asm.h" struct __osThreadTail __osThreadTail = {0, -1}; OSThread* __osRunQueue = (OSThread*) &__osThreadTail; diff --git a/src/os/sprintf.c b/src/os/sprintf.c index 67600751cd..58a96cb204 100644 --- a/src/os/sprintf.c +++ b/src/os/sprintf.c @@ -1,7 +1,5 @@ -#define MOVE_ADDU - -#include "common.h" -#include "stdlib/stdarg.h" +#include "ultra64.h" +#include "xstdio.h" static char *proutSprintf(char *dst, const char *src, size_t count); diff --git a/src/os/strcmp.c b/src/os/strcmp.c new file mode 100644 index 0000000000..be9bd516f4 --- /dev/null +++ b/src/os/strcmp.c @@ -0,0 +1,18 @@ +#include "gcc/string.h" + +int strcmp(const char* str1, const char* str2) { + unsigned char c1 = *str1; + unsigned char c2 = *str2; + + while (1) { + c1 = *str1++; + c2 = *str2++; + if (c1 != c2) { + break; + } + if (c1 == 0) { + return 0; + } + } + return c1 - c2; +} diff --git a/src/os/strcpy.c b/src/os/strcpy.c new file mode 100644 index 0000000000..ad7944e55e --- /dev/null +++ b/src/os/strcpy.c @@ -0,0 +1,12 @@ +#include "gcc/string.h" + +char* strcpy(char* dest, const char* src) { + const unsigned char* var_a1 = src; + unsigned char* var_v1 = dest; + + while (*var_a1 != 0) { + *var_v1++ = *var_a1++; + } + *var_v1 = 0; + return dest; +} diff --git a/src/os/udivdi3.c b/src/os/udivdi3.c new file mode 100644 index 0000000000..d34ad33b6c --- /dev/null +++ b/src/os/udivdi3.c @@ -0,0 +1,3 @@ +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/udivdi3", __udivdi3); diff --git a/src/os/umoddi3.c b/src/os/umoddi3.c new file mode 100644 index 0000000000..49abccf386 --- /dev/null +++ b/src/os/umoddi3.c @@ -0,0 +1,3 @@ +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/umoddi3", __umoddi3); diff --git a/src/os/vi.c b/src/os/vi.c new file mode 100644 index 0000000000..56a207afb7 --- /dev/null +++ b/src/os/vi.c @@ -0,0 +1,4 @@ +#include "ultra64.h" +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/vi", __osViInit); diff --git a/src/os/vigetcurrcontext.c b/src/os/vigetcurrcontext.c new file mode 100644 index 0000000000..db1cf794b9 --- /dev/null +++ b/src/os/vigetcurrcontext.c @@ -0,0 +1,4 @@ +#include "ultra64.h" +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/vigetcurrcontext", osViGetCurrentContext); diff --git a/src/os/vimgr.c b/src/os/vimgr.c new file mode 100644 index 0000000000..e1cc243575 --- /dev/null +++ b/src/os/vimgr.c @@ -0,0 +1,6 @@ +#include "ultra64.h" +#include "include_asm.h" + +INCLUDE_ASM(void, "os/vimgr", osCreateViManager, OSPri pri); + +INCLUDE_ASM(s32, "os/vimgr", viMgrMain); diff --git a/src/os/xldtob.c b/src/os/xldtob.c new file mode 100644 index 0000000000..15326ba92d --- /dev/null +++ b/src/os/xldtob.c @@ -0,0 +1,8 @@ +#include "ultra64.h" +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/xldtob", _Ldtob); + +INCLUDE_ASM(s32, "os/xldtob", _Ldunscale); + +INCLUDE_ASM(s32, "os/xldtob", _Genld); diff --git a/src/os/xlitob.c b/src/os/xlitob.c new file mode 100644 index 0000000000..5150ec5bbe --- /dev/null +++ b/src/os/xlitob.c @@ -0,0 +1,4 @@ +#include "ultra64.h" +#include "include_asm.h" + +INCLUDE_ASM(s32, "os/xlitob", _Litob); diff --git a/ver/us/asm/nonmatchings/43F0/int_to_string.s b/ver/us/asm/nonmatchings/43F0/int_to_string.s deleted file mode 100644 index dce892b1c2..0000000000 --- a/ver/us/asm/nonmatchings/43F0/int_to_string.s +++ /dev/null @@ -1,87 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel int_to_string -/* 48C4 800294C4 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 48C8 800294C8 AFB7006C */ sw $s7, 0x6c($sp) -/* 48CC 800294CC 00C0B82D */ daddu $s7, $a2, $zero -/* 48D0 800294D0 AFB40060 */ sw $s4, 0x60($sp) -/* 48D4 800294D4 24140026 */ addiu $s4, $zero, 0x26 -/* 48D8 800294D8 AFBE0070 */ sw $fp, 0x70($sp) -/* 48DC 800294DC 0000F02D */ daddu $fp, $zero, $zero -/* 48E0 800294E0 AFB3005C */ sw $s3, 0x5c($sp) -/* 48E4 800294E4 AFB20058 */ sw $s2, 0x58($sp) -/* 48E8 800294E8 0080982D */ daddu $s3, $a0, $zero -/* 48EC 800294EC 000497C3 */ sra $s2, $a0, 0x1f -/* 48F0 800294F0 AFBF0074 */ sw $ra, 0x74($sp) -/* 48F4 800294F4 AFB60068 */ sw $s6, 0x68($sp) -/* 48F8 800294F8 AFB50064 */ sw $s5, 0x64($sp) -/* 48FC 800294FC AFB10054 */ sw $s1, 0x54($sp) -/* 4900 80029500 AFB00050 */ sw $s0, 0x50($sp) -/* 4904 80029504 0641000A */ bgez $s2, .L80029530 -/* 4908 80029508 AFA5007C */ sw $a1, 0x7c($sp) -/* 490C 8002950C 2402FFFF */ addiu $v0, $zero, -1 -/* 4910 80029510 02620019 */ multu $s3, $v0 -/* 4914 80029514 241E0001 */ addiu $fp, $zero, 1 -/* 4918 80029518 00001010 */ mfhi $v0 -/* 491C 8002951C 00001812 */ mflo $v1 -/* 4920 80029520 00531023 */ subu $v0, $v0, $s3 -/* 4924 80029524 00521023 */ subu $v0, $v0, $s2 -/* 4928 80029528 0040902D */ daddu $s2, $v0, $zero -/* 492C 8002952C 0060982D */ daddu $s3, $v1, $zero -.L80029530: -/* 4930 80029530 A3A00037 */ sb $zero, 0x37($sp) -/* 4934 80029534 27B60010 */ addiu $s6, $sp, 0x10 -/* 4938 80029538 0017AFC3 */ sra $s5, $s7, 0x1f -.L8002953C: -/* 493C 8002953C 02E0882D */ daddu $s1, $s7, $zero -/* 4940 80029540 02A0802D */ daddu $s0, $s5, $zero -/* 4944 80029544 0240202D */ daddu $a0, $s2, $zero -/* 4948 80029548 0260282D */ daddu $a1, $s3, $zero -/* 494C 8002954C 0200302D */ daddu $a2, $s0, $zero -/* 4950 80029550 0C01B770 */ jal func_8006DDC0 -/* 4954 80029554 0220382D */ daddu $a3, $s1, $zero -/* 4958 80029558 0240202D */ daddu $a0, $s2, $zero -/* 495C 8002955C 0260282D */ daddu $a1, $s3, $zero -/* 4960 80029560 0200302D */ daddu $a2, $s0, $zero -/* 4964 80029564 0220382D */ daddu $a3, $s1, $zero -/* 4968 80029568 3C088007 */ lui $t0, %hi(D_800743E0) -/* 496C 8002956C 250843E0 */ addiu $t0, $t0, %lo(D_800743E0) -/* 4970 80029570 00681021 */ addu $v0, $v1, $t0 -/* 4974 80029574 90430000 */ lbu $v1, ($v0) -/* 4978 80029578 02D41021 */ addu $v0, $s6, $s4 -/* 497C 8002957C 0C01B600 */ jal func_8006D800 -/* 4980 80029580 A0430000 */ sb $v1, ($v0) -/* 4984 80029584 0040902D */ daddu $s2, $v0, $zero -/* 4988 80029588 0060982D */ daddu $s3, $v1, $zero -/* 498C 8002958C 02721025 */ or $v0, $s3, $s2 -/* 4990 80029590 10400005 */ beqz $v0, .L800295A8 -/* 4994 80029594 00000000 */ nop -/* 4998 80029598 12800003 */ beqz $s4, .L800295A8 -/* 499C 8002959C 00000000 */ nop -/* 49A0 800295A0 0800A54F */ j .L8002953C -/* 49A4 800295A4 2694FFFF */ addiu $s4, $s4, -1 -.L800295A8: -/* 49A8 800295A8 13C00004 */ beqz $fp, .L800295BC -/* 49AC 800295AC 2402002D */ addiu $v0, $zero, 0x2d -/* 49B0 800295B0 2694FFFF */ addiu $s4, $s4, -1 -/* 49B4 800295B4 03B41821 */ addu $v1, $sp, $s4 -/* 49B8 800295B8 A0620010 */ sb $v0, 0x10($v1) -.L800295BC: -/* 49BC 800295BC 27A50010 */ addiu $a1, $sp, 0x10 -/* 49C0 800295C0 8FA4007C */ lw $a0, 0x7c($sp) -/* 49C4 800295C4 0C01BB50 */ jal strcpy -/* 49C8 800295C8 00B42821 */ addu $a1, $a1, $s4 -/* 49CC 800295CC 8FA2007C */ lw $v0, 0x7c($sp) -/* 49D0 800295D0 8FBF0074 */ lw $ra, 0x74($sp) -/* 49D4 800295D4 8FBE0070 */ lw $fp, 0x70($sp) -/* 49D8 800295D8 8FB7006C */ lw $s7, 0x6c($sp) -/* 49DC 800295DC 8FB60068 */ lw $s6, 0x68($sp) -/* 49E0 800295E0 8FB50064 */ lw $s5, 0x64($sp) -/* 49E4 800295E4 8FB40060 */ lw $s4, 0x60($sp) -/* 49E8 800295E8 8FB3005C */ lw $s3, 0x5c($sp) -/* 49EC 800295EC 8FB20058 */ lw $s2, 0x58($sp) -/* 49F0 800295F0 8FB10054 */ lw $s1, 0x54($sp) -/* 49F4 800295F4 8FB00050 */ lw $s0, 0x50($sp) -/* 49F8 800295F8 03E00008 */ jr $ra -/* 49FC 800295FC 27BD0078 */ addiu $sp, $sp, 0x78 diff --git a/ver/us/asm/nonmatchings/os/457c0_len_270/osContRamWrite.s b/ver/us/asm/nonmatchings/os/457c0_len_270/osContRamWrite.s deleted file mode 100644 index 5039c9ca76..0000000000 --- a/ver/us/asm/nonmatchings/os/457c0_len_270/osContRamWrite.s +++ /dev/null @@ -1,169 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel __osContRamWrite -/* 457C0 8006A3C0 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 457C4 8006A3C4 8FA20058 */ lw $v0, 0x58($sp) -/* 457C8 8006A3C8 AFB40030 */ sw $s4, 0x30($sp) -/* 457CC 8006A3CC 0080A021 */ addu $s4, $a0, $zero -/* 457D0 8006A3D0 AFB3002C */ sw $s3, 0x2c($sp) -/* 457D4 8006A3D4 00A09821 */ addu $s3, $a1, $zero -/* 457D8 8006A3D8 AFB50034 */ sw $s5, 0x34($sp) -/* 457DC 8006A3DC 24150002 */ addiu $s5, $zero, 2 -/* 457E0 8006A3E0 AFB7003C */ sw $s7, 0x3c($sp) -/* 457E4 8006A3E4 00E0B821 */ addu $s7, $a3, $zero -/* 457E8 8006A3E8 AFB00020 */ sw $s0, 0x20($sp) -/* 457EC 8006A3EC 00C08021 */ addu $s0, $a2, $zero -/* 457F0 8006A3F0 3204FFFF */ andi $a0, $s0, 0xffff -/* 457F4 8006A3F4 2C830007 */ sltiu $v1, $a0, 7 -/* 457F8 8006A3F8 AFBF0044 */ sw $ra, 0x44($sp) -/* 457FC 8006A3FC AFBE0040 */ sw $fp, 0x40($sp) -/* 45800 8006A400 AFB60038 */ sw $s6, 0x38($sp) -/* 45804 8006A404 AFB20028 */ sw $s2, 0x28($sp) -/* 45808 8006A408 38420001 */ xori $v0, $v0, 1 -/* 4580C 8006A40C 0002102B */ sltu $v0, $zero, $v0 -/* 45810 8006A410 00431024 */ and $v0, $v0, $v1 -/* 45814 8006A414 10400003 */ beqz $v0, .L8006A424 -/* 45818 8006A418 AFB10024 */ sw $s1, 0x24($sp) -/* 4581C 8006A41C 1480005D */ bnez $a0, .L8006A594 -/* 45820 8006A420 00001021 */ addu $v0, $zero, $zero -.L8006A424: -/* 45824 8006A424 0C019771 */ jal __osSiGetAccess -/* 45828 8006A428 241E0003 */ addiu $fp, $zero, 3 -/* 4582C 8006A42C 3216FFFF */ andi $s6, $s0, 0xffff -/* 45830 8006A430 00108140 */ sll $s0, $s0, 5 -/* 45834 8006A434 AFB00014 */ sw $s0, 0x14($sp) -.L8006A438: -/* 45838 8006A438 3C02800A */ lui $v0, %hi(__osContLastCmd) -/* 4583C 8006A43C 9042A61C */ lbu $v0, %lo(__osContLastCmd)($v0) -/* 45840 8006A440 3C10800E */ lui $s0, %hi(__osPfsPifRam) -/* 45844 8006A444 145E0005 */ bne $v0, $fp, .L8006A45C -/* 45848 8006A448 2610A000 */ addiu $s0, $s0, %lo(__osPfsPifRam) -/* 4584C 8006A44C 3C028009 */ lui $v0, %hi(__osPfsLastChannel) -/* 45850 8006A450 8C4258E0 */ lw $v0, %lo(__osPfsLastChannel)($v0) -/* 45854 8006A454 5053001A */ beql $v0, $s3, .L8006A4C0 -/* 45858 8006A458 02708021 */ addu $s0, $s3, $s0 -.L8006A45C: -/* 4585C 8006A45C 3C01800A */ lui $at, %hi(__osContLastCmd) -/* 45860 8006A460 A03EA61C */ sb $fp, %lo(__osContLastCmd)($at) -/* 45864 8006A464 3C018009 */ lui $at, %hi(__osPfsLastChannel) -/* 45868 8006A468 AC3358E0 */ sw $s3, %lo(__osPfsLastChannel)($at) -/* 4586C 8006A46C 1A600006 */ blez $s3, .L8006A488 -/* 45870 8006A470 00001821 */ addu $v1, $zero, $zero -.L8006A474: -/* 45874 8006A474 A2000000 */ sb $zero, ($s0) -/* 45878 8006A478 24630001 */ addiu $v1, $v1, 1 -/* 4587C 8006A47C 0073102A */ slt $v0, $v1, $s3 -/* 45880 8006A480 1440FFFC */ bnez $v0, .L8006A474 -/* 45884 8006A484 26100001 */ addiu $s0, $s0, 1 -.L8006A488: -/* 45888 8006A488 24080001 */ addiu $t0, $zero, 1 -/* 4588C 8006A48C 3C01800E */ lui $at, %hi(D_800DA03C) -/* 45890 8006A490 AC28A03C */ sw $t0, %lo(D_800DA03C)($at) -/* 45894 8006A494 240800FF */ addiu $t0, $zero, 0xff -/* 45898 8006A498 24020023 */ addiu $v0, $zero, 0x23 -/* 4589C 8006A49C A2080000 */ sb $t0, ($s0) -/* 458A0 8006A4A0 24080001 */ addiu $t0, $zero, 1 -/* 458A4 8006A4A4 A2080002 */ sb $t0, 2($s0) -/* 458A8 8006A4A8 240800FF */ addiu $t0, $zero, 0xff -/* 458AC 8006A4AC A2020001 */ sb $v0, 1($s0) -/* 458B0 8006A4B0 240200FE */ addiu $v0, $zero, 0xfe -/* 458B4 8006A4B4 A21E0003 */ sb $fp, 3($s0) -/* 458B8 8006A4B8 A2080026 */ sb $t0, 0x26($s0) -/* 458BC 8006A4BC A2020027 */ sb $v0, 0x27($s0) -.L8006A4C0: -/* 458C0 8006A4C0 02C02021 */ addu $a0, $s6, $zero -/* 458C4 8006A4C4 001610C2 */ srl $v0, $s6, 3 -/* 458C8 8006A4C8 0C01B218 */ jal __osContAddressCrc -/* 458CC 8006A4CC A2020004 */ sb $v0, 4($s0) -/* 458D0 8006A4D0 02E02021 */ addu $a0, $s7, $zero -/* 458D4 8006A4D4 8FA80014 */ lw $t0, 0x14($sp) -/* 458D8 8006A4D8 26050006 */ addiu $a1, $s0, 6 -/* 458DC 8006A4DC 24060020 */ addiu $a2, $zero, 0x20 -/* 458E0 8006A4E0 00481025 */ or $v0, $v0, $t0 -/* 458E4 8006A4E4 0C019194 */ jal bcopy -/* 458E8 8006A4E8 A2020005 */ sb $v0, 5($s0) -/* 458EC 8006A4EC 3C05800E */ lui $a1, %hi(__osPfsPifRam) -/* 458F0 8006A4F0 24A5A000 */ addiu $a1, $a1, %lo(__osPfsPifRam) -/* 458F4 8006A4F4 0C019730 */ jal __osSiRawStartDma -/* 458F8 8006A4F8 24040001 */ addiu $a0, $zero, 1 -/* 458FC 8006A4FC 0C01B233 */ jal __osContDataCrc -/* 45900 8006A500 02E02021 */ addu $a0, $s7, $zero -/* 45904 8006A504 02802021 */ addu $a0, $s4, $zero -/* 45908 8006A508 00002821 */ addu $a1, $zero, $zero -/* 4590C 8006A50C 24060001 */ addiu $a2, $zero, 1 -/* 45910 8006A510 0C0195BC */ jal osRecvMesg -/* 45914 8006A514 00409021 */ addu $s2, $v0, $zero -/* 45918 8006A518 3C05800E */ lui $a1, %hi(__osPfsPifRam) -/* 4591C 8006A51C 24A5A000 */ addiu $a1, $a1, %lo(__osPfsPifRam) -/* 45920 8006A520 0C019730 */ jal __osSiRawStartDma -/* 45924 8006A524 00002021 */ addu $a0, $zero, $zero -/* 45928 8006A528 02802021 */ addu $a0, $s4, $zero -/* 4592C 8006A52C 00002821 */ addu $a1, $zero, $zero -/* 45930 8006A530 0C0195BC */ jal osRecvMesg -/* 45934 8006A534 24060001 */ addiu $a2, $zero, 1 -/* 45938 8006A538 92020002 */ lbu $v0, 2($s0) -/* 4593C 8006A53C 304200C0 */ andi $v0, $v0, 0xc0 -/* 45940 8006A540 00028902 */ srl $s1, $v0, 4 -/* 45944 8006A544 5620000B */ bnel $s1, $zero, .L8006A574 -/* 45948 8006A548 24110001 */ addiu $s1, $zero, 1 -/* 4594C 8006A54C 92030026 */ lbu $v1, 0x26($s0) -/* 45950 8006A550 324200FF */ andi $v0, $s2, 0xff -/* 45954 8006A554 10430007 */ beq $v0, $v1, .L8006A574 -/* 45958 8006A558 02802021 */ addu $a0, $s4, $zero -/* 4595C 8006A55C 0C01A530 */ jal __osPfsGetStatus -/* 45960 8006A560 02602821 */ addu $a1, $s3, $zero -/* 45964 8006A564 00408821 */ addu $s1, $v0, $zero -/* 45968 8006A568 16200007 */ bnez $s1, .L8006A588 -/* 4596C 8006A56C 00000000 */ nop -/* 45970 8006A570 24110004 */ addiu $s1, $zero, 4 -.L8006A574: -/* 45974 8006A574 24020004 */ addiu $v0, $zero, 4 -/* 45978 8006A578 16220003 */ bne $s1, $v0, .L8006A588 -/* 4597C 8006A57C 02A01021 */ addu $v0, $s5, $zero -/* 45980 8006A580 0441FFAD */ bgez $v0, .L8006A438 -/* 45984 8006A584 26B5FFFF */ addiu $s5, $s5, -1 -.L8006A588: -/* 45988 8006A588 0C01978C */ jal __osSiRelAccess -/* 4598C 8006A58C 00000000 */ nop -/* 45990 8006A590 02201021 */ addu $v0, $s1, $zero -.L8006A594: -/* 45994 8006A594 8FBF0044 */ lw $ra, 0x44($sp) -/* 45998 8006A598 8FBE0040 */ lw $fp, 0x40($sp) -/* 4599C 8006A59C 8FB7003C */ lw $s7, 0x3c($sp) -/* 459A0 8006A5A0 8FB60038 */ lw $s6, 0x38($sp) -/* 459A4 8006A5A4 8FB50034 */ lw $s5, 0x34($sp) -/* 459A8 8006A5A8 8FB40030 */ lw $s4, 0x30($sp) -/* 459AC 8006A5AC 8FB3002C */ lw $s3, 0x2c($sp) -/* 459B0 8006A5B0 8FB20028 */ lw $s2, 0x28($sp) -/* 459B4 8006A5B4 8FB10024 */ lw $s1, 0x24($sp) -/* 459B8 8006A5B8 8FB00020 */ lw $s0, 0x20($sp) -/* 459BC 8006A5BC 03E00008 */ jr $ra -/* 459C0 8006A5C0 27BD0048 */ addiu $sp, $sp, 0x48 -/* 459C4 8006A5C4 00000000 */ nop -/* 459C8 8006A5C8 00000000 */ nop -/* 459CC 8006A5CC 00000000 */ nop -/* 459D0 8006A5D0 00000000 */ nop -/* 459D4 8006A5D4 00000000 */ nop -/* 459D8 8006A5D8 00000000 */ nop -/* 459DC 8006A5DC 00000000 */ nop -/* 459E0 8006A5E0 00000000 */ nop -/* 459E4 8006A5E4 00000000 */ nop -/* 459E8 8006A5E8 00000000 */ nop -/* 459EC 8006A5EC 00000000 */ nop -/* 459F0 8006A5F0 00000000 */ nop -/* 459F4 8006A5F4 00000000 */ nop -/* 459F8 8006A5F8 00000000 */ nop -/* 459FC 8006A5FC 00000000 */ nop -/* 45A00 8006A600 00000000 */ nop -/* 45A04 8006A604 00000000 */ nop -/* 45A08 8006A608 00000000 */ nop -/* 45A0C 8006A60C 00000000 */ nop -/* 45A10 8006A610 00000000 */ nop -/* 45A14 8006A614 00000000 */ nop -/* 45A18 8006A618 00000000 */ nop -/* 45A1C 8006A61C 00000000 */ nop -/* 45A20 8006A620 00000000 */ nop -/* 45A24 8006A624 00000000 */ nop -/* 45A28 8006A628 00000000 */ nop -/* 45A2C 8006A62C 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/os/47c60_len_f0/osContAddressCrc.s b/ver/us/asm/nonmatchings/os/47c60_len_f0/osContAddressCrc.s deleted file mode 100644 index 52cdd8c367..0000000000 --- a/ver/us/asm/nonmatchings/os/47c60_len_f0/osContAddressCrc.s +++ /dev/null @@ -1,36 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel __osContAddressCrc -/* 47C60 8006C860 00001821 */ addu $v1, $zero, $zero -/* 47C64 8006C864 24050400 */ addiu $a1, $zero, 0x400 -/* 47C68 8006C868 3084FFFF */ andi $a0, $a0, 0xffff -/* 47C6C 8006C86C 00851024 */ and $v0, $a0, $a1 -.L8006C870: -/* 47C70 8006C870 10400006 */ beqz $v0, .L8006C88C -/* 47C74 8006C874 00031840 */ sll $v1, $v1, 1 -/* 47C78 8006C878 30620020 */ andi $v0, $v1, 0x20 -/* 47C7C 8006C87C 50400006 */ beql $v0, $zero, .L8006C898 -/* 47C80 8006C880 24630001 */ addiu $v1, $v1, 1 -/* 47C84 8006C884 0801B226 */ j .L8006C898 -/* 47C88 8006C888 38630014 */ xori $v1, $v1, 0x14 -.L8006C88C: -/* 47C8C 8006C88C 30620020 */ andi $v0, $v1, 0x20 -/* 47C90 8006C890 54400001 */ bnel $v0, $zero, .L8006C898 -/* 47C94 8006C894 38630015 */ xori $v1, $v1, 0x15 -.L8006C898: -/* 47C98 8006C898 00052842 */ srl $a1, $a1, 1 -/* 47C9C 8006C89C 14A0FFF4 */ bnez $a1, .L8006C870 -/* 47CA0 8006C8A0 00851024 */ and $v0, $a0, $a1 -/* 47CA4 8006C8A4 24050005 */ addiu $a1, $zero, 5 -/* 47CA8 8006C8A8 00031840 */ sll $v1, $v1, 1 -.L8006C8AC: -/* 47CAC 8006C8AC 30620020 */ andi $v0, $v1, 0x20 -/* 47CB0 8006C8B0 54400001 */ bnel $v0, $zero, .L8006C8B8 -/* 47CB4 8006C8B4 38630015 */ xori $v1, $v1, 0x15 -.L8006C8B8: -/* 47CB8 8006C8B8 24A5FFFF */ addiu $a1, $a1, -1 -/* 47CBC 8006C8BC 54A0FFFB */ bnel $a1, $zero, .L8006C8AC -/* 47CC0 8006C8C0 00031840 */ sll $v1, $v1, 1 -/* 47CC4 8006C8C4 03E00008 */ jr $ra -/* 47CC8 8006C8C8 3062001F */ andi $v0, $v1, 0x1f diff --git a/ver/us/asm/nonmatchings/os/4a140_len_70/strcmp.s b/ver/us/asm/nonmatchings/os/4a140_len_70/strcmp.s deleted file mode 100644 index ba9af18d2c..0000000000 --- a/ver/us/asm/nonmatchings/os/4a140_len_70/strcmp.s +++ /dev/null @@ -1,23 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel strcmp -.L8006ED70: -/* 4A170 8006ED70 90860000 */ lbu $a2, ($a0) -/* 4A174 8006ED74 24840001 */ addiu $a0, $a0, 1 -/* 4A178 8006ED78 90A20000 */ lbu $v0, ($a1) -/* 4A17C 8006ED7C 30C300FF */ andi $v1, $a2, 0xff -/* 4A180 8006ED80 304200FF */ andi $v0, $v0, 0xff -/* 4A184 8006ED84 10620003 */ beq $v1, $v0, .L8006ED94 -/* 4A188 8006ED88 24A50001 */ addiu $a1, $a1, 1 -/* 4A18C 8006ED8C 0801BB67 */ j .L8006ED9C -/* 4A190 8006ED90 00621023 */ subu $v0, $v1, $v0 -.L8006ED94: -/* 4A194 8006ED94 14C0FFF6 */ bnez $a2, .L8006ED70 -/* 4A198 8006ED98 00001021 */ addu $v0, $zero, $zero -.L8006ED9C: -/* 4A19C 8006ED9C 03E00008 */ jr $ra -/* 4A1A0 8006EDA0 00000000 */ nop -/* 4A1A4 8006EDA4 00000000 */ nop -/* 4A1A8 8006EDA8 00000000 */ nop -/* 4A1AC 8006EDAC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/os/4a140_len_70/strcpy.s b/ver/us/asm/nonmatchings/os/4a140_len_70/strcpy.s deleted file mode 100644 index 0aa628692f..0000000000 --- a/ver/us/asm/nonmatchings/os/4a140_len_70/strcpy.s +++ /dev/null @@ -1,18 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel strcpy -/* 4A140 8006ED40 90A20000 */ lbu $v0, ($a1) -/* 4A144 8006ED44 10400007 */ beqz $v0, .L8006ED64 -/* 4A148 8006ED48 00801821 */ addu $v1, $a0, $zero -.L8006ED4C: -/* 4A14C 8006ED4C 90A20000 */ lbu $v0, ($a1) -/* 4A150 8006ED50 A0620000 */ sb $v0, ($v1) -/* 4A154 8006ED54 24A50001 */ addiu $a1, $a1, 1 -/* 4A158 8006ED58 90A20000 */ lbu $v0, ($a1) -/* 4A15C 8006ED5C 1440FFFB */ bnez $v0, .L8006ED4C -/* 4A160 8006ED60 24630001 */ addiu $v1, $v1, 1 -.L8006ED64: -/* 4A164 8006ED64 A0600000 */ sb $zero, ($v1) -/* 4A168 8006ED68 03E00008 */ jr $ra -/* 4A16C 8006ED6C 00801021 */ addu $v0, $a0, $zero diff --git a/ver/us/asm/nonmatchings/os/4a1b0_len_40/memset.s b/ver/us/asm/nonmatchings/os/4a1b0_len_40/memset.s deleted file mode 100644 index 75e2ad8fbd..0000000000 --- a/ver/us/asm/nonmatchings/os/4a1b0_len_40/memset.s +++ /dev/null @@ -1,22 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel memset -/* 4A1B0 8006EDB0 27BDFFF8 */ addiu $sp, $sp, -8 -/* 4A1B4 8006EDB4 00801021 */ addu $v0, $a0, $zero -/* 4A1B8 8006EDB8 00403821 */ addu $a3, $v0, $zero -/* 4A1BC 8006EDBC 10C00006 */ beqz $a2, .L8006EDD8 -/* 4A1C0 8006EDC0 24C3FFFF */ addiu $v1, $a2, -1 -/* 4A1C4 8006EDC4 2406FFFF */ addiu $a2, $zero, -1 -.L8006EDC8: -/* 4A1C8 8006EDC8 A0E50000 */ sb $a1, ($a3) -/* 4A1CC 8006EDCC 2463FFFF */ addiu $v1, $v1, -1 -/* 4A1D0 8006EDD0 1466FFFD */ bne $v1, $a2, .L8006EDC8 -/* 4A1D4 8006EDD4 24E70001 */ addiu $a3, $a3, 1 -.L8006EDD8: -/* 4A1D8 8006EDD8 27BD0008 */ addiu $sp, $sp, 8 -/* 4A1DC 8006EDDC 03E00008 */ jr $ra -/* 4A1E0 8006EDE0 00000000 */ nop -/* 4A1E4 8006EDE4 00000000 */ nop -/* 4A1E8 8006EDE8 00000000 */ nop -/* 4A1EC 8006EDEC 00000000 */ nop diff --git a/ver/us/asm/nonmatchings/os/48c00_len_5c0/func_8006D800.s b/ver/us/asm/nonmatchings/os/divdi3/__divdi3.s similarity index 99% rename from ver/us/asm/nonmatchings/os/48c00_len_5c0/func_8006D800.s rename to ver/us/asm/nonmatchings/os/divdi3/__divdi3.s index c8dbb014a9..cbbe876bb6 100644 --- a/ver/us/asm/nonmatchings/os/48c00_len_5c0/func_8006D800.s +++ b/ver/us/asm/nonmatchings/os/divdi3/__divdi3.s @@ -8,7 +8,7 @@ dlabel D_80099E40 .section .text -glabel func_8006D800 +glabel __divdi3 /* 48C00 8006D800 04810008 */ bgez $a0, .L8006D824 /* 48C04 8006D804 0000C02D */ daddu $t8, $zero, $zero /* 48C08 8006D808 2418FFFF */ addiu $t8, $zero, -1 diff --git a/ver/us/asm/nonmatchings/os/45a50_len_3a0/func_8006A650.s b/ver/us/asm/nonmatchings/os/initialize/__createSpeedParam.s similarity index 99% rename from ver/us/asm/nonmatchings/os/45a50_len_3a0/func_8006A650.s rename to ver/us/asm/nonmatchings/os/initialize/__createSpeedParam.s index c151eec1dd..65a06045a8 100644 --- a/ver/us/asm/nonmatchings/os/45a50_len_3a0/func_8006A650.s +++ b/ver/us/asm/nonmatchings/os/initialize/__createSpeedParam.s @@ -1,7 +1,7 @@ .set noat # allow manual use of $at .set noreorder # don't insert nops after branches -glabel func_8006A650 +glabel __createSpeedParam /* 45A50 8006A650 3C05A460 */ lui $a1, 0xa460 /* 45A54 8006A654 34A50014 */ ori $a1, $a1, 0x14 /* 45A58 8006A658 3C06A460 */ lui $a2, 0xa460 diff --git a/ver/us/asm/nonmatchings/os/45a50_len_3a0/__osInitialize_common.s b/ver/us/asm/nonmatchings/os/initialize/__osInitialize_common.s similarity index 99% rename from ver/us/asm/nonmatchings/os/45a50_len_3a0/__osInitialize_common.s rename to ver/us/asm/nonmatchings/os/initialize/__osInitialize_common.s index 014abb9c37..07c07f066a 100644 --- a/ver/us/asm/nonmatchings/os/45a50_len_3a0/__osInitialize_common.s +++ b/ver/us/asm/nonmatchings/os/initialize/__osInitialize_common.s @@ -139,7 +139,7 @@ glabel __osInitialize_common /* 45D18 8006A918 00822021 */ addu $a0, $a0, $v0 /* 45D1C 8006A91C 00862021 */ addu $a0, $a0, $a2 /* 45D20 8006A920 24060000 */ addiu $a2, $zero, 0 -/* 45D24 8006A924 0C01B8C4 */ jal func_8006E310 +/* 45D24 8006A924 0C01B8C4 */ jal __udivdi3 /* 45D28 8006A928 24070004 */ addiu $a3, $zero, 4 /* 45D2C 8006A92C 3C048000 */ lui $a0, %hi(D_8000030C) /* 45D30 8006A930 8C84030C */ lw $a0, %lo(D_8000030C)($a0) diff --git a/ver/us/asm/nonmatchings/os/ldiv/lldiv.s b/ver/us/asm/nonmatchings/os/ldiv/lldiv.s index b0293848d3..9109b4ca06 100644 --- a/ver/us/asm/nonmatchings/os/ldiv/lldiv.s +++ b/ver/us/asm/nonmatchings/os/ldiv/lldiv.s @@ -17,7 +17,7 @@ glabel lldiv /* 48AD4 8006D6D4 02202821 */ addu $a1, $s1, $zero /* 48AD8 8006D6D8 AFBF0034 */ sw $ra, 0x34($sp) /* 48ADC 8006D6DC 02403021 */ addu $a2, $s2, $zero -/* 48AE0 8006D6E0 0C01B600 */ jal func_8006D800 +/* 48AE0 8006D6E0 0C01B600 */ jal __divdi3 /* 48AE4 8006D6E4 02603821 */ addu $a3, $s3, $zero /* 48AE8 8006D6E8 00403021 */ addu $a2, $v0, $zero /* 48AEC 8006D6EC 00603821 */ addu $a3, $v1, $zero diff --git a/ver/us/asm/nonmatchings/os/491c0_len_f80/func_8006DDC0.s b/ver/us/asm/nonmatchings/os/moddi3/__moddi3.s similarity index 99% rename from ver/us/asm/nonmatchings/os/491c0_len_f80/func_8006DDC0.s rename to ver/us/asm/nonmatchings/os/moddi3/__moddi3.s index f0c2d24ed8..785b4398da 100644 --- a/ver/us/asm/nonmatchings/os/491c0_len_f80/func_8006DDC0.s +++ b/ver/us/asm/nonmatchings/os/moddi3/__moddi3.s @@ -8,7 +8,7 @@ dlabel D_80099F40 .section .text -glabel func_8006DDC0 +glabel __moddi3 /* 491C0 8006DDC0 27BDFFE8 */ addiu $sp, $sp, -0x18 /* 491C4 8006DDC4 AFB20010 */ sw $s2, 0x10($sp) /* 491C8 8006DDC8 0000902D */ daddu $s2, $zero, $zero diff --git a/ver/us/asm/nonmatchings/os/43200_len_7c0/__osMotorAccess.s b/ver/us/asm/nonmatchings/os/motor/__osMotorAccess.s similarity index 100% rename from ver/us/asm/nonmatchings/os/43200_len_7c0/__osMotorAccess.s rename to ver/us/asm/nonmatchings/os/motor/__osMotorAccess.s diff --git a/ver/us/asm/nonmatchings/os/43200_len_7c0/osMotorInit.s b/ver/us/asm/nonmatchings/os/motor/osMotorInit.s similarity index 100% rename from ver/us/asm/nonmatchings/os/43200_len_7c0/osMotorInit.s rename to ver/us/asm/nonmatchings/os/motor/osMotorInit.s diff --git a/ver/us/asm/nonmatchings/os/491c0_len_f80/func_8006E310.s b/ver/us/asm/nonmatchings/os/udivdi3/__udivdi3.s similarity index 99% rename from ver/us/asm/nonmatchings/os/491c0_len_f80/func_8006E310.s rename to ver/us/asm/nonmatchings/os/udivdi3/__udivdi3.s index 92f707b622..bed9bdb29d 100644 --- a/ver/us/asm/nonmatchings/os/491c0_len_f80/func_8006E310.s +++ b/ver/us/asm/nonmatchings/os/udivdi3/__udivdi3.s @@ -8,7 +8,7 @@ dlabel D_8009A040 .section .text -glabel func_8006E310 +glabel __udivdi3 /* 49710 8006E310 00E0482D */ daddu $t1, $a3, $zero /* 49714 8006E314 00C0402D */ daddu $t0, $a2, $zero /* 49718 8006E318 150000DF */ bnez $t0, .L8006E698 diff --git a/ver/us/asm/nonmatchings/os/49C70/func_8006E870.s b/ver/us/asm/nonmatchings/os/umoddi3/__umoddi3.s similarity index 99% rename from ver/us/asm/nonmatchings/os/49C70/func_8006E870.s rename to ver/us/asm/nonmatchings/os/umoddi3/__umoddi3.s index 75db86c7f0..80eef1bf1c 100644 --- a/ver/us/asm/nonmatchings/os/49C70/func_8006E870.s +++ b/ver/us/asm/nonmatchings/os/umoddi3/__umoddi3.s @@ -8,7 +8,7 @@ dlabel D_8009A140 .section .text -glabel func_8006E870 +glabel __umoddi3 /* 49C70 8006E870 27BDFFF8 */ addiu $sp, $sp, -8 /* 49C74 8006E874 00E0402D */ daddu $t0, $a3, $zero /* 49C78 8006E878 00C0482D */ daddu $t1, $a2, $zero diff --git a/ver/us/asm/nonmatchings/os/47e90_len_110/osViInit.s b/ver/us/asm/nonmatchings/os/vi/__osViInit.s similarity index 100% rename from ver/us/asm/nonmatchings/os/47e90_len_110/osViInit.s rename to ver/us/asm/nonmatchings/os/vi/__osViInit.s diff --git a/ver/us/asm/nonmatchings/os/47fa0_len_20/osViGetCurrentContext.s b/ver/us/asm/nonmatchings/os/vigetcurrcontext/osViGetCurrentContext.s similarity index 100% rename from ver/us/asm/nonmatchings/os/47fa0_len_20/osViGetCurrentContext.s rename to ver/us/asm/nonmatchings/os/vigetcurrcontext/osViGetCurrentContext.s diff --git a/ver/us/asm/nonmatchings/os/41e70_len_340/osCreateViManager.s b/ver/us/asm/nonmatchings/os/vimgr/osCreateViManager.s similarity index 100% rename from ver/us/asm/nonmatchings/os/41e70_len_340/osCreateViManager.s rename to ver/us/asm/nonmatchings/os/vimgr/osCreateViManager.s diff --git a/ver/us/asm/nonmatchings/os/41e70_len_340/viMgrMain.s b/ver/us/asm/nonmatchings/os/vimgr/viMgrMain.s similarity index 100% rename from ver/us/asm/nonmatchings/os/41e70_len_340/viMgrMain.s rename to ver/us/asm/nonmatchings/os/vimgr/viMgrMain.s diff --git a/ver/us/asm/nonmatchings/os/46c70_len_e00/_Genld.s b/ver/us/asm/nonmatchings/os/xldtob/_Genld.s similarity index 100% rename from ver/us/asm/nonmatchings/os/46c70_len_e00/_Genld.s rename to ver/us/asm/nonmatchings/os/xldtob/_Genld.s diff --git a/ver/us/asm/nonmatchings/os/46c70_len_e00/_Ldtob.s b/ver/us/asm/nonmatchings/os/xldtob/_Ldtob.s similarity index 100% rename from ver/us/asm/nonmatchings/os/46c70_len_e00/_Ldtob.s rename to ver/us/asm/nonmatchings/os/xldtob/_Ldtob.s diff --git a/ver/us/asm/nonmatchings/os/46c70_len_e00/_Ldunscale.s b/ver/us/asm/nonmatchings/os/xldtob/_Ldunscale.s similarity index 100% rename from ver/us/asm/nonmatchings/os/46c70_len_e00/_Ldunscale.s rename to ver/us/asm/nonmatchings/os/xldtob/_Ldunscale.s diff --git a/ver/us/asm/nonmatchings/os/46c70_len_e00/_Litob.s b/ver/us/asm/nonmatchings/os/xlitob/_Litob.s similarity index 98% rename from ver/us/asm/nonmatchings/os/46c70_len_e00/_Litob.s rename to ver/us/asm/nonmatchings/os/xlitob/_Litob.s index 4088978d94..331d2cf69f 100644 --- a/ver/us/asm/nonmatchings/os/46c70_len_e00/_Litob.s +++ b/ver/us/asm/nonmatchings/os/xlitob/_Litob.s @@ -69,7 +69,7 @@ glabel _Litob /* 46E6C 8006BA6C 02802021 */ addu $a0, $s4, $zero /* 46E70 8006BA70 02A02821 */ addu $a1, $s5, $zero /* 46E74 8006BA74 27B00018 */ addiu $s0, $sp, 0x18 -/* 46E78 8006BA78 0C01BA1C */ jal func_8006E870 +/* 46E78 8006BA78 0C01BA1C */ jal __umoddi3 /* 46E7C 8006BA7C 02128021 */ addu $s0, $s0, $s2 /* 46E80 8006BA80 02C31021 */ addu $v0, $s6, $v1 /* 46E84 8006BA84 90420000 */ lbu $v0, ($v0) @@ -78,7 +78,7 @@ glabel _Litob .L8006BA90: /* 46E90 8006BA90 00003021 */ addu $a2, $zero, $zero /* 46E94 8006BA94 02802021 */ addu $a0, $s4, $zero -/* 46E98 8006BA98 0C01B8C4 */ jal func_8006E310 +/* 46E98 8006BA98 0C01B8C4 */ jal __udivdi3 /* 46E9C 8006BA9C 02A02821 */ addu $a1, $s5, $zero /* 46EA0 8006BAA0 AE220000 */ sw $v0, ($s1) /* 46EA4 8006BAA4 AE230004 */ sw $v1, 4($s1) diff --git a/ver/us/asm/nonmatchings/os/46c70_len_e00/bcmp.s b/ver/us/asm/os/bcmp.s similarity index 96% rename from ver/us/asm/nonmatchings/os/46c70_len_e00/bcmp.s rename to ver/us/asm/os/bcmp.s index 25f16cf13c..6d012e7e51 100644 --- a/ver/us/asm/nonmatchings/os/46c70_len_e00/bcmp.s +++ b/ver/us/asm/os/bcmp.s @@ -1,5 +1,11 @@ +.include "macro.inc" + +# assembler directives .set noat # allow manual use of $at .set noreorder # don't insert nops after branches +.set gp=64 # allow use of 64-bit general purpose registers + +.section .text, "ax" glabel bcmp /* 46C70 8006B870 00851026 */ xor $v0, $a0, $a1 diff --git a/ver/us/asm/os/parameters.s b/ver/us/asm/os/parameters.s new file mode 100644 index 0000000000..7fcde66ccb --- /dev/null +++ b/ver/us/asm/os/parameters.s @@ -0,0 +1,33 @@ +.include "macro.inc" + +# assembler directives +.set noat # allow manual use of $at +.set noreorder # don't insert nops after branches +.set gp=64 # allow use of 64-bit general purpose registers + +.section .text, "ax" + +/* 459D0 8006A5D0 00000000 */ nop +/* 459D4 8006A5D4 00000000 */ nop +/* 459D8 8006A5D8 00000000 */ nop +/* 459DC 8006A5DC 00000000 */ nop +/* 459E0 8006A5E0 00000000 */ nop +/* 459E4 8006A5E4 00000000 */ nop +/* 459E8 8006A5E8 00000000 */ nop +/* 459EC 8006A5EC 00000000 */ nop +/* 459F0 8006A5F0 00000000 */ nop +/* 459F4 8006A5F4 00000000 */ nop +/* 459F8 8006A5F8 00000000 */ nop +/* 459FC 8006A5FC 00000000 */ nop +/* 45A00 8006A600 00000000 */ nop +/* 45A04 8006A604 00000000 */ nop +/* 45A08 8006A608 00000000 */ nop +/* 45A0C 8006A60C 00000000 */ nop +/* 45A10 8006A610 00000000 */ nop +/* 45A14 8006A614 00000000 */ nop +/* 45A18 8006A618 00000000 */ nop +/* 45A1C 8006A61C 00000000 */ nop +/* 45A20 8006A620 00000000 */ nop +/* 45A24 8006A624 00000000 */ nop +/* 45A28 8006A628 00000000 */ nop +/* 45A2C 8006A62C 00000000 */ nop diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index e1fe2a61ca..27ae1341bc 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -165,7 +165,7 @@ segments: - [0x3FD70, hasm, os/bzero] - [0x3FE10, c, os/string, gcc_272 -O3] - [0x3FEA0, c, os/xprintf, gcc_272 -O3] - - [0x408EC, c, os/sprintf] # MOVE_ADDU + - [0x408EC, c, os/sprintf, gcc_272 -O3] - [0x40980, c, os/osCreateMesgQueue] - [0x409B0, c, os/osJamMesg, gcc_272 -O3] - [0x40AF0, c, os/osRecvMesg, gcc_272 -O3] @@ -178,8 +178,8 @@ segments: - [0x410C0, c, os/sirawdma, gcc_272 -O3] - [0x41170, c, os/siacs, gcc_272 -O3] - [0x41260, c, os/createthread, gcc_272 -O3] - - [0x41330, c, os/osGetThreadPri] - - [0x41350, c, os/osSetThreadPri] # MOVE_ADDU + - [0x41330, c, os/osGetThreadPri, gcc_272 -O3] + - [0x41350, c, os/osSetThreadPri, gcc_272 -O3] - [0x41420, c, os/startthread, gcc_272 -O3] - [0x41540, c, os/stopthread, gcc_272 -O3] - [0x41600, c, os/thread, gcc_272 -O3] @@ -196,7 +196,7 @@ segments: - [0x41DB0, c, os/vigetcurrframebuf, gcc_272 -O3] - [0x41DF0, c, os/vigetnextframebuf, gcc_272 -O3] - [0x41E30, c, os/vigetmode, gcc_272 -O3] - - [0x41E70, c, os/41e70_len_340] + - [0x41E70, c, os/vimgr] - [0x421B0, c, os/visetevent, gcc_272 -O3] - [0x42210, c, os/visetmode, gcc_272 -O3] - [0x42260, c, os/visetspecial, gcc_272 -O3] @@ -231,9 +231,10 @@ segments: - [0x44AD0, c, os/pfsselectbank, gcc_272 -O3] - [0x44B40, c, os/contpfs, gcc_272 -O3] - [0x455D0, c, os/contramread, gcc_272 -O3] - - [0x457C0, c, os/contramwrite] + - [0x457C0, c, os/contramwrite, gcc_272 -O3] + - [0x459D0, hasm, os/parameters] # Needs actual symbols added - [0x45A30, c, os/afterprenmi, gcc_272 -O3] - - [0x45A50, c, os/45a50_len_3a0] + - [0x45A50, c, os/initialize] - [0x45DF0, hasm, os/exceptasm] - [0x46760, hasm, os/__osDisableInt] - [0x467D0, hasm, os/__osRestoreInt] @@ -244,7 +245,9 @@ segments: - [0x46970, c, os/epirawread, gcc_272 -O3] - [0x46AE0, c, os/epirawwrite, gcc_272 -O3] - [0x46C50, c, os/ai, gcc_272 -O3] - - [0x46C70, c, os/46c70_len_e00] + - [0x46C70, hasm, os/bcmp] + - [0x46D80, c, os/xlitob] + - [0x46FD0, c, os/xldtob] - [0x47A60, hasm, os/__osGetCause] - [0x47A70, hasm, os/__osGetSR] - [0x47A80, hasm, os/__osSetCompare] @@ -258,21 +261,23 @@ segments: - [0x47B30, c, os/sprawdma, gcc_272 -O3] - [0x47BC0, c, os/sirawread, gcc_272 -O3] - [0x47C10, c, os/sirawwrite, gcc_272 -O3] - - [0x47C60, c, os/47c60_len_f0] # MOVE_ADDU + - [0x47C60, c, os/crc, gcc_272 -O3] - [0x47D50, c, os/destroythread, gcc_272 -O3] - [0x47E30, hasm, os/osMapTLBRdb] - - [0x47E90, c, os/47e90_len_110] - - [0x47FA0, c, os/47fa0_len_20] + - [0x47E90, c, os/vi] + - [0x47FA0, c, os/vigetcurrcontext] - [0x47FC0, hasm, os/guNormalize] - [0x48020, c, os/pfschecker, gcc_272 -O3] - [0x48740, c, os/pfsisplug, gcc_272 -O3] - [0x48A20, c, os/ldiv] - [0x48BE0, c, os/osSiDeviceBusy] - - [0x48C00, c, os/48c00_len_5c0] - - [0x491C0, c, os/491c0_len_f80] - - [0x49C70, c, os/49C70] - - [0x4A140, c, os/4a140_len_70] - - [0x4A1B0, c, os/4a1b0_len_40] + - [0x48C00, c, os/divdi3] + - [0x491C0, c, os/moddi3] + - [0x491C0, c, os/udivdi3] + - [0x49C70, c, os/umoddi3] + - [0x4A140, c, os/strcpy, gcc_272 -O1] + - [0x4A170, c, os/strcmp, gcc_272 -O1] + - [0x4A1B0, c, os/memset, gcc_272 -O1] - [0x4A1F0, hasm, os/decode_yay0] - [0x4A2A0, c, os/osFlash] - [0x4AC90, pm_effect_loads, effect_loads] diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index cfdb363adf..f4c19c9de9 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -1067,9 +1067,9 @@ __osPfsRWInode = 0x80069E8C; // type:func rom:0x4528C __osContRamRead = 0x8006A1D0; // type:func rom:0x455D0 osContRamWrite = 0x8006A3C0; // type:func rom:0x457C0 osAfterPreNMI = 0x8006A630; // type:func rom:0x45A30 -func_8006A650 = 0x8006A650; // type:func rom:0x45A50 +__createSpeedParam = 0x8006A650; // type:func rom:0x45A50 __osInitialize_common = 0x8006A708; // type:func rom:0x45B08 -func_8006A9E0 = 0x8006A9E0; // type:func rom:0x45DE0 +__osInitialize_autodetect = 0x8006A9E0; // type:func rom:0x45DE0 func_8006A9F0 = 0x8006A9F0; // type:func rom:0x45DF0 osExceptionPreamble = 0x8006AA00; // type:label rom:0x45E00 func_8006AA34 = 0x8006AA34; // type:func rom:0x45E34 @@ -1107,11 +1107,11 @@ __osSpSetPc = 0x8006C700; // type:func rom:0x47B00 __osSpRawStartDma = 0x8006C730; // type:func rom:0x47B30 __osSiRawReadIo = 0x8006C7C0; // type:func rom:0x47BC0 __osSiRawWriteIo = 0x8006C810; // type:func rom:0x47C10 -osContAddressCrc = 0x8006C860; // type:func rom:0x47C60 +__osContAddressCrc = 0x8006C860; // type:func rom:0x47C60 __osContDataCrc = 0x8006C8CC; // type:func rom:0x47CCC osDestroyThread = 0x8006C950; // type:func rom:0x47D50 osMapTLBRdb = 0x8006CA30; // type:func rom:0x47E30 -osViInit = 0x8006CA90; // type:func rom:0x47E90 +__osViInit = 0x8006CA90; // type:func rom:0x47E90 osViGetCurrentContext = 0x8006CBA0; // type:func rom:0x47FA0 guNormalize = 0x8006CBC0; // type:func rom:0x47FC0 osPfsChecker = 0x8006CC20; // type:func rom:0x48020 @@ -1123,10 +1123,10 @@ osPfsGetInitData = 0x8006D560; // type:func rom:0x48960 ldiv = 0x8006D620; // type:func rom:0x48A20 lldiv = 0x8006D6A4; // type:func rom:0x48AA4 __osSiDeviceBusy = 0x8006D7E0; // type:func rom:0x48BE0 -func_8006D800 = 0x8006D800; // type:func rom:0x48C00 -func_8006DDC0 = 0x8006DDC0; // type:func rom:0x491C0 -func_8006E310 = 0x8006E310; // type:func rom:0x49710 -func_8006E870 = 0x8006E870; // type:func rom:0x49C70 +__divdi3 = 0x8006D800; // type:func rom:0x48C00 +__moddi3 = 0x8006DDC0; // type:func rom:0x491C0 +__udivdi3 = 0x8006E310; // type:func rom:0x49710 +__umoddi3 = 0x8006E870; // type:func rom:0x49C70 strcpy = 0x8006ED40; // type:func rom:0x4A140 strcmp = 0x8006ED70; // type:func rom:0x4A170 memset = 0x8006EDB0; // type:func rom:0x4A1B0