From 4fa13e4132cf8adb2f07bb34927e62e525c8cc79 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sat, 2 Sep 2023 15:34:29 -0400 Subject: [PATCH] Move libultra function declarations to libultra headers (#1196) * Delete unused headers * Move PR and io to ultra64 * move headers to ultra64 * more cleanups * more reorganizing * i think that should be all * format * ifdef guards cleanup * Add IO_READ and IO_WRITE macros for future use * warnings * review Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> * warnings again * warn * ifdef guards * fix merge * fix merge * fix merge * bss * padutils.h * bss * bss * bss * fix merge * bss * bss * bss * fix merge * fixes * fixes * bss * bss * fix merge * fix * fix * fix includepaths * fix paths * bss * fix * ultra64/ -> PR/ * header guards * fix ehader guards * fix * fix++ * format * bss is borken * prevent 2 * :despair: * bss * rename assert to dbg_hungup * fix * a * fix * bss * fix * bss * bss --------- Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> --- include/PR/abi.h | 4 +- include/{io => PR}/controller.h | 69 ++--- include/{ultra64 => PR}/controller_voice.h | 10 +- include/PR/gbi.h | 16 +- include/{ultra64 => PR}/gs2dex.h | 6 +- include/PR/gu.h | 79 ++++-- include/{ultra64 => PR}/hardware.h | 2 + include/PR/mbi.h | 4 +- include/PR/os.h | 27 ++ include/PR/os_ai.h | 12 + include/PR/os_cache.h | 12 + include/PR/os_cont.h | 79 ++++++ .../{ultra64/convert.h => PR/os_convert.h} | 5 +- include/PR/os_exception.h | 21 ++ include/PR/os_flash.h | 23 ++ include/PR/os_host.h | 9 + include/{ => PR}/os_internal.h | 9 +- include/PR/os_internal_error.h | 9 + include/PR/os_internal_reg.h | 24 ++ include/PR/os_internal_si.h | 13 + include/PR/os_libc.h | 15 ++ .../{ultra64/message.h => PR/os_message.h} | 42 +-- include/{ultra64/motor.h => PR/os_motor.h} | 10 +- include/PR/{pfs.h => os_pfs.h} | 16 +- include/{os.h => PR/os_pi.h} | 193 ++++++-------- include/PR/os_reg.h | 9 + include/PR/os_system.h | 10 + include/{ultra64/thread.h => PR/os_thread.h} | 68 +++-- include/PR/os_time.h | 25 ++ include/PR/os_tlb.h | 9 + include/{ultra64/vi.h => PR/os_vi.h} | 37 ++- include/{ultra64 => PR}/os_voice.h | 13 +- include/PR/osint.h | 38 +++ include/PR/piint.h | 20 ++ include/{ultra64 => PR}/r4300.h | 6 +- include/{ultra64 => PR}/rcp.h | 8 +- include/{ultra64 => PR}/rdp.h | 9 +- include/{ultra64 => PR}/rsp.h | 15 +- include/PR/sched.h | 15 +- include/PR/siint.h | 12 + include/{ultra64 => PR}/sptask.h | 10 +- include/{ultra64 => PR}/ucode.h | 4 +- include/PR/ultratypes.h | 26 +- include/PR/viint.h | 73 ++++++ include/{ => PR}/xstdio.h | 9 +- include/audio/load.h | 4 +- include/bstring.h | 4 - include/debug.h | 7 + include/fault.h | 2 +- include/functions.h | 240 ------------------ include/gfx.h | 1 + include/gfxprint.h | 3 +- include/irqmgr.h | 8 +- include/libc/alloca.h | 4 +- include/libc/assert.h | 4 - include/libc/math.h | 10 +- include/libc/stdarg.h | 6 +- include/libc/stdbool.h | 4 +- include/libc/stddef.h | 4 +- include/libc/stdint.h | 4 +- include/libc/stdlib.h | 7 +- include/libc/string.h | 12 + include/macros.h | 2 +- include/os_malloc.h | 6 +- include/osint.h | 26 -- include/padmgr.h | 10 +- include/padutils.h | 14 + include/ramrom.h | 13 - include/rdb.h | 10 - include/regs.h | 2 + include/rmon.h | 4 - include/scheduler.h | 4 +- include/ultra64.h | 32 +-- include/ultra64/viint.h | 37 --- include/ultraerror.h | 6 - include/ultralog.h | 28 -- include/variables.h | 6 +- include/viint.h | 28 -- include/z64.h | 7 +- include/z64actor.h | 1 + include/z64audio.h | 3 +- include/z64bombers_notebook.h | 3 +- include/z64frameadvance.h | 8 +- include/z64game.h | 3 +- include/z64jpeg.h | 2 +- include/z64math.h | 11 + include/z64player.h | 2 +- include/z64rumble.h | 2 +- include/z64save.h | 2 +- spec | 2 +- src/boot_O2/{assert.c => debug.c} | 4 +- src/boot_O2/loadfragment.c | 1 + src/boot_O2/mtxuty-cvt.c | 2 +- src/boot_O2/padutils.c | 2 +- src/boot_O2_g3/fault.c | 1 + src/boot_O2_g3/yaz0.c | 1 - src/code/game.c | 5 +- src/code/padmgr.c | 4 +- src/code/z_actor_dlftbls.c | 1 + src/code/z_bgcheck.c | 1 - src/code/z_camera.c | 1 + src/code/z_demo.c | 3 +- src/code/z_eventmgr.c | 2 + src/code/z_pause.c | 2 + src/code/z_play.c | 5 +- src/code/z_player_lib.c | 1 + src/code/z_room.c | 7 +- src/code/z_vimode.c | 5 +- src/libultra/gu/guS2DInitBg.c | 1 + src/libultra/gu/lookathil.c | 2 - src/libultra/io/contreaddata.c | 4 +- src/libultra/io/motor.c | 4 +- src/libultra/io/osViModeMpalLan1.c | 2 +- src/libultra/io/osViModeNtscHpf1.c | 2 +- src/libultra/io/osViModeNtscLan1.c | 2 +- src/libultra/io/osViModePalLan1.c | 2 +- src/libultra/io/pfschecker.c | 2 +- src/libultra/io/pfsdeletefile.c | 2 +- src/libultra/io/pfsfilestate.c | 2 +- src/libultra/io/pfsfreeblocks.c | 2 +- src/libultra/io/pfsinitpak.c | 2 +- src/libultra/io/pfsisplug.c | 4 +- src/libultra/io/pfsselectbank.c | 2 +- src/libultra/io/vigetcurrframebuf.c | 4 +- src/libultra/io/vimgr.c | 3 +- src/libultra/os/gethwinterrupt.c | 5 +- src/libultra/os/initialize.c | 12 +- src/libultra/os/resetglobalintmask.c | 2 +- src/libultra/os/seteventmesg.c | 3 +- src/libultra/os/setglobalintmask.c | 2 +- src/libultra/os/sethwinterrupt.c | 3 +- src/libultra/os/virtualtophysical.c | 2 +- src/libultra/rmon/sprintf.c | 3 +- src/libultra/rmon/xldtob.c | 1 + src/libultra/rmon/xlitob.c | 1 + src/libultra/rmon/xprintf.c | 3 + src/libultra/voice/voicecheckresult.c | 7 +- src/libultra/voice/voicecheckword.c | 2 +- src/libultra/voice/voicecleardictionary.c | 6 +- src/libultra/voice/voicecontread2.c | 4 +- src/libultra/voice/voicecontread36.c | 4 +- src/libultra/voice/voicecontrolgain.c | 6 +- src/libultra/voice/voicecontwrite20.c | 4 +- src/libultra/voice/voicecontwrite4.c | 4 +- src/libultra/voice/voicegetreaddata.c | 6 +- src/libultra/voice/voicegetstatus.c | 4 +- src/libultra/voice/voiceinit.c | 8 +- src/libultra/voice/voicemaskdictionary.c | 8 +- src/libultra/voice/voicesetadconverter.c | 4 +- src/libultra/voice/voicesetword.c | 6 +- src/libultra/voice/voicestartreaddata.c | 6 +- src/libultra/voice/voicestopread.c | 6 +- .../ovl_Bg_Dblue_Balance/z_bg_dblue_balance.c | 1 - src/overlays/actors/ovl_Boss_02/z_boss_02.c | 1 - src/overlays/actors/ovl_En_Az/z_en_az.c | 1 + .../z_en_horse_game_check.c | 5 +- src/overlays/actors/ovl_En_Kusa/z_en_kusa.c | 1 - .../actors/ovl_player_actor/z_player.c | 1 - .../ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c | 3 +- tools/disasm/files.txt | 4 +- tools/disasm/functions.txt | 6 +- tools/sizes/boot_functions.csv | 6 +- 162 files changed, 1058 insertions(+), 906 deletions(-) rename include/{io => PR}/controller.h (79%) rename include/{ultra64 => PR}/controller_voice.h (92%) rename include/{ultra64 => PR}/gs2dex.h (99%) rename include/{ultra64 => PR}/hardware.h (98%) create mode 100644 include/PR/os.h create mode 100644 include/PR/os_ai.h create mode 100644 include/PR/os_cache.h create mode 100644 include/PR/os_cont.h rename include/{ultra64/convert.h => PR/os_convert.h} (90%) create mode 100644 include/PR/os_exception.h create mode 100644 include/PR/os_flash.h create mode 100644 include/PR/os_host.h rename include/{ => PR}/os_internal.h (80%) create mode 100644 include/PR/os_internal_error.h create mode 100644 include/PR/os_internal_reg.h create mode 100644 include/PR/os_internal_si.h create mode 100644 include/PR/os_libc.h rename include/{ultra64/message.h => PR/os_message.h} (79%) rename include/{ultra64/motor.h => PR/os_motor.h} (68%) rename include/PR/{pfs.h => os_pfs.h} (86%) rename include/{os.h => PR/os_pi.h} (69%) create mode 100644 include/PR/os_reg.h create mode 100644 include/PR/os_system.h rename include/{ultra64/thread.h => PR/os_thread.h} (81%) create mode 100644 include/PR/os_time.h create mode 100644 include/PR/os_tlb.h rename include/{ultra64/vi.h => PR/os_vi.h} (86%) rename include/{ultra64 => PR}/os_voice.h (84%) create mode 100644 include/PR/osint.h create mode 100644 include/PR/piint.h rename include/{ultra64 => PR}/r4300.h (99%) rename include/{ultra64 => PR}/rcp.h (83%) rename include/{ultra64 => PR}/rdp.h (94%) rename include/{ultra64 => PR}/rsp.h (86%) create mode 100644 include/PR/siint.h rename include/{ultra64 => PR}/sptask.h (94%) rename include/{ultra64 => PR}/ucode.h (93%) create mode 100644 include/PR/viint.h rename include/{ => PR}/xstdio.h (74%) delete mode 100644 include/bstring.h create mode 100644 include/debug.h delete mode 100644 include/libc/assert.h create mode 100644 include/libc/string.h delete mode 100644 include/osint.h create mode 100644 include/padutils.h delete mode 100644 include/ramrom.h delete mode 100644 include/rdb.h delete mode 100644 include/rmon.h delete mode 100644 include/ultra64/viint.h delete mode 100644 include/ultraerror.h delete mode 100644 include/ultralog.h delete mode 100644 include/viint.h rename src/boot_O2/{assert.c => debug.c} (67%) diff --git a/include/PR/abi.h b/include/PR/abi.h index 15ae5d9115..7d31130229 100644 --- a/include/PR/abi.h +++ b/include/PR/abi.h @@ -1,5 +1,5 @@ -#ifndef ULTRA64_ABI_H -#define ULTRA64_ABI_H +#ifndef PR_ABI_H +#define PR_ABI_H /* Audio commands: */ /* diff --git a/include/io/controller.h b/include/PR/controller.h similarity index 79% rename from include/io/controller.h rename to include/PR/controller.h index d29c11f1f9..40dc48b8d3 100644 --- a/include/io/controller.h +++ b/include/PR/controller.h @@ -1,14 +1,14 @@ -#ifndef _CONTROLLER_H_ -#define _CONTROLLER_H_ +#ifndef PR_CONTROLLER_H +#define PR_CONTROLLER_H -#include "PR/ultratypes.h" -#include "PR/pfs.h" +#include "ultratypes.h" +#include "os_cont.h" +#include "os_pfs.h" #define CHNL_ERR(format) (((format).rxsize & CHNL_ERR_MASK) >> 4) #define SIAccessQueueSize 2 #define BLOCKSIZE 32 -#define MAXCONTROLLERS 4 #define PFS_ONE_PAGE 8 #define PFS_PAGE_SIZE (BLOCKSIZE*PFS_ONE_PAGE) @@ -104,27 +104,6 @@ #define PFS_ERR_NOPACK 1 -/* controller errors */ -#define CONT_NO_RESPONSE_ERROR 0x8 -#define CONT_OVERRUN_ERROR 0x4 - -/* Controller type */ -#define CONT_ABSOLUTE 0x0001 -#define CONT_RELATIVE 0x0002 -#define CONT_JOYPORT 0x0004 -#define CONT_EEPROM 0x8000 -#define CONT_EEP16K 0x4000 -#define CONT_TYPE_MASK 0x1F07 -#define CONT_TYPE_NORMAL 0x0005 -#define CONT_TYPE_MOUSE 0x0002 -#define CONT_TYPE_VOICE 0x0100 - -/* Controller status */ -#define CONT_CARD_ON 0x01 -#define CONT_CARD_PULL 0x02 -#define CONT_ADDR_CRC_ER 0x04 -#define CONT_EEPROM_BUSY 0x80 - // Accessory detection #define CONT_ADDR_DETECT 0x8000 // Rumble @@ -145,22 +124,6 @@ #define CONT_BLOCK_GB_BANK CONT_BLOCKS(CONT_ADDR_GB_BANK) #define CONT_BLOCK_GB_STATUS CONT_BLOCKS(CONT_ADDR_GB_STATUS) -/* Buttons */ -#define BTN_CRIGHT 0x0001 -#define BTN_CLEFT 0x0002 -#define BTN_CDOWN 0x0004 -#define BTN_CUP 0x0008 -#define BTN_R 0x0010 -#define BTN_L 0x0020 -#define BTN_RESET 0x0080 -#define BTN_DRIGHT 0x0100 -#define BTN_DLEFT 0x0200 -#define BTN_DDOWN 0x0400 -#define BTN_DUP 0x0800 -#define BTN_START 0x1000 -#define BTN_Z 0x2000 -#define BTN_B 0x4000 -#define BTN_A 0x8000 typedef struct { /* 0x00 */ u32 ramarray[15]; @@ -213,6 +176,28 @@ typedef struct { #define READFORMAT(ptr) ((__OSContRamReadFormat*)(ptr)) +s32 __osCheckPackId(OSPfs* pfs, __OSPackId* check); +s32 __osGetId(OSPfs* pfs); +u16 __osSumcalc(u8* ptr, s32 length); +s32 __osIdCheckSum(u16* ptr, u16* checkSum, u16* idSum); +s32 __osRepairPackId(OSPfs* pfs, __OSPackId* badid, __OSPackId* newid); +s32 __osCheckPackId(OSPfs *pfs, __OSPackId *check); +s32 __osCheckId(OSPfs* pfs); +s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank); +s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); +s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, s32 fileSizeInPages, s32* startPage, u8 bank, s32* decleared, s32* finalPage); +s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 initialPage, u8 bank, __OSInodeUnit *finalPage); +s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* buffer); +s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force); +void __osContGetInitData(u8* pattern, OSContStatus* data); +void __osPackRequestData(u8 poll); +void __osPfsRequestData(u8 poll); +void __osPfsGetInitData(u8* pattern, OSContStatus* contData); +u8 __osContAddressCrc(u16 addr); +u8 __osContDataCrc(u8* data); +s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel); +s32 __osContChannelReset(OSMesgQueue* mq, s32 channel); + extern OSPifRam __osContPifRam; // extern UNK_TYPE1 D_8009CF0C; extern u8 __osContLastPoll; diff --git a/include/ultra64/controller_voice.h b/include/PR/controller_voice.h similarity index 92% rename from include/ultra64/controller_voice.h rename to include/PR/controller_voice.h index a5480d8776..022e69c031 100644 --- a/include/ultra64/controller_voice.h +++ b/include/PR/controller_voice.h @@ -1,9 +1,9 @@ -#ifndef CONTROLLER_VOICE_H -#define CONTROLLER_VOICE_H +#ifndef PR_CONTROLLER_VOICE_H +#define PR_CONTROLLER_VOICE_H -#include "PR/ultratypes.h" -#include "ultra64/os_voice.h" -#include "ultra64/message.h" +#include "ultratypes.h" +#include "os_voice.h" +#include "os_message.h" #include "libc/stddef.h" typedef struct { diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 1b57c6a34c..c6fcdc1e22 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -1,7 +1,9 @@ #include "mbi.h" -#ifndef _ULTRA64_GBI_H_ -#define _ULTRA64_GBI_H_ +#ifndef PR_GBI_H +#define PR_GBI_H + +#include "ultratypes.h" /* To enable Fast3DEX grucode support, define F3DEX_GBI. */ @@ -1054,6 +1056,16 @@ typedef struct { unsigned char v[3]; } Tri; +typedef long int Mtx_t[4][4]; +typedef union { + Mtx_t m; + struct { + u16 intPart[4][4]; + u16 fracPart[4][4]; + }; + long long int force_structure_alignment; +} Mtx; // size = 0x40 + /* * Viewport */ diff --git a/include/ultra64/gs2dex.h b/include/PR/gs2dex.h similarity index 99% rename from include/ultra64/gs2dex.h rename to include/PR/gs2dex.h index 1e77f1cd34..55ef952388 100644 --- a/include/ultra64/gs2dex.h +++ b/include/PR/gs2dex.h @@ -1,5 +1,7 @@ -#ifndef GS2DEX_H -#define GS2DEX_H +#ifndef PR_GS2DEX_H +#define PR_GS2DEX_H + +#include "ultratypes.h" #ifdef _LANGUAGE_C_PLUS_PLUS extern "C" { diff --git a/include/PR/gu.h b/include/PR/gu.h index 8bafcf7d3d..51beaf97bc 100644 --- a/include/PR/gu.h +++ b/include/PR/gu.h @@ -1,26 +1,63 @@ -#ifndef _GU_H_ -#define _GU_H_ +#ifndef PR_GU_H +#define PR_GU_H -typedef struct { - /* 0x0 */ unsigned char* base; - /* 0x4 */ int fmt; - /* 0x8 */ int siz; - /* 0xC */ int xsize; - /* 0x10 */ int ysize; - /* 0x14 */ int lsize; - /* 0x18 */ int addr; - /* 0x1C */ int w; - /* 0x20 */ int h; - /* 0x24 */ int s; - /* 0x28 */ int t; -} Image; +#include "ultratypes.h" +#include "gbi.h" -typedef struct { - /* 0x0 */ float col[3]; - /* 0xC */ float pos[3]; - /* 0x18 */ float a1; - /* 0x1C */ float a2; -} PositionalLight; +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif + +#define M_DTOR (3.14159265358979323846/180.0) + +#define FTOFIX32(x) (long)((x) * (float)0x00010000) +#define FIX32TOF(x) ((float)(x) * (1.0f / (float)0x00010000)) +#define FTOFRAC8(x) ((int) MIN(((x) * (128.0f)), 127.0f) & 0xff) + + +void guMtxIdent(Mtx* mtx); +void guMtxIdentF(float mf[4][4]); + +void guOrtho(Mtx* m, f32 l, f32 r, f32 b, f32 t, f32 n, f32 f, f32 scale); +void guOrthoF(float m[4][4], f32 l, f32 r, f32 b, f32 t, f32 n, f32 f, f32 scale); + +void guPerspective(Mtx* m, u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); +void guPerspectiveF(float mf[4][4], u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); + +void guLookAt(Mtx* m, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp); +void guLookAtF(float mf[4][4], f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp); + +void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); +void guLookAtHiliteF(float mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); + +void guRotate(Mtx* m, f32 a, f32 x, f32 y, f32 z); +void guRotateF(float m[4][4], f32 a, f32 x, f32 y, f32 z); + +void guScale(Mtx* mtx, f32 x, f32 y, f32 z); +void guTranslate(Mtx* mtx, f32 x, f32 y, f32 z); + +void guPosition(Mtx* m, f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z); +void guPositionF(float mf[4][4], f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z); + +void guMtxF2L(float mf[4][4], Mtx* m); +void guMtxL2F(float m1[4][4], Mtx* m2); + +void guNormalize(float* x, float* y, float* z); + + +f32 sinf(f32 __x); +f32 cosf(f32 __x); + +s16 sins(u16 x); +s16 coss(u16 x); + +f32 sqrtf(f32 f); +#ifdef __sgi +#pragma intrinsic(sqrtf); +#endif #endif diff --git a/include/ultra64/hardware.h b/include/PR/hardware.h similarity index 98% rename from include/ultra64/hardware.h rename to include/PR/hardware.h index 57d560ab02..3bcf1b7fcf 100644 --- a/include/ultra64/hardware.h +++ b/include/PR/hardware.h @@ -1,6 +1,8 @@ #ifndef _ULTRA64_HARDWARE_H_ #define _ULTRA64_HARDWARE_H_ +// TODO: not real libultra header. Refactor to R4300.h + // Segment Wrapper // Uncached RDRAM #define KSEG1 0xA0000000 // 0xA0000000 - 0xBFFFFFFF Physical memory, uncached, unmapped diff --git a/include/PR/mbi.h b/include/PR/mbi.h index 0577165e78..f72ad9acd3 100644 --- a/include/PR/mbi.h +++ b/include/PR/mbi.h @@ -1,5 +1,5 @@ -#ifndef _MBI_H_ -#define _MBI_H_ +#ifndef PR_MBI_H +#define PR_MBI_H /************************************************************************** * * diff --git a/include/PR/os.h b/include/PR/os.h new file mode 100644 index 0000000000..1b39d79a17 --- /dev/null +++ b/include/PR/os.h @@ -0,0 +1,27 @@ +#ifndef PR_OS_H +#define PR_OS_H + +#include "os_ai.h" +#include "os_cache.h" +#include "os_cont.h" +#include "os_convert.h" +#include "os_exception.h" +#include "os_flash.h" +#include "os_host.h" +#include "os_internal_error.h" +#include "os_internal_reg.h" +#include "os_internal_si.h" +#include "os_internal.h" +#include "os_libc.h" +#include "os_message.h" +#include "os_pfs.h" +#include "os_pi.h" +#include "os_reg.h" +#include "os_system.h" +#include "os_thread.h" +#include "os_time.h" +#include "os_tlb.h" +#include "os_vi.h" +#include "os_voice.h" + +#endif diff --git a/include/PR/os_ai.h b/include/PR/os_ai.h new file mode 100644 index 0000000000..22f50d41e5 --- /dev/null +++ b/include/PR/os_ai.h @@ -0,0 +1,12 @@ +#ifndef PR_OS_AI_H +#define PR_OS_AI_H + +#include "ultratypes.h" + + +u32 osAiGetLength(void); +s32 osAiSetFrequency(u32 frequency); +s32 osAiSetNextBuffer(void* buf, u32 size); + + +#endif diff --git a/include/PR/os_cache.h b/include/PR/os_cache.h new file mode 100644 index 0000000000..8a920c728a --- /dev/null +++ b/include/PR/os_cache.h @@ -0,0 +1,12 @@ +#ifndef PR_OS_CACHE_H +#define PR_OS_CACHE_H + +#include "ultratypes.h" +#include "libc/stddef.h" + +void osInvalDCache(void* vaddr, size_t nbytes); +void osInvalICache(void* vaddr, size_t nbytes); +void osWritebackDCache(void* vaddr, s32 nbytes); +void osWritebackDCacheAll(void); + +#endif diff --git a/include/PR/os_cont.h b/include/PR/os_cont.h new file mode 100644 index 0000000000..6a63b89019 --- /dev/null +++ b/include/PR/os_cont.h @@ -0,0 +1,79 @@ +#ifndef PR_OS_CONT_H +#define PR_OS_CONT_H + +#include "ultratypes.h" +#include "os_message.h" + + +typedef struct { + /* 0x0 */ u16 type; + /* 0x2 */ u8 status; + /* 0x3 */ u8 errno; +} OSContStatus; // size = 0x4 + +typedef struct { + /* 0x0 */ u16 button; + /* 0x2 */ s8 stick_x; + /* 0x3 */ s8 stick_y; + /* 0x4 */ u8 errno; +} OSContPad; // size = 0x6 + +#define MAXCONTROLLERS 4 + +/* controller errors */ +#define CONT_NO_RESPONSE_ERROR 0x8 +#define CONT_OVERRUN_ERROR 0x4 + +/* Controller type */ +#define CONT_ABSOLUTE 0x0001 +#define CONT_RELATIVE 0x0002 +#define CONT_JOYPORT 0x0004 +#define CONT_EEPROM 0x8000 +#define CONT_EEP16K 0x4000 +#define CONT_TYPE_MASK 0x1F07 +#define CONT_TYPE_NORMAL 0x0005 +#define CONT_TYPE_MOUSE 0x0002 +#define CONT_TYPE_VOICE 0x0100 + +/* Controller status */ +#define CONT_CARD_ON 0x01 +#define CONT_CARD_PULL 0x02 +#define CONT_ADDR_CRC_ER 0x04 +#define CONT_EEPROM_BUSY 0x80 + +// TODO: use real libultra button defines instead of this +/* Buttons */ +#define BTN_CRIGHT 0x0001 +#define BTN_CLEFT 0x0002 +#define BTN_CDOWN 0x0004 +#define BTN_CUP 0x0008 +#define BTN_R 0x0010 +#define BTN_L 0x0020 +#define BTN_RESET 0x0080 +#define BTN_DRIGHT 0x0100 +#define BTN_DLEFT 0x0200 +#define BTN_DDOWN 0x0400 +#define BTN_DUP 0x0800 +#define BTN_START 0x1000 +#define BTN_Z 0x2000 +#define BTN_B 0x4000 +#define BTN_A 0x8000 + +#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */ +#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */ +#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */ +#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */ +#define CONT_ERR_NOT_READY 12 +#define CONT_ERR_VOICE_MEMORY 13 +#define CONT_ERR_VOICE_WORD 14 +#define CONT_ERR_VOICE_NO_RESPONSE 15 + + +s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data); +s32 osContStartQuery(OSMesgQueue* mq); +s32 osContStartReadData(OSMesgQueue* mq); +s32 osContSetCh(u8 ch); +void osContGetQuery(OSContStatus* data); +void osContGetReadData(OSContPad* data); + +#endif diff --git a/include/ultra64/convert.h b/include/PR/os_convert.h similarity index 90% rename from include/ultra64/convert.h rename to include/PR/os_convert.h index 68e91a85ad..468d77f9aa 100644 --- a/include/ultra64/convert.h +++ b/include/PR/os_convert.h @@ -1,5 +1,5 @@ -#ifndef ULTRA64_CONVERT_H -#define ULTRA64_CONVERT_H +#ifndef PR_CONVERT_H +#define PR_CONVERT_H #include "libc/stdint.h" @@ -24,6 +24,5 @@ /* Functions */ extern uintptr_t osVirtualToPhysical(void*); -extern void* osPhysicalToVirtual(uintptr_t); #endif diff --git a/include/PR/os_exception.h b/include/PR/os_exception.h new file mode 100644 index 0000000000..b5c2e7ba8a --- /dev/null +++ b/include/PR/os_exception.h @@ -0,0 +1,21 @@ +#ifndef PR_OS_EXCEPTION_H +#define PR_OS_EXCEPTION_H + +#include "ultratypes.h" + + +typedef u32 OSIntMask; +typedef u32 OSHWIntr; + +OSIntMask osGetIntMask(void); +OSIntMask osSetIntMask(OSIntMask im); + + +// Internal +void __osSetHWIntrRoutine(OSHWIntr idx, OSMesgQueue* queue, OSMesg msg); +void __osGetHWIntrRoutine(OSHWIntr idx, OSMesgQueue** outQueue, OSMesg* outMsg); +void __osSetGlobalIntMask(OSHWIntr mask); +void __osResetGlobalIntMask(OSHWIntr mask); + + +#endif diff --git a/include/PR/os_flash.h b/include/PR/os_flash.h new file mode 100644 index 0000000000..36e728c5ae --- /dev/null +++ b/include/PR/os_flash.h @@ -0,0 +1,23 @@ +#ifndef PR_OS_FLASH_H +#define PR_OS_FLASH_H + +#include "ultratypes.h" +#include "os_pi.h" + + +OSPiHandle* osFlashReInit(u8 latency, u8 pulse, u8 pageSize, u8 relDuration, u32 start); +OSPiHandle* osFlashInit(void); +void osFlashReadStatus(u8* flashStatus); +void osFlashReadId(u32* flashType, u32* flashVendor); +void osFlashClearStatus(void); +s32 osFlashAllErase(void); +s32 osFlashSectorErase(u32 pageNum); +s32 osFlashWriteBuffer(OSIoMesg* mb, s32 priority, void* dramAddr, OSMesgQueue* mq); +s32 osFlashWriteArray(u32 pageNum); +s32 osFlashReadArray(OSIoMesg* mb, s32 priority, u32 pageNum, void* dramAddr, u32 pageCount, OSMesgQueue* mq); +void osFlashChange(u32 flashNum); +void osFlashAllEraseThrough(void); +void osFlashSectorEraseThrough(u32 pageNum); +s32 osFlashCheckEraseEnd(void); + +#endif diff --git a/include/PR/os_host.h b/include/PR/os_host.h new file mode 100644 index 0000000000..5d0ad482f8 --- /dev/null +++ b/include/PR/os_host.h @@ -0,0 +1,9 @@ +#ifndef PR_OS_HOST_H +#define PR_OS_HOST_H + +void __osInitialize_common(void); +void __osInitialize_autodetect(void); + +#define osInitialize() __osInitialize_common() + +#endif diff --git a/include/os_internal.h b/include/PR/os_internal.h similarity index 80% rename from include/os_internal.h rename to include/PR/os_internal.h index 2d82b41a9b..eadd0182b8 100644 --- a/include/os_internal.h +++ b/include/PR/os_internal.h @@ -1,5 +1,10 @@ -#ifndef _OS_INTERNAL_H_ -#define _OS_INTERNAL_H_ +#ifndef PR_OS_INTERNAL_H +#define PR_OS_INTERNAL_H + +#include "ultratypes.h" +#include "os_message.h" +#include "os_pi.h" + typedef struct { /* 0x00 */ OSMesgQueue* queue; diff --git a/include/PR/os_internal_error.h b/include/PR/os_internal_error.h new file mode 100644 index 0000000000..db2c8b9817 --- /dev/null +++ b/include/PR/os_internal_error.h @@ -0,0 +1,9 @@ +#ifndef PR_OS_INTERNAL_ERROR_H +#define PR_OS_INTERNAL_ERROR_H + +#include "os_thread.h" + + +OSThread* __osGetCurrFaultedThread(void); + +#endif diff --git a/include/PR/os_internal_reg.h b/include/PR/os_internal_reg.h new file mode 100644 index 0000000000..7536920170 --- /dev/null +++ b/include/PR/os_internal_reg.h @@ -0,0 +1,24 @@ +#ifndef PR_OS_INTERNAL_REG +#define PR_OS_INTERNAL_REG + +#include "ultratypes.h" +#include "os_exception.h" + + +u32 __osGetCause(void); +void __osSetCause(u32); +u32 __osGetCompare(void); +void __osSetCompare(u32 value); +u32 __osGetConfig(void); +void __osSetConfig(u32); +u32 __osGetSR(void); +void __osSetSR(u32 value); +OSIntMask __osDisableInt(void); +void __osRestoreInt(OSIntMask im); +u32 __osGetWatchLo(void); +void __osSetWatchLo(u32 value); + +u32 __osSetFpcCsr(u32 value); +u32 __osGetFpcCsr(void); + +#endif diff --git a/include/PR/os_internal_si.h b/include/PR/os_internal_si.h new file mode 100644 index 0000000000..e1d88accac --- /dev/null +++ b/include/PR/os_internal_si.h @@ -0,0 +1,13 @@ +#ifndef PR_OS_INTERNAL_SI_H +#define PR_OS_INTERNAL_SI_H + +#include "ultratypes.h" +#include "libc/stdint.h" + + +s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data); +s32 __osSiRawReadIo(uintptr_t devAddr, u32* data); +s32 __osSiRawStartDma(s32 direction, void* dramAddr); + + +#endif diff --git a/include/PR/os_libc.h b/include/PR/os_libc.h new file mode 100644 index 0000000000..755f24692c --- /dev/null +++ b/include/PR/os_libc.h @@ -0,0 +1,15 @@ +#ifndef PR_OS_LIBC_H +#define PR_OS_LIBC_H + +#include "libc/stdarg.h" + + +void bcopy(void* __src, void* __dest, int __n); +int bcmp(void* __s1, void* __s2, int __n); +void bzero(void* begin, int length); + +s32 vsprintf(char* dst, char* fmt, va_list args); +int sprintf(char* dst, const char* fmt, ...); +void osSyncPrintf(const char* fmt, ...); + +#endif diff --git a/include/ultra64/message.h b/include/PR/os_message.h similarity index 79% rename from include/ultra64/message.h rename to include/PR/os_message.h index de0c39b83a..bb577f57b5 100644 --- a/include/ultra64/message.h +++ b/include/PR/os_message.h @@ -1,7 +1,19 @@ -#ifndef ULTRA64_MESSAGE_H -#define ULTRA64_MESSAGE_H +#ifndef PR_OS_MESSAGE_H +#define PR_OS_MESSAGE_H -#include "ultra64/thread.h" +#include "os_thread.h" + +typedef void* OSMesg; +typedef u32 OSEvent; + +typedef struct OSMesgQueue { + /* 0x00 */ OSThread* mtQueue; + /* 0x04 */ OSThread* fullQueue; + /* 0x08 */ s32 validCount; + /* 0x0C */ s32 first; + /* 0x10 */ s32 msgCount; + /* 0x14 */ OSMesg* msg; +} OSMesgQueue; // size = 0x18 #define OS_NUM_EVENTS 15 @@ -30,24 +42,20 @@ #define OS_EVENT_RDB_FLUSH_PROF 21 #define OS_EVENT_RDB_ACK_PROF 22 -typedef void* OSMesg; -typedef u32 OSEvent; - #define OS_MESG_NOBLOCK 0 #define OS_MESG_BLOCK 1 -typedef struct OSMesgQueue { - /* 0x00 */ OSThread* mtQueue; - /* 0x04 */ OSThread* fullQueue; - /* 0x08 */ s32 validCount; - /* 0x0C */ s32 first; - /* 0x10 */ s32 msgCount; - /* 0x14 */ OSMesg* msg; -} OSMesgQueue; // size = 0x18 +#define MQ_GET_COUNT(mq) ((mq)->validCount) -#define MQ_COUNT(mq) ((mq)->validCount) +#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0) +#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount) + +void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msq, s32 count); +s32 osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flags); +s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); +s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags); + +void osSetEventMesg(OSEvent e, OSMesgQueue* mq, OSMesg m); -#define MQ_IS_EMPTY(mq) (MQ_COUNT(mq) == 0) -#define MQ_IS_FULL(mq) (MQ_COUNT(mq) >= (mq)->msgCount) #endif diff --git a/include/ultra64/motor.h b/include/PR/os_motor.h similarity index 68% rename from include/ultra64/motor.h rename to include/PR/os_motor.h index ed969b3de4..3787685881 100644 --- a/include/ultra64/motor.h +++ b/include/PR/os_motor.h @@ -1,9 +1,9 @@ -#ifndef ULTRA64_MOTOR_H -#define ULTRA64_MOTOR_H +#ifndef PR_OS_MOTOR_H +#define PR_OS_MOTOR_H -#include "PR/ultratypes.h" -#include "PR/pfs.h" -#include "ultra64/message.h" +#include "ultratypes.h" +#include "os_pfs.h" +#include "os_message.h" #define MOTOR_START 1 #define MOTOR_STOP 0 diff --git a/include/PR/pfs.h b/include/PR/os_pfs.h similarity index 86% rename from include/PR/pfs.h rename to include/PR/os_pfs.h index 596fafbfee..4ce1acd52c 100644 --- a/include/PR/pfs.h +++ b/include/PR/os_pfs.h @@ -1,5 +1,5 @@ -#ifndef _ULTRA64_PFS_H_ -#define _ULTRA64_PFS_H_ +#ifndef PR_OS_PFS_H +#define PR_OS_PFS_H #include "os.h" @@ -134,8 +134,16 @@ typedef struct { /* 0x101 */ u8 map[PFS_INODE_DIST_MAP]; } __OSInodeCache; // size = 0x202 -s32 __osCheckPackId(OSPfs* pfs, __OSPackId* check); -s32 __osGetId(OSPfs* pfs); + +s32 osPfsInitPak(OSMesgQueue* queue, OSPfs* pfs, s32 channel); s32 osPfsChecker(OSPfs* pfs); +s32 osPfsAllocateFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32 fileSize, s32* fileNo); +s32 osPfsFindFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32* fileNo); +s32 osPfsDeleteFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName); +s32 osPfsReadWriteFile(OSPfs* pfs, s32 fileNo, u8 flag, s32 offset, s32 size, u8* data); +s32 osPfsFileState(OSPfs* pfs, s32 fileNo, OSPfsState* state); +s32 osPfsIsPlug(OSMesgQueue* mq, u8* pattern); +s32 osPfsFreeBlocks(OSPfs* pfs, s32* leftoverBytes); + #endif diff --git a/include/os.h b/include/PR/os_pi.h similarity index 69% rename from include/os.h rename to include/PR/os_pi.h index 47fed80a09..2e67ca8409 100644 --- a/include/os.h +++ b/include/PR/os_pi.h @@ -1,10 +1,76 @@ -#ifndef _OS_H_ -#define _OS_H_ +#ifndef PR_OS_PI_H +#define PR_OS_PI_H +#include "ultratypes.h" +#include "os_message.h" +#include "libc/stddef.h" #include "libc/stdint.h" -#include "libc/stdlib.h" -#include "ultra64/thread.h" -#include "ultra64/message.h" + + +typedef struct { + /* 0x00 */ u32 errStatus; + /* 0x04 */ void* dramAddr; + /* 0x08 */ void* C2Addr; + /* 0x0C */ u32 sectorSize; + /* 0x10 */ u32 C1ErrNum; + /* 0x14 */ u32 C1ErrSector[4]; +} __OSBlockInfo; // size = 0x24 + +typedef struct { + /* 0x00 */ u32 cmdType; + /* 0x04 */ u16 transferMode; + /* 0x06 */ u16 blockNum; + /* 0x08 */ s32 sectorNum; + /* 0x0C */ uintptr_t devAddr; + /* 0x10 */ u32 bmCtlShadow; + /* 0x14 */ u32 seqCtlShadow; + /* 0x18 */ __OSBlockInfo block[2]; +} __OSTranxInfo; // size = 0x60 + +typedef struct OSPiHandle { + /* 0x00 */ struct OSPiHandle* next; + /* 0x04 */ u8 type; + /* 0x05 */ u8 latency; + /* 0x06 */ u8 pageSize; + /* 0x07 */ u8 relDuration; + /* 0x08 */ u8 pulse; + /* 0x09 */ u8 domain; + /* 0x0C */ uintptr_t baseAddress; + /* 0x10 */ u32 speed; + /* 0x14 */ __OSTranxInfo transferInfo; +} OSPiHandle; // size = 0x74 + +typedef struct { + /* 0x0 */ u8 type; + /* 0x4 */ uintptr_t address; +} OSPiInfo; // size = 0x8 + +typedef struct { + /* 0x0 */ u16 type; + /* 0x2 */ u8 pri; + /* 0x3 */ u8 status; + /* 0x4 */ OSMesgQueue* retQueue; +} OSIoMesgHdr; // size = 0x8 + +typedef struct { + /* 0x00 */ OSIoMesgHdr hdr; + /* 0x08 */ void* dramAddr; + /* 0x0C */ uintptr_t devAddr; + /* 0x10 */ size_t size; + /* 0x14 */ OSPiHandle* piHandle; +} OSIoMesg; // size = 0x88 + +typedef struct { + /* 0x00 */ s32 active; // u32 maybe? need to check + /* 0x04 */ OSThread* thread; + /* 0x08 */ OSMesgQueue* cmdQueue; + /* 0x0C */ OSMesgQueue* evtQueue; + /* 0x10 */ OSMesgQueue* acsQueue; + /* 0x14 */ s32 (*piDmaCallback)(s32, uintptr_t, void*, size_t); + /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, uintptr_t, void*, size_t); +} OSDevMgr; // size = 0x1C + + #define OS_READ 0 #define OS_WRITE 1 @@ -28,118 +94,13 @@ #define OS_MESG_PRI_HIGH 1 -typedef u32 OSIntMask; +void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt); -typedef u32 OSPageMask; +OSPiHandle* osCartRomInit(void); -typedef struct { - /* 0x00 */ u32 errStatus; - /* 0x04 */ void* dramAddr; - /* 0x08 */ void* C2Addr; - /* 0x0C */ u32 sectorSize; - /* 0x10 */ u32 C1ErrNum; - /* 0x14 */ u32 C1ErrSector[4]; -} __OSBlockInfo; // size = 0x24 - - -typedef struct { - /* 0x00 */ u32 cmdType; - /* 0x04 */ u16 transferMode; - /* 0x06 */ u16 blockNum; - /* 0x08 */ s32 sectorNum; - /* 0x0C */ uintptr_t devAddr; - /* 0x10 */ u32 bmCtlShadow; - /* 0x14 */ u32 seqCtlShadow; - /* 0x18 */ __OSBlockInfo block[2]; -} __OSTranxInfo; // size = 0x60 - - -typedef struct OSPiHandle { - /* 0x00 */ struct OSPiHandle* next; - /* 0x04 */ u8 type; - /* 0x05 */ u8 latency; - /* 0x06 */ u8 pageSize; - /* 0x07 */ u8 relDuration; - /* 0x08 */ u8 pulse; - /* 0x09 */ u8 domain; - /* 0x0C */ uintptr_t baseAddress; - /* 0x10 */ u32 speed; - /* 0x14 */ __OSTranxInfo transferInfo; -} OSPiHandle; // size = 0x74 - - -typedef struct { - /* 0x0 */ u8 type; - /* 0x4 */ uintptr_t address; -} OSPiInfo; // size = 0x8 - - -typedef struct { - /* 0x0 */ u16 type; - /* 0x2 */ u8 pri; - /* 0x3 */ u8 status; - /* 0x4 */ OSMesgQueue* retQueue; -} OSIoMesgHdr; // size = 0x8 - - -typedef struct { - /* 0x00 */ OSIoMesgHdr hdr; - /* 0x08 */ void* dramAddr; - /* 0x0C */ uintptr_t devAddr; - /* 0x10 */ size_t size; - /* 0x14 */ OSPiHandle* piHandle; -} OSIoMesg; // size = 0x88 - - -typedef struct { - /* 0x00 */ s32 active; // u32 maybe? need to check - /* 0x04 */ OSThread* thread; - /* 0x08 */ OSMesgQueue* cmdQueue; - /* 0x0C */ OSMesgQueue* evtQueue; - /* 0x10 */ OSMesgQueue* acsQueue; - /* 0x14 */ s32 (*piDmaCallback)(s32, uintptr_t, void*, size_t); - /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, uintptr_t, void*, size_t); -} OSDevMgr; // size = 0x1C - -typedef u64 OSTime; - -typedef struct OSTimer_s { - /* 0x00 */ struct OSTimer_s* next; - /* 0x04 */ struct OSTimer_s* prev; - /* 0x08 */ OSTime interval; - /* 0x10 */ OSTime value; - /* 0x18 */ OSMesgQueue* mq; - /* 0x1C */ OSMesg msg; -} OSTimer; // size = 0x20 - -typedef struct { - /* 0x0 */ u16 type; - /* 0x2 */ u8 status; - /* 0x3 */ u8 errno; -} OSContStatus; // size = 0x4 - - -typedef struct { - /* 0x0 */ u16 button; - /* 0x2 */ s8 stick_x; - /* 0x3 */ s8 stick_y; - /* 0x4 */ u8 errno; -} OSContPad; // size = 0x6 - - -typedef struct { - /* 0x00 */ void* address; - /* 0x04 */ u8 databuffer[32]; - /* 0x24 */ u8 addressCrc; - /* 0x25 */ u8 dataCrc; - /* 0x26 */ u8 errno; -} OSContRamIo; // size = 0x28 - -typedef struct { - /* 0x0 */ u16* histo_base; - /* 0x4 */ u32 histo_size; - /* 0x8 */ u32* text_start; - /* 0xC */ u32* text_end; -} OSProf; // size = 0x10 +s32 osEPiWriteIo(OSPiHandle* handle, uintptr_t devAddr, u32 data); +s32 osEPiReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); +s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction); +s32 osEPiLinkHandle(OSPiHandle* handle); #endif diff --git a/include/PR/os_reg.h b/include/PR/os_reg.h new file mode 100644 index 0000000000..043c7ce9f7 --- /dev/null +++ b/include/PR/os_reg.h @@ -0,0 +1,9 @@ +#ifndef PR_OS_REG_H +#define PR_OS_REG_H + +#include "ultratypes.h" + + +u32 osGetCount(void); + +#endif diff --git a/include/PR/os_system.h b/include/PR/os_system.h new file mode 100644 index 0000000000..21f06f1642 --- /dev/null +++ b/include/PR/os_system.h @@ -0,0 +1,10 @@ +#ifndef PR_OS_SYSTEM_H +#define PR_OS_SYSTEM_H + +#include "ultratypes.h" + + +u32 osGetMemSize(void); +s32 osAfterPreNMI(void); + +#endif diff --git a/include/ultra64/thread.h b/include/PR/os_thread.h similarity index 81% rename from include/ultra64/thread.h rename to include/PR/os_thread.h index 4adf025e1e..b885200879 100644 --- a/include/ultra64/thread.h +++ b/include/PR/os_thread.h @@ -1,31 +1,7 @@ -#ifndef _ULTRA64_THREAD_H_ -#define _ULTRA64_THREAD_H_ +#ifndef PR_OS_THREAD_H +#define PR_OS_THREAD_H -#include "PR/ultratypes.h" - -#define OS_PRIORITY_IDLE 0 -#define OS_PRIORITY_MAIN 10 -#define OS_PRIORITY_GRAPH 11 -#define OS_PRIORITY_AUDIOMGR 12 -#define OS_PRIORITY_PADMGR 14 -#define OS_PRIORITY_SCHED 15 -#define OS_PRIORITY_DMAMGR 16 -#define OS_PRIORITY_IRQMGR 17 -#define OS_PRIORITY_PIMGR 150 -#define OS_PRIORITY_FAULTCLIENT 126 -#define OS_PRIORITY_FAULT 127 -#define OS_PRIORITY_APPMAX 127 -#define OS_PRIORITY_RMONSPIN 200 -#define OS_PRIORITY_RMON 250 -#define OS_PRIORITY_VIMGR 254 -#define OS_PRIORITY_MAX 255 - -#define OS_PRIORITY_THREADTAIL -1 - -#define OS_STATE_STOPPED (1 << 0) -#define OS_STATE_RUNNABLE (1 << 1) -#define OS_STATE_RUNNING (1 << 2) -#define OS_STATE_WAITING (1 << 3) +#include "ultratypes.h" #define OS_FLAG_CPU_BREAK 1 #define OS_FLAG_FAULT 2 @@ -71,4 +47,42 @@ typedef struct OSThread { /* 0x20 */ __OSThreadContext context; } OSThread; // size = 0x1B0 +#define OS_STATE_STOPPED (1 << 0) +#define OS_STATE_RUNNABLE (1 << 1) +#define OS_STATE_RUNNING (1 << 2) +#define OS_STATE_WAITING (1 << 3) + + +#define OS_PRIORITY_IDLE 0 +#define OS_PRIORITY_MAIN 10 +#define OS_PRIORITY_GRAPH 11 +#define OS_PRIORITY_AUDIOMGR 12 +#define OS_PRIORITY_PADMGR 14 +#define OS_PRIORITY_SCHED 15 +#define OS_PRIORITY_DMAMGR 16 +#define OS_PRIORITY_IRQMGR 17 +#define OS_PRIORITY_PIMGR 150 +#define OS_PRIORITY_FAULTCLIENT 126 +#define OS_PRIORITY_FAULT 127 +#define OS_PRIORITY_APPMAX 127 +#define OS_PRIORITY_RMONSPIN 200 +#define OS_PRIORITY_RMON 250 +#define OS_PRIORITY_VIMGR 254 +#define OS_PRIORITY_MAX 255 + +#define OS_PRIORITY_THREADTAIL -1 + + +void osCreateThread(OSThread* thread, OSId id, void* entry, void* arg, void* sp, OSPri p); +void osDestroyThread(OSThread* t); +void osYieldThread(void); +void osStartThread(OSThread* t); +void osStopThread(OSThread* t); +OSId osGetThreadId(OSThread* t); +void osSetThreadPri(OSThread* thread, OSPri p); +OSPri osGetThreadPri(OSThread* t); + +// internal +OSThread* __osGetActiveQueue(void); + #endif diff --git a/include/PR/os_time.h b/include/PR/os_time.h new file mode 100644 index 0000000000..31702c0bb2 --- /dev/null +++ b/include/PR/os_time.h @@ -0,0 +1,25 @@ +#ifndef PR_OS_TIME_H +#define PR_OS_TIME_H + +#include "ultratypes.h" +#include "os_message.h" + + +typedef u64 OSTime; + +typedef struct OSTimer_s { + /* 0x00 */ struct OSTimer_s* next; + /* 0x04 */ struct OSTimer_s* prev; + /* 0x08 */ OSTime interval; + /* 0x10 */ OSTime value; + /* 0x18 */ OSMesgQueue* mq; + /* 0x1C */ OSMesg msg; +} OSTimer; // size = 0x20 + +OSTime osGetTime(void); +void osSetTime(OSTime ticks); +s32 osSetTimer(OSTimer* t, OSTime value, OSTime interval, OSMesgQueue* mq, OSMesg msg); +s32 osStopTimer(OSTimer* t); + + +#endif diff --git a/include/PR/os_tlb.h b/include/PR/os_tlb.h new file mode 100644 index 0000000000..7d0b5a341e --- /dev/null +++ b/include/PR/os_tlb.h @@ -0,0 +1,9 @@ +#ifndef PR_OS_TLB_H +#define PR_OS_TLB_H + +#include "ultratypes.h" + +void osMapTLBRdb(void); +void osUnmapTLBAll(void); + +#endif diff --git a/include/ultra64/vi.h b/include/PR/os_vi.h similarity index 86% rename from include/ultra64/vi.h rename to include/PR/os_vi.h index 7737b58b40..e4098e97e4 100644 --- a/include/ultra64/vi.h +++ b/include/PR/os_vi.h @@ -1,8 +1,8 @@ -#ifndef _ULTRA64_VI_H_ -#define _ULTRA64_VI_H_ +#ifndef PR_OS_VI_H +#define PR_OS_VI_H #include "PR/ultratypes.h" -#include "ultra64/message.h" +#include "PR/os_message.h" /* Special Features */ #define OS_VI_GAMMA_ON (1 << 0) @@ -52,23 +52,6 @@ typedef struct { /* 0x24 */ OSViFieldRegs fldRegs[2]; } OSViMode; // size = 0x4C -typedef struct { - /* 0x0 */ f32 factor; - /* 0x4 */ u16 offset; - /* 0x8 */ u32 scale; -} __OSViScale; // size = 0x0C - -typedef struct { - /* 0x00 */ u16 state; - /* 0x02 */ u16 retraceCount; - /* 0x04 */ void* buffer; - /* 0x08 */ OSViMode* modep; - /* 0x0C */ u32 features; - /* 0x10 */ OSMesgQueue* mq; - /* 0x14 */ OSMesg* msg; - /* 0x18 */ __OSViScale x; - /* 0x24 */ __OSViScale y; -} __OSViContext; // size = 0x30 #define OS_VI_NTSC_LPN1 0 /* NTSC */ #define OS_VI_NTSC_LPF1 1 @@ -135,4 +118,18 @@ typedef struct { #define OS_TV_MPAL 2 #define OS_VI_UNK28 28 + +void* osViGetCurrentFramebuffer(void); +void* osViGetNextFramebuffer(void); +void osViSetXScale(f32 value); +void osViSetYScale(f32 value); +void osViExtendVStart(u32 a0); +void osViSetSpecialFeatures(u32 func); +void osViSetMode(OSViMode* modep); +void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount); +void osViSwapBuffer(void* frameBufPtr); +void osViBlack(u8 active); +void osCreateViManager(OSPri pri); + + #endif diff --git a/include/ultra64/os_voice.h b/include/PR/os_voice.h similarity index 84% rename from include/ultra64/os_voice.h rename to include/PR/os_voice.h index 8452ed45c2..c6317a28c4 100644 --- a/include/ultra64/os_voice.h +++ b/include/PR/os_voice.h @@ -1,8 +1,8 @@ -#ifndef OS_VOICE_H -#define OS_VOICE_H +#ifndef PR_OS_VOICE_H +#define PR_OS_VOICE_H -#include "PR/ultratypes.h" -#include "ultra64/message.h" +#include "ultratypes.h" +#include "os_message.h" typedef enum OsVoiceHandleMode { /* 0 */ VOICE_HANDLE_MODE_0, @@ -29,14 +29,15 @@ typedef struct { /* 0x14 */ u16 distance[5]; // Distance value } OSVoiceData; // size = 0x20 -s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* hd, s32 channel); + +s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* hd, int channel); s32 osVoiceSetWord(OSVoiceHandle* hd, u8* word); s32 osVoiceCheckWord(u8* word); s32 osVoiceStartReadData(OSVoiceHandle* hd); s32 osVoiceStopReadData(OSVoiceHandle* hd); s32 osVoiceGetReadData(OSVoiceHandle* hd, OSVoiceData* result); s32 osVoiceClearDictionary(OSVoiceHandle* hd, u8 numWords); -s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, s32 size); +s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, int size); s32 osVoiceControlGain(OSVoiceHandle* hd, s32 analog, s32 digital); #endif diff --git a/include/PR/osint.h b/include/PR/osint.h new file mode 100644 index 0000000000..c2e1a2b90d --- /dev/null +++ b/include/PR/osint.h @@ -0,0 +1,38 @@ +#ifndef PR_OSINT_H +#define PR_OSINT_H + +#include "ultratypes.h" +#include "os_message.h" +#include "os.h" +#include "os_internal.h" + +typedef struct __OSEventState { + /* 0x0 */ OSMesgQueue* messageQueue; + /* 0x4 */ OSMesg message; +} __OSEventState; // size = 0x8 + +typedef struct __OSThreadTail { + /* 0x0 */ OSThread* next; + /* 0x4 */ OSPri priority; +} __OSThreadTail; // size = 0x8 + +void __osEnqueueAndYield(OSThread** param_1); +void __osDequeueThread(OSThread** queue, OSThread* t); +void __osEnqueueThread(OSThread** param_1, OSThread* param_2); +OSThread* __osPopThread(OSThread** param_1); +void __osDispatchThread(void); +void __osCleanupThread(void); + +void __osSetTimerIntr(OSTime tim); +OSTime __osInsertTimer(OSTimer* t); +void __osTimerInterrupt(void); +u32 __osProbeTLB(void* param_1); +s32 __osSpDeviceBusy(void); + +void __osTimerServicesInit(void); + +extern __osHwInt __osHwIntTable[]; +extern __OSEventState __osEventStateTab[OS_NUM_EVENTS]; + + +#endif diff --git a/include/PR/piint.h b/include/PR/piint.h new file mode 100644 index 0000000000..0ca1f0d2e5 --- /dev/null +++ b/include/PR/piint.h @@ -0,0 +1,20 @@ +#ifndef PR_PIINT_H +#define PR_PIINT_H + +#include "ultratypes.h" +#include "os_pi.h" +#include "libc/stdint.h" + + +void __osDevMgrMain(void* arg); +void __osPiCreateAccessQueue(void); +void __osPiRelAccess(void); +void __osPiGetAccess(void); +s32 __osPiRawStartDma(s32 direction, uintptr_t devAddr, void* dramAddr, size_t size); +s32 __osEPiRawWriteIo(OSPiHandle* handle, uintptr_t devAddr, u32 data); +s32 __osEPiRawReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); +s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, uintptr_t cartAddr, void* dramAddr, size_t size); +OSMesgQueue* osPiGetCmdQueue(void); + + +#endif diff --git a/include/ultra64/r4300.h b/include/PR/r4300.h similarity index 99% rename from include/ultra64/r4300.h rename to include/PR/r4300.h index 30e8a9ea8b..37d7e89460 100644 --- a/include/ultra64/r4300.h +++ b/include/PR/r4300.h @@ -1,8 +1,8 @@ -#ifndef ULTRA64_R4300_H -#define ULTRA64_R4300_H +#ifndef PR_R4300_H +#define PR_R4300_H #ifdef _LANGUAGE_C -#include "PR/ultratypes.h" +#include "ultratypes.h" #define U32(x) ((u32)x) #define C_REG(x) (x) #else diff --git a/include/ultra64/rcp.h b/include/PR/rcp.h similarity index 83% rename from include/ultra64/rcp.h rename to include/PR/rcp.h index 7a336be28c..1c97c64e3f 100644 --- a/include/ultra64/rcp.h +++ b/include/PR/rcp.h @@ -1,5 +1,5 @@ -#ifndef _ULTRA64_RCP_H_ -#define _ULTRA64_RCP_H_ +#ifndef PR_RCP_H +#define PR_RCP_H #define VI_NTSC_CLOCK 48681812 /* Hz = 48.681812 MHz */ #define VI_PAL_CLOCK 49656530 /* Hz = 49.656530 MHz */ @@ -11,7 +11,6 @@ #define DEVICE_TYPE_SRAM 3 /* SRAM */ #define DEVICE_TYPE_INIT 7 /* initial value */ - #define CHNL_ERR_NORESP 0x80 /* Bit 7 (Rx): No response error */ #define CHNL_ERR_OVERRUN 0x40 /* Bit 6 (Rx): Overrun error */ #define CHNL_ERR_FRAME 0x80 /* Bit 7 (Tx): Frame error */ @@ -19,4 +18,7 @@ #define CHNL_ERR_MASK 0xC0 /* Bit 6-7: channel errors */ +#define IO_READ(addr) (*(vu32*)PHYS_TO_K1(addr)) +#define IO_WRITE(addr,data) (*(vu32*)PHYS_TO_K1(addr)=(u32)(data)) + #endif diff --git a/include/ultra64/rdp.h b/include/PR/rdp.h similarity index 94% rename from include/ultra64/rdp.h rename to include/PR/rdp.h index b4b3bb532f..4bd6bc99d4 100644 --- a/include/ultra64/rdp.h +++ b/include/PR/rdp.h @@ -1,5 +1,5 @@ -#ifndef ULTRA64_RDP_H -#define ULTRA64_RDP_H +#ifndef PR_RDP_H +#define PR_RDP_H /* DP Command Registers */ #define DPC_START_REG 0x04100000 @@ -42,4 +42,9 @@ #define DPC_CLR_CMD_CTR (1 << 8) #define DPC_CLR_CLOCK_CTR (1 << 9) + +u32 osDpGetStatus(void); +void osDpSetStatus(u32 data); + + #endif diff --git a/include/ultra64/rsp.h b/include/PR/rsp.h similarity index 86% rename from include/ultra64/rsp.h rename to include/PR/rsp.h index f8ec4ef517..467db831cc 100644 --- a/include/ultra64/rsp.h +++ b/include/PR/rsp.h @@ -1,5 +1,9 @@ -#ifndef _ULTRA64_RSP_H_ -#define _ULTRA64_RSP_H_ +#ifndef PR_RSP_H +#define PR_RSP_H + +#include "ultratypes.h" +#include "libc/stddef.h" + /* SP Status Flags */ #define SP_STATUS_HALT (1 << 0) @@ -44,4 +48,11 @@ #define SP_CLR_SIG7 (1 << 23) #define SP_SET_SIG7 (1 << 24) + +u32 __osSpGetStatus(void); +void __osSpSetStatus(u32 data); +s32 __osSpSetPc(void* pc); +s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, size_t size); + + #endif diff --git a/include/PR/sched.h b/include/PR/sched.h index d0aac1d0e7..7db228a5df 100644 --- a/include/PR/sched.h +++ b/include/PR/sched.h @@ -1,9 +1,16 @@ -#ifndef SCHED_H -#define SCHED_H +#ifndef PR_SCHED_H +#define PR_SCHED_H #include "PR/ultratypes.h" -#include "ultra64/vi.h" -#include "ultra64/sptask.h" +#include "PR/os_vi.h" +#include "PR/sptask.h" + +#define OS_SC_STACKSIZE 0x2000 + +#define OS_SC_RETRACE_MSG 1 +#define OS_SC_DONE_MSG 2 +#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c +#define OS_SC_PRE_NMI_MSG 4 #define OS_SC_NEEDS_RDP 0x0001 #define OS_SC_NEEDS_RSP 0x0002 diff --git a/include/PR/siint.h b/include/PR/siint.h new file mode 100644 index 0000000000..a6d16323e4 --- /dev/null +++ b/include/PR/siint.h @@ -0,0 +1,12 @@ +#ifndef PR_SIINT_H +#define PR_SIINT_H + +#include "ultratypes.h" + + +void __osSiGetAccess(void); +void __osSiRelAccess(void); +s32 __osSiDeviceBusy(void); +void __osSiCreateAccessQueue(void); + +#endif diff --git a/include/ultra64/sptask.h b/include/PR/sptask.h similarity index 94% rename from include/ultra64/sptask.h rename to include/PR/sptask.h index ef4aa4d04a..3ec4bf1bf6 100644 --- a/include/ultra64/sptask.h +++ b/include/PR/sptask.h @@ -1,5 +1,5 @@ -#ifndef _SPTASK_H_ -#define _SPTASK_H_ +#ifndef PR_SPTASK_H +#define PR_SPTASK_H #include "PR/ultratypes.h" #include "libc/stddef.h" @@ -109,4 +109,10 @@ typedef union { typedef u32 OSYieldResult; +void osSpTaskLoad(OSTask* intp); +void osSpTaskStartGo(OSTask* tp); + +void osSpTaskYield(void); +OSYieldResult osSpTaskYielded(OSTask* task); + #endif diff --git a/include/ultra64/ucode.h b/include/PR/ucode.h similarity index 93% rename from include/ultra64/ucode.h rename to include/PR/ucode.h index 8a1d89037e..2314222ba6 100644 --- a/include/ultra64/ucode.h +++ b/include/PR/ucode.h @@ -1,5 +1,5 @@ -#ifndef ULTRA64_UCODE_H -#define ULTRA64_UCODE_H +#ifndef PR_UCODE_H +#define PR_UCODE_H #include "PR/ultratypes.h" diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h index 8b4e1a82ce..530f307555 100644 --- a/include/PR/ultratypes.h +++ b/include/PR/ultratypes.h @@ -1,5 +1,5 @@ -#ifndef _ULTRATYPES_H_ -#define _ULTRATYPES_H_ +#ifndef PR_ULTRATYPES_H +#define PR_ULTRATYPES_H typedef signed char s8; typedef unsigned char u8; @@ -22,27 +22,7 @@ typedef volatile s64 vs64; typedef float f32; typedef double f64; +// TODO: move this somewhere else typedef void* TexturePtr; -typedef long int Mtx_t[4][4]; -typedef union { - Mtx_t m; - struct { - u16 intPart[4][4]; - u16 fracPart[4][4]; - }; - long long int forc_structure_alignment; -} Mtx; // size = 0x40 - -typedef float MtxF_t[4][4]; -typedef union { - MtxF_t mf; - struct { - float xx, yx, zx, wx, - xy, yy, zy, wy, - xz, yz, zz, wz, - xw, yw, zw, ww; - }; -} MtxF; // size = 0x40 - #endif diff --git a/include/PR/viint.h b/include/PR/viint.h new file mode 100644 index 0000000000..29d4fffc69 --- /dev/null +++ b/include/PR/viint.h @@ -0,0 +1,73 @@ +#ifndef PR_VIINT_H +#define PR_VIINT_H + +#include "ultratypes.h" + +#define OS_TV_TYPE_PAL 0 +#define OS_TV_TYPE_NTSC 1 +#define OS_TV_TYPE_MPAL 2 + +#define VI_STATE_MODE_UPDATED (1 << 0) +#define VI_STATE_XSCALE_UPDATED (1 << 1) +#define VI_STATE_YSCALE_UPDATED (1 << 2) +#define VI_STATE_CTRL_UPDATED (1 << 3) // related to control regs changing +#define VI_STATE_BUFFER_UPDATED (1 << 4) // swap buffer +#define VI_STATE_BLACK (1 << 5) // probably related to a black screen +#define VI_STATE_REPEATLINE (1 << 6) // repeat line? +#define VI_STATE_FADE (1 << 7) // fade + +#define VI_CTRL_ANTIALIAS_MODE_3 0x00300 /* Bit [9:8] anti-alias mode */ +#define VI_CTRL_ANTIALIAS_MODE_2 0x00200 /* Bit [9:8] anti-alias mode */ +#define VI_CTRL_ANTIALIAS_MODE_1 0x00100 /* Bit [9:8] anti-alias mode */ + +#define VI_SCALE_MASK 0xFFF +#define VI_2_10_FPART_MASK 0x3FF +#define VI_SUBPIXEL_SH 0x10 + +// For use in initializing OSViMode structures + +#define BURST(hsync_width, color_width, vsync_width, color_start) \ + (((u32)(hsync_width) & 0xFF) | (((u32)(color_width) & 0xFF) << 8) | (((u32)(vsync_width) & 0xF) << 16) | (((u32)(color_start) & 0xFFFF) << 20)) +#define WIDTH(v) (v) +#define VSYNC(v) (v) +#define HSYNC(duration, leap) (((u32)(leap) << 16) | ((u32)(duration) & 0xFFFF)) +#define LEAP(upper, lower) (((u32)(upper) << 16) | ((u32)(lower) & 0xFFFF)) +#define START(start, end) (((u32)(start) << 16) | ((u32)(end) & 0xFFFF)) + +#define FTOFIX(val, i, f) ((u32)((val) * (f32)(1 << (f))) & ((1 << ((i) + (f))) - 1)) + +#define F210(val) FTOFIX(val, 2, 10) +#define SCALE(scaleup, off) (F210((1.0f / (f32)(scaleup))) | (F210((f32)(off)) << 16)) + +#define VCURRENT(v) v +#define ORIGIN(v) v +#define VINTR(v) v +#define HSTART START + + +typedef struct { + /* 0x0 */ f32 factor; + /* 0x4 */ u16 offset; + /* 0x8 */ u32 scale; +} __OSViScale; // size = 0x0C + +typedef struct { + /* 0x00 */ u16 state; + /* 0x02 */ u16 retraceCount; + /* 0x04 */ void* buffer; + /* 0x08 */ OSViMode* modep; + /* 0x0C */ u32 features; + /* 0x10 */ OSMesgQueue* mq; + /* 0x14 */ OSMesg* msg; + /* 0x18 */ __OSViScale x; + /* 0x24 */ __OSViScale y; +} __OSViContext; // size = 0x30 + +void __osViSwapContext(void); +extern __OSViContext* __osViCurr; +extern __OSViContext* __osViNext; +extern u32 __additional_scanline; +__OSViContext* __osViGetCurrentContext(void); +void __osViInit(void); + +#endif diff --git a/include/xstdio.h b/include/PR/xstdio.h similarity index 74% rename from include/xstdio.h rename to include/PR/xstdio.h index 102a25ee4c..9850d88f85 100644 --- a/include/xstdio.h +++ b/include/PR/xstdio.h @@ -1,6 +1,7 @@ -#ifndef _XSTDIO_H_ -#define _XSTDIO_H_ +#ifndef PR_XSTDIO_H +#define PR_XSTDIO_H +#include "ultratypes.h" #include "libc/stdarg.h" typedef struct { @@ -30,4 +31,8 @@ typedef void* (*PrintCallback)(void*, const char*, size_t); #define FLAGS_HASH 8 #define FLAGS_ZERO 16 +s32 _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap); +void _Litob(_Pft* args, u8 type); +void _Ldtob(_Pft* args, u8 type); + #endif diff --git a/include/audio/load.h b/include/audio/load.h index b5bc015949..1e896d744b 100644 --- a/include/audio/load.h +++ b/include/audio/load.h @@ -5,9 +5,9 @@ #include "PR/ultratypes.h" #include "libc/stddef.h" #include "libc/stdint.h" -#include "ultra64/message.h" +#include "PR/os_message.h" #include "unk.h" -#include "os.h" +#include "PR/os.h" struct Sample; diff --git a/include/bstring.h b/include/bstring.h deleted file mode 100644 index e8d6a66cf2..0000000000 --- a/include/bstring.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef _BSTRING_H_ -#define _BSTRING_H_ - -#endif diff --git a/include/debug.h b/include/debug.h new file mode 100644 index 0000000000..96d3d11c79 --- /dev/null +++ b/include/debug.h @@ -0,0 +1,7 @@ +#ifndef DEBUG_H +#define DEBUG_H + +void _dbg_hungup(const char* file, int lineNum); +void Reset(void); + +#endif diff --git a/include/fault.h b/include/fault.h index c93feee254..8affde4ae8 100644 --- a/include/fault.h +++ b/include/fault.h @@ -5,7 +5,7 @@ #include "unk.h" #include "libc/stdarg.h" #include "libc/stdint.h" -#include "io/controller.h" +#include "PR/controller.h" #include "padmgr.h" #include "stack.h" diff --git a/include/functions.h b/include/functions.h index 6c7bc067af..7eb67e3ba3 100644 --- a/include/functions.h +++ b/include/functions.h @@ -41,7 +41,6 @@ void CIC6105_AddRomInfoFaultPage(void); void CIC6105_RemoveRomInfoFaultPage(void); void func_800818F4(void); void __osSyncVPrintf(const char* fmt, ...); -void osSyncPrintf(const char* fmt, ...); void rmonPrintf(const char* fmt, ...); void func_80084940(void); @@ -68,8 +67,6 @@ void PadUtils_UpdateRelXY(Input* input); void MtxConv_F2L(Mtx* mtx, MtxF* mf); void MtxConv_L2F(MtxF* mtx, Mtx* mf); -void __assert(const char* file, u32 lineNum); -// void func_800862B4(void); s32 func_80086620(OSMesgQueue* param_1, PadMgr* param_2, OSContStatus* param_3); u32 Rand_Next(void); @@ -81,9 +78,6 @@ u32 Rand_Next_Variable(u32* rndNum); f32 Rand_ZeroOne_Variable(u32* rndNum); f32 Rand_Centered_Variable(u32* rndNum); -void* proutSprintf(void* dst, const char* fmt, size_t size); -s32 vsprintf(char* dst, char* fmt, va_list args); -s32 sprintf(char* dst, char* fmt, ...); s32 PrintUtils_VPrintf(PrintCallback* pfn, const char* fmt, va_list args); s32 PrintUtils_Printf(PrintCallback* pfn, const char* fmt, ...); void Sleep_Cycles(OSTime time); @@ -91,223 +85,7 @@ void Sleep_Nsec(u32 nsec); void Sleep_Usec(u32 usec); void Sleep_Msec(u32 ms); void Sleep_Sec(u32 sec); -// void __osSetCause(void); -s32 osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flags); -s32 osPfsFreeBlocks(OSPfs* pfs, s32* leftoverBytes); -void osViExtendVStart(u32 a0); -void osStopThread(OSThread* t); -s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags); -OSIntMask osSetIntMask(OSIntMask im); -// OSIntMask osGetIntMask(void); -void guScale(Mtx* mtx, f32 x, f32 y, f32 z); -f32 sinf(f32 __x); -s16 sins(u16 x); -OSTask* _VirtualToPhysicalTask(OSTask* intp); -void osSpTaskLoad(OSTask* intp); -void osSpTaskStartGo(OSTask* tp); -long long __ull_rshift(unsigned long long left, unsigned long long right); -unsigned long long __ull_rem(unsigned long long left, unsigned long long right); -unsigned long long __ull_div(unsigned long long left, unsigned long long right); -long long __ll_lshift(long long left, long long right); -long long __ll_rem(long long left, unsigned long long right); -long long __ll_div(long long left, long long right); -long long __ll_mul(long long left, long long right); -void __ull_divremi(unsigned long long* quotient, unsigned long long* remainder, unsigned long long dividend, unsigned short divisor); -long long __ll_mod(long long left, long long right); -long long __ll_rshift(long long left, long long right); -void __osExceptionPreamble(void); -void __osException(void); -// void send_mesg(void); -// void handle_CpU(void); -void __osEnqueueAndYield(OSThread** param_1); -void __osEnqueueThread(OSThread** param_1, OSThread* param_2); -OSThread* __osPopThread(OSThread** param_1); -// void __osNop(void); -void __osDispatchThread(void); -void __osCleanupThread(void); -void __osDequeueThread(OSThread** queue, OSThread* t); -void osDestroyThread(OSThread* t); -void bzero(void* begin, s32 length); -void __osSiCreateAccessQueue(void); -void __osSiGetAccess(void); -void __osSiRelAccess(void); -s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data); -void __osContGetInitData(u8* pattern, OSContStatus* data); -void __osPackRequestData(u8 poll); -void osCreateThread(OSThread* thread, OSId id, void* entry, void* arg, void* sp, OSPri p); -s32 osContStartReadData(OSMesgQueue* mq); -void osContGetReadData(OSContPad* data); -void __osPackReadData(void); -uintptr_t osVirtualToPhysical(void* virtualAddress); -u32 __osGetSR(void); -void __osSetSR(u32 value); -void osWritebackDCache(void* vaddr, s32 nbytes); -void __createSpeedParam(void); -void osInitialize(void); -void __osInitialize_autodetect(void); -void* osViGetNextFramebuffer(void); -void guPerspectiveF(float mf[4][4], u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); -void guPerspective(Mtx* m, u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); -s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, size_t size); -s32 __osSiRawStartDma(s32 direction, void* dramAddr); -s32 osEPiLinkHandle(OSPiHandle* handle); -void osViBlack(u8 active); -s32 __osSiRawReadIo(uintptr_t devAddr, u32* data); -OSId osGetThreadId(OSThread* t); -void osSpTaskYield(void); -s32 __osPfsGetNextPage(OSPfs* pfs, u8* bank, __OSInode* inode, __OSInodeUnit* page); -s32 osPfsReadWriteFile(OSPfs* pfs, s32 fileNo, u8 flag, s32 offset, s32 size, u8* data); -s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel); -// void __osPfsRequestOneChannel(void); -// void __osPfsGetOneChannelData(void); -void guMtxIdentF(float mf[4][4]); -void osViSetMode(OSViMode* modep); -// void __osGetConfig(void); -// void __osSetConfig(void); -void guLookAtF(float mf[4][4], f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp); -void guLookAt(Mtx* m, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp); -s32 osPfsAllocateFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32 fileSize, s32* fileNo); -s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, s32 fileSizeInPages, s32* startPage, u8 bank, s32* decleared, s32* finalPage); -s32 osStopTimer(OSTimer* t); -u32 __osProbeTLB(void* param_1); -void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt); -void __osPiCreateAccessQueue(void); -void __osPiGetAccess(void); -void __osPiRelAccess(void); -void __osDevMgrMain(void* arg); -// void func_8008C640(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE1 param_7, UNK_TYPE1 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16, UNK_TYPE4 param_17, UNK_TYPE4 param_18); -s32 __osPiRawStartDma(s32 direction, uintptr_t devAddr, void* dramAddr, size_t size); -u16 __osSumcalc(u8* ptr, s32 length); -s32 __osIdCheckSum(u16* ptr, u16* checkSum, u16* idSum); -s32 __osRepairPackId(OSPfs* pfs, __OSPackId* badid, __OSPackId* newid); -// void __osCheckPackId(void); -s32 __osCheckId(OSPfs* pfs); -s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank); -u32 osGetCount(void); -void guMtxL2F(MtxF* m1, Mtx* m2); -u32 osGetMemSize(void); -s32 osPfsFindFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32* fileNo); -void osSetEventMesg(OSEvent e, OSMesgQueue* mq, OSMesg m); -f32 sqrtf(f32 f); -s32 osAfterPreNMI(void); -s32 osContStartQuery(OSMesgQueue* mq); -void osContGetQuery(OSContStatus* data); -void guLookAtHiliteF(float mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); -void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); -s32 _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap); -void _Putfld(_Pft* px, va_list* pap, u8 code, u8* ac); -void osUnmapTLBAll(void); -s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction); -const char* strchr(const char* s, s32 c); -size_t strlen(const char* s); -void* memcpy(void* s1, const void* s2, size_t n); -void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msq, s32 count); -void osInvalICache(void* vaddr, size_t nbytes); -void osInvalDCache(void* vaddr, size_t nbytes); -void __osTimerServicesInit(void); -void __osTimerInterrupt(void); -void __osSetTimerIntr(OSTime tim); -OSTime __osInsertTimer(OSTimer* t); -s32 __osSpDeviceBusy(void); -s32 __osSiDeviceBusy(void); -void guMtxIdent(Mtx* mtx); -s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); -void osSetThreadPri(OSThread* thread, OSPri p); -OSPri osGetThreadPri(OSThread* t); -s32 __osEPiRawReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); -void osViSwapBuffer(void* frameBufPtr); -void guPositionF(float mf[4][4], f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z); -void guPosition(Mtx* m, f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z); -s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, uintptr_t cartAddr, void* dramAddr, size_t size); -OSYieldResult osSpTaskYielded(OSTask* task); -s32 bcmp(void* __s1, void* __s2, size_t __n); -OSTime osGetTime(void); -void guRotateF(float m[4][4], f32 a, f32 x, f32 y, f32 z); -void guRotate(Mtx* m, f32 a, f32 x, f32 y, f32 z); -void __osSetGlobalIntMask(u32 mask); -s32 __osContChannelReset(OSMesgQueue* mq, s32 channel); -s32 osAiSetFrequency(u32 frequency); -s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* buffer); -u8 __osContAddressCrc(u16 addr); -u8 __osContDataCrc(u8* data); -OSThread* __osGetActiveQueue(void); -void guNormalize(float* x, float* y, float* z); -void __osSetCompare(u32 value); -// u32 __osGetCompare(void); -u32 osDpGetStatus(void); -void osDpSetStatus(u32 data); -void bcopy(void* __src, void* __dest, size_t __n); -void __osResetGlobalIntMask(u32 mask); -// void osPfsDeleteFile(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// void __osPfsReleasePages(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -void guOrthoF(float m[4][4], f32 l, f32 r, f32 b, f32 t, f32 n, f32 f, f32 scale); -void guOrtho(Mtx* m, f32 l, f32 r, f32 b, f32 t, f32 n, f32 f, f32 scale); -OSIntMask __osDisableInt(void); -void __osRestoreInt(OSIntMask im); -void __osViInit(void); -void __osViSwapContext(void); -OSMesgQueue* osPiGetCmdQueue(void); -f32 cosf(f32 __x); -s32 osEPiReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); -void osViSetSpecialFeatures(u32 func); -s16 coss(u16 x); -void osSetTime(OSTime ticks); -void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount); -s32 osPfsIsPlug(OSMesgQueue* mq, u8* pattern); -// void __osPfsRequestData(void); -// void __osPfsGetInitData(void); -OSPiHandle* osCartRomInit(void); -// void guS2DInitBg(void); -s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); -s32 osContSetCh(u8 ch); -u32 __osSetFpcCsr(u32 value); -u32 __osGetFpcCsr(void); -// void osPfsFileState(void); -// void osPfsInitPak(void); -// void __osPfsCheckRamArea(void); -// void osPfsChecker(void); -u32 osAiGetLength(void); -s32 osEPiWriteIo(OSPiHandle* handle, uintptr_t devAddr, u32 data); -void osMapTLBRdb(void); -void osYieldThread(void); -void guTranslate(Mtx* mtx, f32 x, f32 y, f32 z); -u32 __osGetCause(void); -s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force); -s32 __osEPiRawWriteIo(OSPiHandle* handle, uintptr_t devAddr, u32 data); -s32 osSetTimer(OSTimer* t, OSTime value, OSTime interval, OSMesgQueue* mq, OSMesg msg); -void _Ldtob(_Pft* args, u8 type); -// void _Ldunscale(void); -void _Genld(_Pft* px, u8 code, u8* p, s16 nsig, s16 xexp); -ldiv_t ldiv(long numer, long denom); -lldiv_t lldiv(long long numer, long long denom); -void _Litob(_Pft* args, u8 type); -s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data); -u32 __osSpGetStatus(void); -void __osSpSetStatus(u32 data); -void osCreateViManager(OSPri pri); -// void viMgrMain(OSDevMgr* iParm1); -__OSViContext* __osViGetCurrentContext(void); -void osWritebackDCacheAll(void); -OSThread* __osGetCurrFaultedThread(void); -void guMtxF2L(float mf[4][4], Mtx* m); -void osStartThread(OSThread* t); -void osViSetYScale(f32 value); -void osViSetXScale(f32 value); -long long __d_to_ll(double d); -long long __f_to_ll(float f); -unsigned long long __d_to_ull(double d); -unsigned long long __f_to_ull(float f); -double __ll_to_d(long long s); -float __ll_to_f(long long s); -double __ull_to_d(unsigned long long u); -float __ull_to_f(unsigned long long u); -u32* osViGetCurrentFramebuffer(void); -s32 __osSpSetPc(void* pc); -void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg); -void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg); -u32 __osGetWatchLo(void); -void __osSetWatchLo(u32 value); f32 fmodf(f32 dividend, f32 divisor); void* __osMemset(void* ptr, s32 val, size_t size); s32 __osStrcmp(const char* str1, const char* str2); @@ -1625,22 +1403,6 @@ void SysFlashrom_WriteDataSync(void* addr, u32 pageNum, u32 pageCount); s32 func_80185F90(u32 arg0); -u32 osFlashGetAddr(u32 pageNum); -OSPiHandle* osFlashReInit(u8 latency, u8 pulse, u8 pageSize, u8 relDuration, u32 start); -void osFlashChange(u32 flashNum); -OSPiHandle* osFlashInit(void); -void osFlashReadStatus(u8* flashStatus); -void osFlashReadId(u32* flashType, u32* flashVendor); -void osFlashClearStatus(void); -s32 osFlashAllErase(void); -void osFlashAllEraseThrough(void); -s32 osFlashCheckEraseEnd(void); -s32 osFlashSectorErase(u32 pageNum); -void osFlashSectorEraseThrough(u32 pageNum); -s32 osFlashWriteBuffer(OSIoMesg* mb, s32 priority, void* dramAddr, OSMesgQueue* mq); -s32 osFlashWriteArray(u32 pageNum); -s32 osFlashReadArray(OSIoMesg* mb, s32 priority, u32 pageNum, void* dramAddr, u32 pageCount, OSMesgQueue* mq); - Acmd* AudioSynth_Update(Acmd* abiCmdStart, s32* numAbiCmds, s16* aiBufStart, s32 numSamplesPerFrame); AudioTask* AudioThread_Update(void); @@ -1661,8 +1423,6 @@ void AudioThread_InitMesgQueues(void); void Audio_InvalDCache(void* buf, size_t size); void Audio_WritebackDCache(void* buf, size_t size); -s32 osAiSetNextBuffer(void* buf, u32 size); - void AudioPlayback_NoteDisable(Note* note); void AudioPlayback_ProcessNotes(void); TunedSample* AudioPlayback_GetInstrumentTunedSample(Instrument* instrument, s32 semitone); diff --git a/include/gfx.h b/include/gfx.h index b9bbb744d2..7902793684 100644 --- a/include/gfx.h +++ b/include/gfx.h @@ -5,6 +5,7 @@ #include "PR/sched.h" #include "thga.h" #include "alignment.h" +#include "unk.h" struct GameState; diff --git a/include/gfxprint.h b/include/gfxprint.h index b652cc1322..6149a5c4a2 100644 --- a/include/gfxprint.h +++ b/include/gfxprint.h @@ -4,7 +4,8 @@ #include "color.h" #include "PR/gbi.h" #include "PR/ultratypes.h" -#include "xstdio.h" +#include "PR/xstdio.h" +#include "unk.h" #define GFXP_UNUSED "\x8E" #define GFXP_UNUSED_CHAR 0x8E diff --git a/include/irqmgr.h b/include/irqmgr.h index ac2c74960c..a19169dc78 100644 --- a/include/irqmgr.h +++ b/include/irqmgr.h @@ -1,14 +1,8 @@ #ifndef IRQMGR_H #define IRQMGR_H -#include "PR/sched.h" -#include "os.h" #include "ultra64.h" - -#define OS_SC_RETRACE_MSG 1 -#define OS_SC_DONE_MSG 2 -#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c -#define OS_SC_PRE_NMI_MSG 4 +#include "PR/sched.h" typedef struct IrqMgrClient { /* 0x0 */ struct IrqMgrClient* next; diff --git a/include/libc/alloca.h b/include/libc/alloca.h index 4e8720f7e8..fa49dd1336 100644 --- a/include/libc/alloca.h +++ b/include/libc/alloca.h @@ -1,5 +1,5 @@ -#ifndef ALLOCA_H -#define ALLOCA_H +#ifndef LIBC_ALLOCA_H +#define LIBC_ALLOCA_H void* alloca(u32); #define alloca __builtin_alloca diff --git a/include/libc/assert.h b/include/libc/assert.h deleted file mode 100644 index 1bc72e3144..0000000000 --- a/include/libc/assert.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef ASSERT_H -#define ASSERT_H - -#endif diff --git a/include/libc/math.h b/include/libc/math.h index 1cdac0fb32..618ab52b54 100644 --- a/include/libc/math.h +++ b/include/libc/math.h @@ -1,5 +1,5 @@ -#ifndef MATH_H -#define MATH_H +#ifndef LIBC_MATH_H +#define LIBC_MATH_H #include "PR/ultratypes.h" @@ -27,8 +27,10 @@ extern f32 __libm_qnan_f; float fabsf(float f); #pragma intrinsic(fabsf) -float sqrtf(float f); -#pragma intrinsic(sqrtf) +#ifdef __GNUC__ +#define fabsf(f) __builtin_fabsf((float)(f)) +#endif + double sqrt(double d); #pragma intrinsic(sqrt) diff --git a/include/libc/stdarg.h b/include/libc/stdarg.h index 77b8b8866c..55f694385a 100644 --- a/include/libc/stdarg.h +++ b/include/libc/stdarg.h @@ -1,7 +1,5 @@ -#ifndef STDARG_H -#define STDARG_H - -#include "ultra64.h" +#ifndef LIBC_STDARG_H +#define LIBC_STDARG_H // When building with GCC, use the official vaarg macros to avoid warnings // and possibly bad codegen. diff --git a/include/libc/stdbool.h b/include/libc/stdbool.h index d441054c1d..52546edb32 100644 --- a/include/libc/stdbool.h +++ b/include/libc/stdbool.h @@ -1,5 +1,5 @@ -#ifndef STDBOOL -#define STDBOOL +#ifndef LIBC_STDBOOL_H +#define LIBC_STDBOOL_H #define __bool_true_false_are_defined 1 diff --git a/include/libc/stddef.h b/include/libc/stddef.h index 4f55e5725e..e867d8e2a7 100644 --- a/include/libc/stddef.h +++ b/include/libc/stddef.h @@ -1,5 +1,5 @@ -#ifndef STDDEF_H -#define STDDEF_H +#ifndef LIBC_STDDEF_H +#define LIBC_STDDEF_H #include "PR/ultratypes.h" diff --git a/include/libc/stdint.h b/include/libc/stdint.h index 20288d40d2..854fd2546b 100644 --- a/include/libc/stdint.h +++ b/include/libc/stdint.h @@ -1,5 +1,5 @@ -#ifndef STDINT_H -#define STDINT_H +#ifndef LIBC_STDINT_H +#define LIBC_STDINT_H #include "PR/ultratypes.h" diff --git a/include/libc/stdlib.h b/include/libc/stdlib.h index 57d352a13c..ec15b4f6c4 100644 --- a/include/libc/stdlib.h +++ b/include/libc/stdlib.h @@ -1,5 +1,5 @@ -#ifndef STDLIB_H -#define STDLIB_H +#ifndef LIBC_STDLIB_H +#define LIBC_STDLIB_H #include "libc/stddef.h" @@ -22,4 +22,7 @@ typedef int ssize_t; typedef long wchar_t; +ldiv_t ldiv(long numer, long denom); +lldiv_t lldiv(long long numer, long long denom); + #endif /* STDLIB_H */ diff --git a/include/libc/string.h b/include/libc/string.h new file mode 100644 index 0000000000..9c6a1cb087 --- /dev/null +++ b/include/libc/string.h @@ -0,0 +1,12 @@ +#ifndef LIBC_STRING_H +#define LIBC_STRING_H + +#include "libc/stddef.h" + + +const char* strchr(const char* s, int c); +size_t strlen(const char* s); +void* memcpy(void* s1, const void* s2, size_t n); + + +#endif diff --git a/include/macros.h b/include/macros.h index b03d01b3ed..ff764f6444 100644 --- a/include/macros.h +++ b/include/macros.h @@ -2,7 +2,7 @@ #define MACROS_H #include "libc/stdint.h" -#include "ultra64/convert.h" +#include "PR/os_convert.h" #include "main.h" #define SCREEN_WIDTH 320 diff --git a/include/os_malloc.h b/include/os_malloc.h index 6f6bbf900a..4106d42e80 100644 --- a/include/os_malloc.h +++ b/include/os_malloc.h @@ -1,8 +1,8 @@ -#ifndef OS_MALLOC -#define OS_MALLOC +#ifndef OS_MALLOC_H +#define OS_MALLOC_H #include "PR/ultratypes.h" -#include "ultra64/message.h" +#include "PR/os_message.h" #include "libc/stddef.h" typedef struct ArenaNode { diff --git a/include/osint.h b/include/osint.h deleted file mode 100644 index fa74a82eb6..0000000000 --- a/include/osint.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _OSINT_H_ -#define _OSINT_H_ - -// TODO should be in libultra/os - -#include "libc/stdarg.h" -#include "os.h" -#include "os_internal.h" -#include "ultraerror.h" -#include "ultralog.h" - -typedef struct { - /* 0x0 */ OSMesgQueue* messageQueue; - /* 0x4 */ OSMesg message; -} __OSEventState; - - -typedef struct { - /* 0x0 */ OSThread* next; - /* 0x4 */ OSPri priority; -} __OSThreadTail; - -extern __osHwInt __osHwIntTable[]; -extern __OSEventState __osEventStateTab[]; - -#endif diff --git a/include/padmgr.h b/include/padmgr.h index 7cb3cc800c..59157dd814 100644 --- a/include/padmgr.h +++ b/include/padmgr.h @@ -2,15 +2,9 @@ #define PADMGR_H #include "libc/stdbool.h" -#include "io/controller.h" +#include "ultra64.h" #include "irqmgr.h" - -typedef struct Input { - /* 0x00 */ OSContPad cur; - /* 0x06 */ OSContPad prev; - /* 0x0C */ OSContPad press; // X/Y store delta from last frame - /* 0x12 */ OSContPad rel; // X/Y store adjusted -} Input; // size = 0x18 +#include "padutils.h" typedef enum { /* 0 */ PADMGR_CONT_NONE, diff --git a/include/padutils.h b/include/padutils.h new file mode 100644 index 0000000000..4531bc010a --- /dev/null +++ b/include/padutils.h @@ -0,0 +1,14 @@ +#ifndef PADUTILS_H +#define PADUTILS_H + +#include "PR/controller.h" + + +typedef struct Input { + /* 0x00 */ OSContPad cur; + /* 0x06 */ OSContPad prev; + /* 0x0C */ OSContPad press; // X/Y store delta from last frame + /* 0x12 */ OSContPad rel; // X/Y store adjusted +} Input; // size = 0x18 + +#endif diff --git a/include/ramrom.h b/include/ramrom.h deleted file mode 100644 index 6671b99311..0000000000 --- a/include/ramrom.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _RAMROM_H_ -#define _RAMROM_H_ - -#include "PR/ultratypes.h" - -typedef struct { - /* 0x0 */ long type; - /* 0x4 */ long length; - /* 0x8 */ long magic; - /* 0xC */ unsigned char userdata[24564]; -} RamRomBuffer; - -#endif diff --git a/include/rdb.h b/include/rdb.h deleted file mode 100644 index 04b3ed5bc5..0000000000 --- a/include/rdb.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _RDB_H_ -#define _RDB_H_ - -typedef struct { - /* 0x0 */ unsigned int type : 2; - /* 0x0 */ unsigned int length : 2; - /* 0x1 */ unsigned char buf[3]; -} rdbPacket; - -#endif diff --git a/include/regs.h b/include/regs.h index bc8bacb1b8..2d113ea48a 100644 --- a/include/regs.h +++ b/include/regs.h @@ -5,6 +5,8 @@ #define REGS_H #include "ultra64.h" +#include "unk.h" + #define REG_GROUPS 29 // number of REG groups, i.e. REG, SREG, OREG, etc. #define REG_PAGES 6 diff --git a/include/rmon.h b/include/rmon.h deleted file mode 100644 index efdd555c69..0000000000 --- a/include/rmon.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef _RMON_H_ -#define _RMON_H_ - -#endif diff --git a/include/scheduler.h b/include/scheduler.h index 3cf588b1f1..1aeae07ecb 100644 --- a/include/scheduler.h +++ b/include/scheduler.h @@ -3,8 +3,8 @@ #include "PR/ultratypes.h" #include "PR/sched.h" -#include "ultra64/vi.h" -#include "ultra64/sptask.h" +#include "PR/os_vi.h" +#include "PR/sptask.h" #include "irqmgr.h" #define TASK_FRAMEBUFFER(task) ((CfbInfo*)(task)->framebuffer) diff --git a/include/ultra64.h b/include/ultra64.h index f7baade42a..54bb66d69e 100644 --- a/include/ultra64.h +++ b/include/ultra64.h @@ -1,21 +1,23 @@ -#ifndef _ULTRA64_H_ -#define _ULTRA64_H_ +#ifndef ULTRA64_H +#define ULTRA64_H #include "PR/ultratypes.h" #include "PR/gbi.h" -#include "unk.h" - -#include "ultra64/controller_voice.h" -#include "ultra64/hardware.h" -#include "ultra64/message.h" -#include "ultra64/sptask.h" -#include "ultra64/thread.h" -#include "ultra64/rcp.h" -#include "ultra64/rdp.h" -#include "ultra64/rsp.h" -#include "ultra64/r4300.h" -#include "ultra64/ucode.h" -#include "ultra64/vi.h" +#include "PR/gu.h" +#include "PR/controller_voice.h" +#include "PR/hardware.h" +#include "PR/os.h" +#include "PR/osint.h" +#include "PR/piint.h" +#include "PR/siint.h" +#include "PR/sptask.h" +#include "PR/rcp.h" +#include "PR/rdp.h" +#include "PR/rsp.h" +#include "PR/r4300.h" +#include "PR/ucode.h" +#include "PR/viint.h" +#include "PR/xstdio.h" #endif diff --git a/include/ultra64/viint.h b/include/ultra64/viint.h deleted file mode 100644 index 6f61307eb0..0000000000 --- a/include/ultra64/viint.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef ULTRA64_VIINT_H -#define ULTRA64_VIINT_H - -#define VI_STATE_MODE_SET (1 << 0) -#define VI_STATE_XSCALE_SET (1 << 1) -#define VI_STATE_YSCALE_FACTOR_SET (1 << 2) -#define VI_STATE_CTRL_SET (1 << 3) -#define VI_STATE_BUFFER_SET (1 << 4) -#define VI_STATE_BLACK (1 << 5) -#define VI_STATE_REPEATLINE (1 << 6) -#define VI_STATE_FADE (1 << 7) - -#define VI_SCALE_MASK 0xFFF -#define VI_2_10_FPART_MASK 0x3FF -#define VI_SUBPIXEL_SH 0x10 - -// For use in initializing OSViMode structures - -#define BURST(hsync_width, color_width, vsync_width, color_start) \ - (((u32)(hsync_width) & 0xFF) | (((u32)(color_width) & 0xFF) << 8) | (((u32)(vsync_width) & 0xF) << 16) | (((u32)(color_start) & 0xFFFF) << 20)) -#define WIDTH(v) (v) -#define VSYNC(v) (v) -#define HSYNC(duration, leap) (((u32)(leap) << 16) | ((u32)(duration) & 0xFFFF)) -#define LEAP(upper, lower) (((u32)(upper) << 16) | ((u32)(lower) & 0xFFFF)) -#define START(start, end) (((u32)(start) << 16) | ((u32)(end) & 0xFFFF)) - -#define FTOFIX(val, i, f) ((u32)((val) * (f32)(1 << (f))) & ((1 << ((i) + (f))) - 1)) - -#define F210(val) FTOFIX(val, 2, 10) -#define SCALE(scaleup, off) (F210((1.0f / (f32)(scaleup))) | (F210((f32)(off)) << 16)) - -#define VCURRENT(v) v -#define ORIGIN(v) v -#define VINTR(v) v -#define HSTART START - -#endif diff --git a/include/ultraerror.h b/include/ultraerror.h deleted file mode 100644 index 030b05af68..0000000000 --- a/include/ultraerror.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _ULTRAERROR_H_ -#define _ULTRAERROR_H_ - -typedef void (*OSErrorHandler)(/* ECOFF does not store param types */); - -#endif diff --git a/include/ultralog.h b/include/ultralog.h deleted file mode 100644 index ae052d91de..0000000000 --- a/include/ultralog.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _ULTRALOG_H_ -#define _ULTRALOG_H_ - -#include "PR/ultratypes.h" - -typedef struct { - /* 0x0 */ u32 magic; - /* 0x4 */ u32 len; - /* 0x8 */ u32* base; - /* 0xC */ s32 startCount; - /* 0x10 */ s32 writeOffset; -} OSLog; - - -typedef struct { - /* 0x0 */ u32 magic; - /* 0x4 */ u32 timeStamp; - /* 0x8 */ u16 argCount; - /* 0xA */ u16 eventID; -} OSLogItem; - - -typedef struct { - /* 0x0 */ u32 magic; - /* 0x4 */ u32 version; -} OSLogFileHdr; - -#endif diff --git a/include/variables.h b/include/variables.h index 1614d922b4..0f499fde43 100644 --- a/include/variables.h +++ b/include/variables.h @@ -34,7 +34,6 @@ extern s32 sIrqMgrRetraceCount; extern OSViMode osViModeNtscHpf1; extern OSViMode osViModePalLan1; extern s16 sintable[0x400]; -extern __osHwInt __osHwIntTable[]; // extern UNK_TYPE1 D_80097DE4; // extern UNK_TYPE4 D_80097E08; extern OSThread* __osThreadTail; @@ -63,14 +62,12 @@ extern s32 __osPfsLastChannel; extern OSViMode osViModeNtscLan1; extern OSViMode osViModeMpalLan1; // extern __OSViContext D_80098060[2]; -extern __OSViContext* __osViCurr; -extern __OSViContext* __osViNext; + // extern UNK_TYPE4 sCartRomNeedsInit; extern OSViMode osViModeFpalLan1; // extern u8 ldigs[]; // extern u8 udigs[]; // extern OSDevMgr __osViDevMgr; -extern u32 __additional_scanline; extern char bootThreadName[]; extern char idleThreadName[]; @@ -160,7 +157,6 @@ extern OSPiHandle D_8009D1A8; extern OSMesg D_8009E3F0[1]; extern OSMesgQueue __osPiAccessQueue; extern __OSInode __osPfsInodeCache; -extern __OSEventState __osEventStateTab[16]; extern OSTimer D_8009E590; extern OSTime __osCurrentTime; extern u32 __osBaseCounter; diff --git a/include/viint.h b/include/viint.h deleted file mode 100644 index fadd5d7812..0000000000 --- a/include/viint.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _VIINT_H_ -#define _VIINT_H_ - -// TODO should be in libultra/io - -#include "PR/ultratypes.h" -#include "os.h" - -// typedef struct { -// /* 0x0 */ f32 factor; -// /* 0x4 */ u16 offset; -// /* 0x8 */ u32 scale; -// } __OSViScale; - - -typedef struct { - /* 0x0 */ u16 state; - /* 0x2 */ u16 retraceCount; - /* 0x4 */ void* buffer; - /* 0x8 */ OSViMode* modep; - /* 0xC */ u32 control; - /* 0x10 */ OSMesgQueue* msgq; - /* 0x14 */ OSMesg msg; - /* 0x18 */ __OSViScale x; - /* 0x24 */ __OSViScale y; -} __OSViContext; // size = 0x30 - -#endif diff --git a/include/z64.h b/include/z64.h index c94bec0811..69e7e01f2c 100644 --- a/include/z64.h +++ b/include/z64.h @@ -9,14 +9,10 @@ #include "libc/stdlib.h" #include "ultra64.h" -#include "ultra64/gs2dex.h" -#include "io/controller.h" -#include "osint.h" -#include "os.h" + #include "irqmgr.h" #include "padmgr.h" #include "scheduler.h" -#include "xstdio.h" #include "color.h" #include "ichain.h" @@ -27,6 +23,7 @@ #include "gfx.h" #include "gfxprint.h" +#include "padutils.h" #include "sys_matrix.h" #include "tha.h" #include "thga.h" diff --git a/include/z64actor.h b/include/z64actor.h index d794b8dd18..5f0ea59ade 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -2,6 +2,7 @@ #define Z64ACTOR_H #include "PR/ultratypes.h" +#include "padutils.h" #include "z64math.h" #include "z64animation.h" #include "z64collision_check.h" diff --git a/include/z64audio.h b/include/z64audio.h index e09848e7a5..d2a9afd087 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -2,7 +2,8 @@ #define Z64AUDIO_H #include "PR/ultratypes.h" -#include "ultra64/os_voice.h" +#include "PR/os_voice.h" +#include "audiothread_cmd.h" #include "libc/stddef.h" #include "unk.h" #include "audiothread_cmd.h" diff --git a/include/z64bombers_notebook.h b/include/z64bombers_notebook.h index 403f4a88ab..5b89aaf706 100644 --- a/include/z64bombers_notebook.h +++ b/include/z64bombers_notebook.h @@ -2,9 +2,10 @@ #define Z64BOMBERS_NOTEBOOK_H #include "ultra64.h" -#include "io/controller.h" #include "z64dma.h" +struct PlayState; + #define DEFINE_PERSON(enum, _photo, _description, _metEnum, _metMessage, _metFlag) enum, typedef enum BombersNotebookPerson { #include "tables/bombers_notebook/person_table.h" diff --git a/include/z64frameadvance.h b/include/z64frameadvance.h index 179a1adbaa..a05ee8d581 100644 --- a/include/z64frameadvance.h +++ b/include/z64frameadvance.h @@ -1,15 +1,17 @@ #ifndef Z64FRAMEADVANCE_H #define Z64FRAMEADVANCE_H -#include "padmgr.h" +#include "ultra64.h" + +struct Input; + typedef struct FrameAdvanceContext { /* 0x0 */ s32 enabled; /* 0x4 */ s32 timer; } FrameAdvanceContext; // size = 0x8 - void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx); -s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, Input* input); +s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, struct Input* input); #endif diff --git a/include/z64game.h b/include/z64game.h index a0c57853a6..8b63b701f7 100644 --- a/include/z64game.h +++ b/include/z64game.h @@ -4,9 +4,10 @@ #include "ultra64.h" #include "libc/stdbool.h" #include "libc/stdint.h" -#include "io/controller.h" +#include "padutils.h" #include "tha.h" #include "padmgr.h" +#include "unk.h" struct GraphicsContext; struct GameState; diff --git a/include/z64jpeg.h b/include/z64jpeg.h index 60797af988..1811403864 100644 --- a/include/z64jpeg.h +++ b/include/z64jpeg.h @@ -2,7 +2,7 @@ #define Z64JPEG_H #include "PR/ultratypes.h" -#include "ultra64/message.h" +#include "PR/os_message.h" #include "PR/sched.h" typedef struct { diff --git a/include/z64math.h b/include/z64math.h index a86cf9a204..6fa64f4f43 100644 --- a/include/z64math.h +++ b/include/z64math.h @@ -114,6 +114,17 @@ typedef enum { /* 2 */ OLIB_DIFF // Sub `a` and `b` to dest } OlibVec3fDiff; +typedef float MtxF_t[4][4]; +typedef union { + MtxF_t mf; + struct { + float xx, yx, zx, wx, + xy, yy, zy, wy, + xz, yz, zz, wz, + xw, yw, zw, ww; + }; +} MtxF; // size = 0x40 + #define LERPIMP(v0, v1, t) ((v0) + (((v1) - (v0)) * (t))) #define F32_LERP(v0, v1, t) ((1.0f - (t)) * (f32)(v0) + (t) * (f32)(v1)) #define F32_LERPIMP(v0, v1, t) ((f32)(v0) + (((f32)(v1) - (f32)(v0)) * (t))) diff --git a/include/z64player.h b/include/z64player.h index 03bb71d947..f628cd0bc6 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -2,7 +2,7 @@ #define Z64PLAYER_H #include "alignment.h" -#include "os.h" +#include "PR/os.h" #include "z64actor.h" struct Player; diff --git a/include/z64rumble.h b/include/z64rumble.h index cb422d2dec..844d712db7 100644 --- a/include/z64rumble.h +++ b/include/z64rumble.h @@ -2,7 +2,7 @@ #define Z64RUMBLE_H #include "PR/ultratypes.h" -#include "io/controller.h" +#include "PR/controller.h" typedef enum RumbleManagerState { /* 0 */ RUMBLEMANAGER_STATE_WIPE, // Disables the request processing and wipes every request. It can be either set manually or automatically by the system as fail-safe in case the Rumble Pak has been vibrating for 2 minutes diff --git a/include/z64save.h b/include/z64save.h index 5abf105e92..cdc46f0230 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -2,9 +2,9 @@ #define Z64SAVE_H #include "ultra64.h" +#include "PR/os.h" #include "z64item.h" #include "z64math.h" -#include "os.h" struct GameState; struct PlayState; diff --git a/spec b/spec index 7ebf16cd90..4612c18015 100644 --- a/spec +++ b/spec @@ -33,7 +33,7 @@ beginseg include "build/src/boot_O2/gfxprint.o" include "build/data/boot/gfxprint.data.o" include "build/src/boot_O2/mtxuty-cvt.o" - include "build/src/boot_O2/assert.o" + include "build/src/boot_O2/debug.o" include "build/src/boot_O2/system_heap.o" include "build/src/boot_O2/padsetup.o" include "build/src/boot_O2/boot_80086760.o" diff --git a/src/boot_O2/assert.c b/src/boot_O2/debug.c similarity index 67% rename from src/boot_O2/assert.c rename to src/boot_O2/debug.c index 04fcf87fee..3933b585e0 100644 --- a/src/boot_O2/assert.c +++ b/src/boot_O2/debug.c @@ -1,11 +1,11 @@ #include "global.h" #include "fault.h" -void __assert(const char* file, u32 lineNum) { +void _dbg_hungup(const char* file, int lineNum) { osGetThreadId(NULL); Fault_AddHungupAndCrash(file, lineNum); } -void func_800862B4(void) { +void Reset(void) { Fault_AddHungupAndCrash("Reset", 0); } diff --git a/src/boot_O2/loadfragment.c b/src/boot_O2/loadfragment.c index 517c82bbb7..b22b1a692e 100644 --- a/src/boot_O2/loadfragment.c +++ b/src/boot_O2/loadfragment.c @@ -9,6 +9,7 @@ * The main difference between them seems to be the lack of vramEnd arguments here. * Instead they are calculated on the fly. */ + #include "global.h" #include "system_malloc.h" #include "loadfragment.h" diff --git a/src/boot_O2/mtxuty-cvt.c b/src/boot_O2/mtxuty-cvt.c index 2c1634392c..a5da24522e 100644 --- a/src/boot_O2/mtxuty-cvt.c +++ b/src/boot_O2/mtxuty-cvt.c @@ -15,5 +15,5 @@ void MtxConv_F2L(Mtx* mtx, MtxF* mf) { } void MtxConv_L2F(MtxF* mtx, Mtx* mf) { - guMtxL2F(mtx, mf); + guMtxL2F(mtx->mf, mf); } diff --git a/src/boot_O2/padutils.c b/src/boot_O2/padutils.c index accd09e117..1c6bbe868f 100644 --- a/src/boot_O2/padutils.c +++ b/src/boot_O2/padutils.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "padutils.h" void PadUtils_Init(Input* input) { bzero(input, sizeof(Input)); diff --git a/src/boot_O2_g3/fault.c b/src/boot_O2_g3/fault.c index b2afc3f95b..f62dfb8b7c 100644 --- a/src/boot_O2_g3/fault.c +++ b/src/boot_O2_g3/fault.c @@ -44,6 +44,7 @@ #include "fault.h" #include "global.h" #include "vt.h" +#include "PR/osint.h" #include "stackcheck.h" #include "z64thread.h" diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index 31166c3b5e..edb7fc5cca 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "fault.h" diff --git a/src/code/game.c b/src/code/game.c index dc1e1b93e4..4f2df63cd1 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -11,6 +11,7 @@ #include "z64vismono.h" #include "z64viszbuf.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" +#include "debug.h" s32 gFramerateDivisor = 1; f32 gFramerateDivisorF = 1.0f; @@ -168,7 +169,7 @@ void GameState_InitArena(GameState* gameState, size_t size) { } THA_Init(&gameState->heap, NULL, 0); - __assert("../game.c", 1035); + _dbg_hungup("../game.c", 1035); } void GameState_Realloc(GameState* gameState, size_t size) { @@ -192,7 +193,7 @@ void GameState_Realloc(GameState* gameState, size_t size) { THA_Init(&gameState->heap, gameArena, size); } else { THA_Init(&gameState->heap, NULL, 0); - __assert("../game.c", 1074); + _dbg_hungup("../game.c", 1074); } } diff --git a/src/code/padmgr.c b/src/code/padmgr.c index eb6a811b7c..ae40fc1a40 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -32,8 +32,8 @@ */ #include "global.h" -#include "io/controller.h" -#include "ultra64/motor.h" +#include "PR/controller.h" +#include "PR/os_motor.h" #include "fault.h" #define PADMGR_RETRACE_MSG (1 << 0) diff --git a/src/code/z_actor_dlftbls.c b/src/code/z_actor_dlftbls.c index 012c118fbd..d48ed24bcd 100644 --- a/src/code/z_actor_dlftbls.c +++ b/src/code/z_actor_dlftbls.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "fault.h" diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 924000f92e..ae871c8a6c 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "fault.h" #include "fixed_point.h" diff --git a/src/code/z_camera.c b/src/code/z_camera.c index 95d2e36f92..c2e00e2063 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -44,6 +44,7 @@ */ #include "global.h" +#include "libc/string.h" #include "z64quake.h" #include "z64shrink_window.h" #include "z64view.h" diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 24371cdbe6..ba9199dbb8 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -1,5 +1,6 @@ -#include "prevent_bss_reordering.h" #include "PR/ultratypes.h" +#include "prevent_bss_reordering.h" +#include "prevent_bss_reordering2.h" // Variables are put before most headers as a hacky way to bypass bss reordering struct CutsceneCamera; diff --git a/src/code/z_eventmgr.c b/src/code/z_eventmgr.c index 88ec794fc6..fed5ec48c4 100644 --- a/src/code/z_eventmgr.c +++ b/src/code/z_eventmgr.c @@ -3,8 +3,10 @@ * * Manages all cutscenes except for manual */ + #include "global.h" #include "z64shrink_window.h" +#include "libc/string.h" ActorCutscene sGlobalCutsceneList[] = { // CS_ID_GLOBAL_78 diff --git a/src/code/z_pause.c b/src/code/z_pause.c index 5f212b7ae8..b16cc62c13 100644 --- a/src/code/z_pause.c +++ b/src/code/z_pause.c @@ -20,6 +20,8 @@ */ #include "z64frameadvance.h" +#include "libc/stdbool.h" +#include "padutils.h" #include "macros.h" void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx) { diff --git a/src/code/z_play.c b/src/code/z_play.c index ccbf1f0c43..48fbb1f2d4 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -32,6 +32,7 @@ u8 sMotionBlurStatus; #include "overlays/gamestates/ovl_opening/z_opening.h" #include "overlays/gamestates/ovl_file_choose/z_file_select.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" +#include "debug.h" s32 gDbgCamEnabled = false; u8 D_801D0D54 = false; @@ -335,11 +336,11 @@ void Play_SetupTransition(PlayState* this, s32 transitionType) { default: fbdemoType = -1; - __assert("../z_play.c", 1420); + _dbg_hungup("../z_play.c", 1420); } } else { fbdemoType = -1; - __assert("../z_play.c", 1423); + _dbg_hungup("../z_play.c", 1423); } transitionCtx->transitionType = transitionType; diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index e272bbfeaa..a890090ff6 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -3,6 +3,7 @@ * Description: Set of library functions to interact with the Player system */ +#include "prevent_bss_reordering.h" #include "global.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/code/z_room.c b/src/code/z_room.c index 78eb5f98e9..28a2974993 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -1,4 +1,5 @@ #include "global.h" +#include "debug.h" void Room_Noop(PlayState* play, Room* room, Input* input, s32 arg3) { } @@ -380,7 +381,7 @@ RoomShapeImageMultiBgEntry* Room_GetImageMultiBgEntry(RoomShapeImageMulti* roomS bgEntry++; } - __assert("../z_room.c", 849); + _dbg_hungup("../z_room.c", 849); return NULL; } @@ -461,7 +462,7 @@ void Room_DrawImage(PlayState* play, Room* room, u32 flags) { } else if (roomShape->amountType == ROOM_SHAPE_IMAGE_AMOUNT_MULTI) { Room_DrawImageMulti(play, room, flags); } else { - __assert("../z_room.c", 965); + _dbg_hungup("../z_room.c", 965); } } @@ -516,7 +517,7 @@ size_t Room_AllocateAndLoad(PlayState* play, RoomContext* roomCtx) { roomCtx->roomMemPages[0] = THA_AllocTailAlign16(&play->state.heap, maxRoomSize); if (roomCtx->roomMemPages[0] == NULL) { - __assert("../z_room.c", 1078); + _dbg_hungup("../z_room.c", 1078); } roomCtx->roomMemPages[1] = (void*)((uintptr_t)roomCtx->roomMemPages[0] + maxRoomSize); roomCtx->activeMemPage = 0; diff --git a/src/code/z_vimode.c b/src/code/z_vimode.c index 778c89c14c..8e3d1c59f8 100644 --- a/src/code/z_vimode.c +++ b/src/code/z_vimode.c @@ -1,6 +1,7 @@ #include "global.h" +#include "debug.h" #include "z64vimode.h" -#include "ultra64/viint.h" +#include "PR/viint.h" typedef struct { /* 0x00 */ u32 burst; @@ -143,7 +144,7 @@ void ViMode_Configure(OSViMode* viMode, s32 type, s32 tvType, s32 loRes, s32 ant viMode->fldRegs[0].vBurst = ptr->vBurst; viMode->fldRegs[1].vBurst = ptr->vBurst; } else { - __assert("../z_vimode.c", 216); + _dbg_hungup("../z_vimode.c", 216); } viMode->comRegs.hStart += (leftAdjust << 16) + (s16)rightAdjust; diff --git a/src/libultra/gu/guS2DInitBg.c b/src/libultra/gu/guS2DInitBg.c index d2e5a2b043..c87176f490 100644 --- a/src/libultra/gu/guS2DInitBg.c +++ b/src/libultra/gu/guS2DInitBg.c @@ -1,4 +1,5 @@ #include "global.h" +#include "PR/gs2dex.h" void guS2DInitBg(uObjBg* bg) { u32 size; diff --git a/src/libultra/gu/lookathil.c b/src/libultra/gu/lookathil.c index dcb05b3d9a..22540337cd 100644 --- a/src/libultra/gu/lookathil.c +++ b/src/libultra/gu/lookathil.c @@ -1,7 +1,5 @@ #include "global.h" -#define FTOFRAC8(x) ((s32)MIN(((x) * (128.0f)), 127.0f) & 0xFF) - void guLookAtHiliteF(f32 mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, /* light 1 direction */ f32 xl2, f32 yl2, f32 zl2, /* light 2 direction */ diff --git a/src/libultra/io/contreaddata.c b/src/libultra/io/contreaddata.c index 27bd0b8ed5..21a8b90ce3 100644 --- a/src/libultra/io/contreaddata.c +++ b/src/libultra/io/contreaddata.c @@ -1,5 +1,7 @@ #include "global.h" +void __osPackReadData(void); + s32 osContStartReadData(OSMesgQueue* mq) { s32 ret; int i; @@ -37,7 +39,7 @@ void osContGetReadData(OSContPad* data) { } } -void __osPackReadData() { +void __osPackReadData(void) { u8* ptr; __OSContReadFormat readformat; int i; diff --git a/src/libultra/io/motor.c b/src/libultra/io/motor.c index 9e0eb127ee..ba934d8004 100644 --- a/src/libultra/io/motor.c +++ b/src/libultra/io/motor.c @@ -1,6 +1,6 @@ -#include "ultra64/motor.h" +#include "PR/os_motor.h" -#include "io/controller.h" +#include "PR/controller.h" #include "functions.h" #define BANK_ADDR 0x400 diff --git a/src/libultra/io/osViModeMpalLan1.c b/src/libultra/io/osViModeMpalLan1.c index ccccf68ae6..a7f5173a9d 100644 --- a/src/libultra/io/osViModeMpalLan1.c +++ b/src/libultra/io/osViModeMpalLan1.c @@ -1,5 +1,5 @@ #include "global.h" -#include "ultra64/viint.h" +#include "PR/viint.h" OSViMode osViModeMpalLan1 = { OS_VI_MPAL_LAN1, // type diff --git a/src/libultra/io/osViModeNtscHpf1.c b/src/libultra/io/osViModeNtscHpf1.c index 5f88f4e94c..672a2a17f1 100644 --- a/src/libultra/io/osViModeNtscHpf1.c +++ b/src/libultra/io/osViModeNtscHpf1.c @@ -1,5 +1,5 @@ #include "global.h" -#include "ultra64/viint.h" +#include "PR/viint.h" OSViMode osViModeNtscHpf1 = { OS_VI_NTSC_HPF1, // type diff --git a/src/libultra/io/osViModeNtscLan1.c b/src/libultra/io/osViModeNtscLan1.c index 86eb473b77..afbe46fab5 100644 --- a/src/libultra/io/osViModeNtscLan1.c +++ b/src/libultra/io/osViModeNtscLan1.c @@ -1,5 +1,5 @@ #include "global.h" -#include "ultra64/viint.h" +#include "PR/viint.h" OSViMode osViModeNtscLan1 = { OS_VI_NTSC_LAN1, // type diff --git a/src/libultra/io/osViModePalLan1.c b/src/libultra/io/osViModePalLan1.c index f875bb7319..66ae4e6f1a 100644 --- a/src/libultra/io/osViModePalLan1.c +++ b/src/libultra/io/osViModePalLan1.c @@ -1,5 +1,5 @@ #include "global.h" -#include "ultra64/viint.h" +#include "PR/viint.h" OSViMode osViModePalLan1 = { OS_VI_PAL_LAN1, // type diff --git a/src/libultra/io/pfschecker.c b/src/libultra/io/pfschecker.c index d3a6357686..79045ce1b2 100644 --- a/src/libultra/io/pfschecker.c +++ b/src/libultra/io/pfschecker.c @@ -1,4 +1,4 @@ -#include "PR/pfs.h" +#include "PR/os_pfs.h" #include "global.h" #define CHECK_IPAGE(p) \ diff --git a/src/libultra/io/pfsdeletefile.c b/src/libultra/io/pfsdeletefile.c index 39e9aa8981..3d6558a0db 100644 --- a/src/libultra/io/pfsdeletefile.c +++ b/src/libultra/io/pfsdeletefile.c @@ -1,4 +1,4 @@ -#include "PR/pfs.h" +#include "PR/os_pfs.h" #include "global.h" s32 __osPfsReleasePages(OSPfs* pfs, __OSInode* inode, u8 initialPage, u8 bank, __OSInodeUnit* finalPage); diff --git a/src/libultra/io/pfsfilestate.c b/src/libultra/io/pfsfilestate.c index f06c8d9373..887eac1f6c 100644 --- a/src/libultra/io/pfsfilestate.c +++ b/src/libultra/io/pfsfilestate.c @@ -1,4 +1,4 @@ -#include "PR/pfs.h" +#include "PR/os_pfs.h" #include "global.h" s32 osPfsFileState(OSPfs* pfs, s32 fileNo, OSPfsState* state) { diff --git a/src/libultra/io/pfsfreeblocks.c b/src/libultra/io/pfsfreeblocks.c index b90979c595..2f8c6493f7 100644 --- a/src/libultra/io/pfsfreeblocks.c +++ b/src/libultra/io/pfsfreeblocks.c @@ -1,5 +1,5 @@ #include "global.h" -#include "PR/pfs.h" +#include "PR/os_pfs.h" s32 osPfsFreeBlocks(OSPfs* pfs, s32* leftoverBytes) { s32 j; diff --git a/src/libultra/io/pfsinitpak.c b/src/libultra/io/pfsinitpak.c index cc226f834d..f4d917b62d 100644 --- a/src/libultra/io/pfsinitpak.c +++ b/src/libultra/io/pfsinitpak.c @@ -1,4 +1,4 @@ -#include "PR/pfs.h" +#include "PR/os_pfs.h" #include "global.h" s32 __osPfsCheckRamArea(OSPfs* pfs); diff --git a/src/libultra/io/pfsisplug.c b/src/libultra/io/pfsisplug.c index 474c7f914b..99a2cbc422 100644 --- a/src/libultra/io/pfsisplug.c +++ b/src/libultra/io/pfsisplug.c @@ -1,5 +1,5 @@ -#include "PR/pfs.h" -#include "io/controller.h" +#include "PR/os_pfs.h" +#include "PR/controller.h" #include "global.h" void __osPfsRequestData(u8 poll); diff --git a/src/libultra/io/pfsselectbank.c b/src/libultra/io/pfsselectbank.c index 6cc43a4701..59a69fccb5 100644 --- a/src/libultra/io/pfsselectbank.c +++ b/src/libultra/io/pfsselectbank.c @@ -1,4 +1,4 @@ -#include "PR/pfs.h" +#include "PR/os_pfs.h" #include "global.h" s32 __osPfsSelectBank(OSPfs* pfs, u8 bank) { diff --git a/src/libultra/io/vigetcurrframebuf.c b/src/libultra/io/vigetcurrframebuf.c index bace58ded6..8127a3f63a 100644 --- a/src/libultra/io/vigetcurrframebuf.c +++ b/src/libultra/io/vigetcurrframebuf.c @@ -1,8 +1,8 @@ #include "global.h" -u32* osViGetCurrentFramebuffer(void) { +void* osViGetCurrentFramebuffer(void) { register u32 prevInt = __osDisableInt(); - u32* curBuf = __osViCurr->buffer; + void* curBuf = __osViCurr->buffer; __osRestoreInt(prevInt); diff --git a/src/libultra/io/vimgr.c b/src/libultra/io/vimgr.c index 13f63c90d7..f38974b8aa 100644 --- a/src/libultra/io/vimgr.c +++ b/src/libultra/io/vimgr.c @@ -1,6 +1,7 @@ #include "global.h" +#include "PR/osint.h" #include "stack.h" -#include "osint.h" +#include "PR/osint.h" OSThread viThread; STACK(sViStack, 0x1000); diff --git a/src/libultra/os/gethwinterrupt.c b/src/libultra/os/gethwinterrupt.c index dacd43910f..711985df79 100644 --- a/src/libultra/os/gethwinterrupt.c +++ b/src/libultra/os/gethwinterrupt.c @@ -1,7 +1,8 @@ #include "global.h" -#include "os_internal.h" +#include "PR/os_internal.h" +#include "PR/osint.h" -void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg) { +void __osGetHWIntrRoutine(OSHWIntr idx, OSMesgQueue** outQueue, OSMesg* outMsg) { *outQueue = __osHwIntTable[idx].queue; *outMsg = __osHwIntTable[idx].msg; } diff --git a/src/libultra/os/initialize.c b/src/libultra/os/initialize.c index 4fabb4c4dd..8eb97c28c9 100644 --- a/src/libultra/os/initialize.c +++ b/src/libultra/os/initialize.c @@ -9,6 +9,8 @@ typedef struct { /* 0xC */ u32 ins_0C; // nop } struct_exceptionPreamble; // size = 0x10 +extern struct_exceptionPreamble __osExceptionPreamble; + u64 osClockRate = OS_CLOCK_RATE; s32 osViClock = VI_NTSC_CLOCK; UNK_TYPE4 __osShutdown = 0; @@ -30,7 +32,7 @@ void __createSpeedParam(void) { D_8009D1A8.relDuration = HW_REG(PI_BSD_DOM2_RLS_REG, u32); } -void osInitialize(void) { +void __osInitialize_common(void) { u32 pifdata; D_8009CF70 = 1; @@ -43,10 +45,10 @@ void osInitialize(void) { while (__osSiRawWriteIo(0x1FC007FC, pifdata | 8)) {} - *(struct_exceptionPreamble*)0x80000000 = *((struct_exceptionPreamble*)__osExceptionPreamble); - *(struct_exceptionPreamble*)0x80000080 = *((struct_exceptionPreamble*)__osExceptionPreamble); - *(struct_exceptionPreamble*)0x80000100 = *((struct_exceptionPreamble*)__osExceptionPreamble); - *(struct_exceptionPreamble*)0x80000180 = *((struct_exceptionPreamble*)__osExceptionPreamble); + *(struct_exceptionPreamble*)0x80000000 = __osExceptionPreamble; + *(struct_exceptionPreamble*)0x80000080 = __osExceptionPreamble; + *(struct_exceptionPreamble*)0x80000100 = __osExceptionPreamble; + *(struct_exceptionPreamble*)0x80000180 = __osExceptionPreamble; osWritebackDCache(0x80000000, 400); osInvalICache(0x80000000, 400); diff --git a/src/libultra/os/resetglobalintmask.c b/src/libultra/os/resetglobalintmask.c index c2561d712c..6289a1d4cf 100644 --- a/src/libultra/os/resetglobalintmask.c +++ b/src/libultra/os/resetglobalintmask.c @@ -1,6 +1,6 @@ #include "global.h" -void __osResetGlobalIntMask(u32 mask) { +void __osResetGlobalIntMask(OSHWIntr mask) { register s32 prevInt = __osDisableInt(); __OSGlobalIntMask &= ~(mask & ~0x401); diff --git a/src/libultra/os/seteventmesg.c b/src/libultra/os/seteventmesg.c index 26e837fcf3..d5c8407f4e 100644 --- a/src/libultra/os/seteventmesg.c +++ b/src/libultra/os/seteventmesg.c @@ -1,8 +1,9 @@ #include "global.h" +#include "PR/osint.h" UNK_TYPE4 D_80097F10 = 0; -__OSEventState __osEventStateTab[16]; +__OSEventState __osEventStateTab[OS_NUM_EVENTS]; void osSetEventMesg(OSEvent e, OSMesgQueue* mq, OSMesg m) { register u32 saveMask; diff --git a/src/libultra/os/setglobalintmask.c b/src/libultra/os/setglobalintmask.c index 6b7895d6d4..067343f6ee 100644 --- a/src/libultra/os/setglobalintmask.c +++ b/src/libultra/os/setglobalintmask.c @@ -1,6 +1,6 @@ #include "global.h" -void __osSetGlobalIntMask(u32 mask) { +void __osSetGlobalIntMask(OSHWIntr mask) { register s32 prevInt = __osDisableInt(); __OSGlobalIntMask |= mask; diff --git a/src/libultra/os/sethwinterrupt.c b/src/libultra/os/sethwinterrupt.c index 6ba72be7a1..4f536cade4 100644 --- a/src/libultra/os/sethwinterrupt.c +++ b/src/libultra/os/sethwinterrupt.c @@ -1,6 +1,7 @@ #include "global.h" +#include "PR/osint.h" -void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg) { +void __osSetHWIntrRoutine(OSHWIntr idx, OSMesgQueue* queue, OSMesg msg) { register s32 prevInt = __osDisableInt(); __osHwIntTable[idx].queue = queue; diff --git a/src/libultra/os/virtualtophysical.c b/src/libultra/os/virtualtophysical.c index 6bdb2ccb3d..403ab5f4f3 100644 --- a/src/libultra/os/virtualtophysical.c +++ b/src/libultra/os/virtualtophysical.c @@ -1,5 +1,5 @@ #include "PR/ultratypes.h" -#include "osint.h" +#include "PR/osint.h" #include "libc/stdint.h" #include "global.h" diff --git a/src/libultra/rmon/sprintf.c b/src/libultra/rmon/sprintf.c index 446a747027..9f3610fe08 100644 --- a/src/libultra/rmon/sprintf.c +++ b/src/libultra/rmon/sprintf.c @@ -1,4 +1,5 @@ #include "global.h" +#include "libc/string.h" void* proutSprintf(void* dst, const char* fmt, size_t size) { return (void*)((uintptr_t)memcpy(dst, fmt, size) + size); @@ -12,7 +13,7 @@ int vsprintf(char* dst, char* fmt, va_list args) { return ans; } -int sprintf(char* dst, char* fmt, ...) { +int sprintf(char* dst, const char* fmt, ...) { int ans; va_list args; va_start(args, fmt); diff --git a/src/libultra/rmon/xldtob.c b/src/libultra/rmon/xldtob.c index 66c058396e..e30bf4b81b 100644 --- a/src/libultra/rmon/xldtob.c +++ b/src/libultra/rmon/xldtob.c @@ -1,4 +1,5 @@ #include "global.h" +#include "libc/string.h" #define BUFF_LEN 0x20 diff --git a/src/libultra/rmon/xlitob.c b/src/libultra/rmon/xlitob.c index 6c53ee0942..70b9c32a45 100644 --- a/src/libultra/rmon/xlitob.c +++ b/src/libultra/rmon/xlitob.c @@ -1,4 +1,5 @@ #include "global.h" +#include "libc/string.h" #define BUFF_LEN 0x18 diff --git a/src/libultra/rmon/xprintf.c b/src/libultra/rmon/xprintf.c index 6caac436f0..3fc6b5e2af 100644 --- a/src/libultra/rmon/xprintf.c +++ b/src/libultra/rmon/xprintf.c @@ -1,4 +1,5 @@ #include "global.h" +#include "libc/string.h" #define ATOI(i, a) \ for (i = 0; *a >= '0' && *a <= '9'; a++) \ @@ -28,6 +29,8 @@ char spaces[] = " "; char zeroes[] = "00000000000000000000000000000000"; +void _Putfld(_Pft* px, va_list* pap, unsigned char code, unsigned char* ac); + int _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap) { _Pft x; x.nchar = 0; diff --git a/src/libultra/voice/voicecheckresult.c b/src/libultra/voice/voicecheckresult.c index 7d1e5c0a54..2524721921 100644 --- a/src/libultra/voice/voicecheckresult.c +++ b/src/libultra/voice/voicecheckresult.c @@ -1,9 +1,10 @@ /** * File: voicecheckresult.c */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" + +#include "PR/controller_voice.h" +#include "PR/controller.h" +#include "PR/os_voice.h" s32 __osVoiceCheckResult(OSVoiceHandle* hd, u8* status) { s32 errorCode = __osVoiceGetStatus(hd->mq, hd->channel, status); diff --git a/src/libultra/voice/voicecheckword.c b/src/libultra/voice/voicecheckword.c index 1a2695b513..b4c05d90cb 100644 --- a/src/libultra/voice/voicecheckword.c +++ b/src/libultra/voice/voicecheckword.c @@ -3,7 +3,7 @@ * * Checks whether or not a word can be registered in the dictionary */ -#include "io/controller.h" +#include "PR/controller.h" // TODO: SJIS support s32 osVoiceCheckWord(u8* word) { diff --git a/src/libultra/voice/voicecleardictionary.c b/src/libultra/voice/voicecleardictionary.c index e474bc2fd5..eceb9bb715 100644 --- a/src/libultra/voice/voicecleardictionary.c +++ b/src/libultra/voice/voicecleardictionary.c @@ -10,9 +10,9 @@ * is initialized with the osVoiceClearDictionary function */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" +#include "PR/os_voice.h" s32 osVoiceClearDictionary(OSVoiceHandle* hd, u8 numWords) { s32 errorCode; diff --git a/src/libultra/voice/voicecontread2.c b/src/libultra/voice/voicecontread2.c index 1477e570b6..0f39ee3087 100644 --- a/src/libultra/voice/voicecontread2.c +++ b/src/libultra/voice/voicecontread2.c @@ -2,8 +2,8 @@ * File: voicecontread2.c */ -#include "ultra64/controller_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" #include "functions.h" #include "variables.h" diff --git a/src/libultra/voice/voicecontread36.c b/src/libultra/voice/voicecontread36.c index 83d0fdf2ea..9f23bf979d 100644 --- a/src/libultra/voice/voicecontread36.c +++ b/src/libultra/voice/voicecontread36.c @@ -2,8 +2,8 @@ * File: voicecontread36.c */ -#include "ultra64/controller_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" #include "functions.h" #include "variables.h" diff --git a/src/libultra/voice/voicecontrolgain.c b/src/libultra/voice/voicecontrolgain.c index 61cccde708..bac3871d79 100644 --- a/src/libultra/voice/voicecontrolgain.c +++ b/src/libultra/voice/voicecontrolgain.c @@ -4,9 +4,9 @@ * Adjusts the input gain of the Voice Recognition System */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" #include "macros.h" u8 sDigitalTable[] = { 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0 }; diff --git a/src/libultra/voice/voicecontwrite20.c b/src/libultra/voice/voicecontwrite20.c index cc3af385e0..dd9d7e07f0 100644 --- a/src/libultra/voice/voicecontwrite20.c +++ b/src/libultra/voice/voicecontwrite20.c @@ -2,8 +2,8 @@ * File: voicecontwrite20.c */ -#include "ultra64/controller_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" #include "functions.h" #include "variables.h" diff --git a/src/libultra/voice/voicecontwrite4.c b/src/libultra/voice/voicecontwrite4.c index 06239219a6..103d3e798e 100644 --- a/src/libultra/voice/voicecontwrite4.c +++ b/src/libultra/voice/voicecontwrite4.c @@ -2,8 +2,8 @@ * File: voicecontwrite4.c */ -#include "ultra64/controller_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" #include "functions.h" #include "variables.h" diff --git a/src/libultra/voice/voicegetreaddata.c b/src/libultra/voice/voicegetreaddata.c index d271f71c70..5e5a2b62bf 100644 --- a/src/libultra/voice/voicegetreaddata.c +++ b/src/libultra/voice/voicegetreaddata.c @@ -4,9 +4,9 @@ * Gets voice recognition result from the Voice Recognition System */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" s32 osVoiceGetReadData(OSVoiceHandle* hd, OSVoiceData* result) { static u8 sHandleStatus; diff --git a/src/libultra/voice/voicegetstatus.c b/src/libultra/voice/voicegetstatus.c index 444ae62335..b19348908a 100644 --- a/src/libultra/voice/voicegetstatus.c +++ b/src/libultra/voice/voicegetstatus.c @@ -2,8 +2,8 @@ * File: voicegetstatus.c */ -#include "ultra64/controller_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" #include "functions.h" s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 channel, u8* status) { diff --git a/src/libultra/voice/voiceinit.c b/src/libultra/voice/voiceinit.c index 2a777edaf6..f8c965f703 100644 --- a/src/libultra/voice/voiceinit.c +++ b/src/libultra/voice/voiceinit.c @@ -4,9 +4,9 @@ * Initializes Voice Recognition System control structure and hardware */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" #include "functions.h" #include "macros.h" @@ -14,7 +14,7 @@ static u8 sCmds[] = { 0x1E, 0x6E, 0x08, 0x56, 0x03, }; -s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* hd, s32 channel) { +s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* hd, int channel) { s32 errorCode; s32 i; u8 status = 0; diff --git a/src/libultra/voice/voicemaskdictionary.c b/src/libultra/voice/voicemaskdictionary.c index a8f090329c..225c45dee3 100644 --- a/src/libultra/voice/voicemaskdictionary.c +++ b/src/libultra/voice/voicemaskdictionary.c @@ -4,13 +4,13 @@ * Mask words registered in the voice recognition system */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" #include "functions.h" #include "macros.h" -s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, s32 size) { +s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, int size) { s32 errorCode; s32 i; s32 j; diff --git a/src/libultra/voice/voicesetadconverter.c b/src/libultra/voice/voicesetadconverter.c index 2a6ebfbc7c..55403dae6f 100644 --- a/src/libultra/voice/voicesetadconverter.c +++ b/src/libultra/voice/voicesetadconverter.c @@ -2,8 +2,8 @@ * File: voicesetadconverter.c */ -#include "ultra64/controller_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/controller.h" #include "functions.h" #include "variables.h" diff --git a/src/libultra/voice/voicesetword.c b/src/libultra/voice/voicesetword.c index 2dfe58b94f..82b0f88aa2 100644 --- a/src/libultra/voice/voicesetword.c +++ b/src/libultra/voice/voicesetword.c @@ -4,9 +4,9 @@ * Registers words to the Voice Recognition System dictionary */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" #include "functions.h" #include "macros.h" diff --git a/src/libultra/voice/voicestartreaddata.c b/src/libultra/voice/voicestartreaddata.c index 398d10a15c..0ff35fd2b4 100644 --- a/src/libultra/voice/voicestartreaddata.c +++ b/src/libultra/voice/voicestartreaddata.c @@ -4,9 +4,9 @@ * Start voice recognition by the Voice Recognition System */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" s32 osVoiceStartReadData(OSVoiceHandle* hd) { s32 errorCode; diff --git a/src/libultra/voice/voicestopread.c b/src/libultra/voice/voicestopread.c index 570613428c..905efb19f2 100644 --- a/src/libultra/voice/voicestopread.c +++ b/src/libultra/voice/voicestopread.c @@ -4,9 +4,9 @@ * Forcibly stops voice recognition processing by the Voice Recognition System */ -#include "ultra64/controller_voice.h" -#include "ultra64/os_voice.h" -#include "io/controller.h" +#include "PR/controller_voice.h" +#include "PR/os_voice.h" +#include "PR/controller.h" s32 osVoiceStopReadData(OSVoiceHandle* hd) { s32 errorCode; diff --git a/src/overlays/actors/ovl_Bg_Dblue_Balance/z_bg_dblue_balance.c b/src/overlays/actors/ovl_Bg_Dblue_Balance/z_bg_dblue_balance.c index 47f0dec927..5d0ac3bc57 100644 --- a/src/overlays/actors/ovl_Bg_Dblue_Balance/z_bg_dblue_balance.c +++ b/src/overlays/actors/ovl_Bg_Dblue_Balance/z_bg_dblue_balance.c @@ -4,7 +4,6 @@ * Description: Great Bay Temple - Seesaw and Waterwheel w/ Platforms */ -#include "prevent_bss_reordering.h" #include "z_bg_dblue_balance.h" #include "objects/object_dblue_object/object_dblue_object.h" diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index 751aa5523d..bf3aa576d7 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -4,7 +4,6 @@ * Description: Twinmold */ -#include "prevent_bss_reordering.h" #include "z_boss_02.h" #include "z64rumble.h" #include "z64shrink_window.h" diff --git a/src/overlays/actors/ovl_En_Az/z_en_az.c b/src/overlays/actors/ovl_En_Az/z_en_az.c index 8d1e306bbc..8b98808e1d 100644 --- a/src/overlays/actors/ovl_En_Az/z_en_az.c +++ b/src/overlays/actors/ovl_En_Az/z_en_az.c @@ -4,6 +4,7 @@ * Description: Beaver Bros */ +#include "prevent_bss_reordering.h" #include "z_en_az.h" #include "overlays/actors/ovl_En_Twig/z_en_twig.h" #include "overlays/actors/ovl_En_Fish/z_en_fish.h" diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index 7aae1c7427..7fbd43a549 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -7,6 +7,7 @@ #include "z_en_horse_game_check.h" #include "z64horse.h" #include "objects/object_horse_game_check/object_horse_game_check.h" +#include "debug.h" #define FLAGS (ACTOR_FLAG_10) @@ -128,13 +129,13 @@ s32 func_808F8CCC(EnHorseGameCheck* this, PlayState* play2) { this->horse1 = (EnHorse*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -1149.0f, -106.0f, 470.0f, 0, 0x7FFF, 0, ENHORSE_PARAMS(ENHORSE_PARAM_BANDIT, ENHORSE_4)); if (this->horse1 == NULL) { - __assert("../z_en_horse_game_check.c", 1517); + _dbg_hungup("../z_en_horse_game_check.c", 1517); } this->horse2 = (EnHorse*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_HORSE, -1376.0f, -106.0f, 470.0f, 0, 0x7FFF, 0, ENHORSE_PARAMS(ENHORSE_PARAM_BANDIT, ENHORSE_5)); if (this->horse2 == NULL) { - __assert("../z_en_horse_game_check.c", 1526); + _dbg_hungup("../z_en_horse_game_check.c", 1526); } this->unk_17C = -1; diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 39e092e2fb..8bbbaca14f 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -4,7 +4,6 @@ * Description: Grass / Bush */ -#include "prevent_bss_reordering.h" #include "z_en_kusa.h" #include "objects/object_kusa/object_kusa.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 4354068858..a1f2382406 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -4,7 +4,6 @@ * Description: Player */ -#include "prevent_bss_reordering.h" #include "global.h" #include "z64horse.h" #include "z64quake.h" diff --git a/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c b/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c index 1104a28a3e..c552e7c500 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c +++ b/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c @@ -5,6 +5,7 @@ */ #include "z_eff_ss_kakera.h" +#include "debug.h" #define rReg0 regs[0] #define rGravity regs[1] @@ -62,7 +63,7 @@ u32 EffectSsKakera_Init(PlayState* play, u32 index, EffectSs* this, void* initPa break; } } else { - __assert("../z_eff_kakera.c", 193); + _dbg_hungup("../z_eff_kakera.c", 193); } this->draw = EffectSsKakera_Draw; this->update = EffectSsKakera_Update; diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index 562f4f42ba..a7f421191a 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -56,7 +56,7 @@ 0x80085320 : "stackcheck", 0x80085570 : "gfxprint", 0x80086110 : "mtxuty-cvt", - 0x80086280 : "assert", + 0x80086280 : "debug", 0x800862E0 : "system_heap", 0x80086620 : "padsetup", 0x80086760 : "boot_80086760", @@ -296,7 +296,7 @@ 0x800982B0 : "fault", 0x80098C50 : "fault_drawer", 0x80099090 : "gfxprint", - 0x800990B0 : "assert", + 0x800990B0 : "debug", 0x800990C0 : "boot_80086760", 0x80099110 : "__osMalloc", 0x800991A0 : "setintmask", diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 1b33b3a5f8..13519cb067 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -155,8 +155,8 @@ 0x800860D8:("GfxPrint_Printf",), 0x80086110:("MtxConv_F2L",), 0x80086258:("MtxConv_L2F",), - 0x80086280:("__assert",), - 0x800862B4:("func_800862B4",), + 0x80086280:("_dbg_hungup",), + 0x800862B4:("Reset",), 0x800862E0:("SystemHeap_Malloc",), 0x80086310:("SystemHeap_Free",), 0x8008633C:("SystemHeap_RunBlockFunc",), @@ -299,7 +299,7 @@ 0x8008A5D0:("__osSetSR",), 0x8008A5E0:("osWritebackDCache",), 0x8008A660:("__createSpeedParam",), - 0x8008A6FC:("osInitialize",), + 0x8008A6FC:("__osInitialize_common",), 0x8008A9A8:("__osInitialize_autodetect",), 0x8008AA10:("osViGetNextFramebuffer",), 0x8008AA50:("guPerspectiveF",), diff --git a/tools/sizes/boot_functions.csv b/tools/sizes/boot_functions.csv index 1c05ba562b..f2aec1cb46 100644 --- a/tools/sizes/boot_functions.csv +++ b/tools/sizes/boot_functions.csv @@ -152,8 +152,8 @@ asm/non_matchings/boot/gfxprint/GfxPrint_VPrintf.s,GfxPrint_VPrintf,0x800860B8,0 asm/non_matchings/boot/gfxprint/GfxPrint_Printf.s,GfxPrint_Printf,0x800860D8,0xE asm/non_matchings/boot/mtxuty-cvt/MtxConv_F2L.s,MtxConv_F2L,0x80086110,0x52 asm/non_matchings/boot/mtxuty-cvt/MtxConv_L2F.s,MtxConv_L2F,0x80086258,0xA -asm/non_matchings/boot/assert/__assert.s,__assert,0x80086280,0xD -asm/non_matchings/boot/assert/func_800862B4.s,func_800862B4,0x800862B4,0xB +asm/non_matchings/boot/assert/_dbg_hungup.s,_dbg_hungup,0x80086280,0xD +asm/non_matchings/boot/assert/Reset.s,Reset,0x800862B4,0xB asm/non_matchings/boot/boot_800862E0/SystemHeap_Malloc.s,SystemHeap_Malloc,0x800862E0,0xC asm/non_matchings/boot/boot_800862E0/SystemArena_Free.s,SystemArena_Free,0x80086310,0xB asm/non_matchings/boot/boot_800862E0/SystemHeap_RunBlockFunc.s,SystemHeap_RunBlockFunc,0x8008633C,0x1C @@ -296,7 +296,7 @@ asm/non_matchings/boot/getsr/__osGetSR.s,__osGetSR,0x8008A5C0,0x4 asm/non_matchings/boot/setsr/__osSetSR.s,__osSetSR,0x8008A5D0,0x4 asm/non_matchings/boot/writebackdcache/osWritebackDCache.s,osWritebackDCache,0x8008A5E0,0x20 asm/non_matchings/boot/initialize/__createSpeedParam.s,__createSpeedParam,0x8008A660,0x27 -asm/non_matchings/boot/initialize/osInitialize.s,osInitialize,0x8008A6FC,0xAB +asm/non_matchings/boot/initialize/__osInitialize_common.s,__osInitialize_common,0x8008A6FC,0xAB asm/non_matchings/boot/initialize/__osInitialize_autodetect.s,__osInitialize_autodetect,0x8008A9A8,0x2 asm/non_matchings/boot/vigetnextframebuf/osViGetNextFramebuffer.s,osViGetNextFramebuffer,0x8008AA10,0x10 asm/non_matchings/boot/perspective/guPerspectiveF.s,guPerspectiveF,0x8008AA50,0x8C