General Cleanup 2 (#1538)

* Cleanup

* Cleanup variables.h

* Cleanup fault headers

* Some includes/headers cleanup

* Libultra btn wrappers

* Mark differences to original libultra headers

* Remove duplicate include in fault

* format

* Update include/PR/os_voice.h

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

* align

---------

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>
This commit is contained in:
Derek Hensley
2024-01-28 16:27:50 -08:00
committed by GitHub
parent 6a15ce9521
commit db8f5f5ccc
54 changed files with 373 additions and 1785 deletions
+5 -4
View File
@@ -5,18 +5,19 @@
* buffer copies and coverage drawing. Also contains software implementations of the Video Interface anti-aliasing and
* divot filters.
*/
#include "z64prerender.h"
#include "global.h"
#include "PR/gs2dex.h"
#include "libc/alloca.h"
#include "libc/stdbool.h"
#include "PR/gs2dex.h"
#include "global.h"
#include "color.h"
#include "macros.h"
#include "gfx.h"
#include "slowly.h"
#include "stack.h"
#include "stackcheck.h"
#include "prevent_bss_reordering.h"
/**
* Assigns the "save" values in PreRender
-1
View File
@@ -1,4 +1,3 @@
#include "global.h"
#include "libc64/sleep.h"
void func_80183070(void) {
+13 -13
View File
@@ -170,20 +170,20 @@ retry:
task->type = M_GFXTASK;
task->flags = OS_SC_DRAM_DLIST;
task->ucodeBoot = SysUcode_GetUCodeBoot();
task->ucodeBootSize = SysUcode_GetUCodeBootSize();
task->ucode_boot = SysUcode_GetUCodeBoot();
task->ucode_boot_size = SysUcode_GetUCodeBootSize();
task->ucode = SysUcode_GetUCode();
task->ucodeData = SysUcode_GetUCodeData();
task->ucodeSize = SP_UCODE_SIZE;
task->ucodeDataSize = SP_UCODE_DATA_SIZE;
task->dramStack = (u64*)gGfxSPTaskStack;
task->dramStackSize = sizeof(gGfxSPTaskStack);
task->outputBuff = gGfxSPTaskOutputBufferPtr;
task->outputBuffSize = (void*)gGfxSPTaskOutputBufferEnd;
task->dataPtr = (u64*)gGfxMasterDL;
task->dataSize = 0;
task->yieldDataPtr = (u64*)gGfxSPTaskYieldBuffer;
task->yieldDataSize = sizeof(gGfxSPTaskYieldBuffer);
task->ucode_data = SysUcode_GetUCodeData();
task->ucode_size = SP_UCODE_SIZE;
task->ucode_data_size = SP_UCODE_DATA_SIZE;
task->dram_stack = (u64*)gGfxSPTaskStack;
task->dram_stack_size = sizeof(gGfxSPTaskStack);
task->output_buff = gGfxSPTaskOutputBufferPtr;
task->output_buff_size = (void*)gGfxSPTaskOutputBufferEnd;
task->data_ptr = (u64*)gGfxMasterDL;
task->data_size = 0;
task->yield_data_ptr = (u64*)gGfxSPTaskYieldBuffer;
task->yield_data_size = sizeof(gGfxSPTaskYieldBuffer);
scTask->next = NULL;
scTask->flags = OS_SC_RCP_MASK | OS_SC_SWAPBUFFER | OS_SC_LAST_TASK;
+23 -11
View File
@@ -1,11 +1,16 @@
#include "scheduler.h"
#include "libc64/sleep.h"
#include "fault.h"
#include "idle.h"
#include "libc64/sleep.h"
#include "macros.h"
#include "regs.h"
#include "stackcheck.h"
#include "viconfig.h"
#include "z64speed_meter.h"
#include "z64thread.h"
// Variables are put before most headers as a hacky way to bypass bss reordering
FaultClient sSchedFaultClient;
OSTime sRSPGFXStartTime;
@@ -16,17 +21,24 @@ OSTime sRDPStartTime;
u64* gAudioSPDataPtr;
u32 gAudioSPDataSize;
#include "functions.h"
#include "stackcheck.h"
#include "z64speed_meter.h"
#include "z64thread.h"
#define RSP_DONE_MSG 667
#define RDP_DONE_MSG 668
#define NOTIFY_MSG 670
#define RDP_AUDIO_CANCEL_MSG 671
#define RSP_GFX_CANCEL_MSG 672
#define OS_SC_DP 0x0001
#define OS_SC_SP 0x0002
#define OS_SC_YIELD 0x0010
#define OS_SC_YIELDED 0x0020
#define OS_SC_XBUS (OS_SC_SP | OS_SC_DP)
#define OS_SC_DRAM (OS_SC_SP | OS_SC_DP | OS_SC_DRAM_DLIST)
#define OS_SC_DP_XBUS (OS_SC_SP)
#define OS_SC_DP_DRAM (OS_SC_SP | OS_SC_DRAM_DLIST)
#define OS_SC_SP_XBUS (OS_SC_DP)
#define OS_SC_SP_DRAM (OS_SC_DP | OS_SC_DRAM_DLIST)
/**
* Set the current framebuffer to the swapbuffer pointed to by the provided cfb
*/
@@ -193,7 +205,7 @@ halt_rdp:
if (dpTask->type == M_GFXTASK) {
// Try to stop DP
osSyncPrintf("DP止めようとします\n");
bzero(dpTask->outputBuff, (uintptr_t)dpTask->outputBuffSize - (uintptr_t)dpTask->outputBuff);
bzero(dpTask->output_buff, (uintptr_t)dpTask->output_buff_size - (uintptr_t)dpTask->output_buff);
osSendMesg(&sched->interruptQueue, (OSMesg)RDP_DONE_MSG, OS_MESG_NOBLOCK);
}
}
@@ -376,8 +388,8 @@ void Sched_RunTask(Scheduler* sched, OSScTask* spTask, OSScTask* dpTask) {
if (spTask->list.t.type == M_AUDTASK) {
// Set global pointers to audio task data for use in audio processing
gAudioSPDataPtr = spTask->list.t.dataPtr;
gAudioSPDataSize = spTask->list.t.dataSize;
gAudioSPDataPtr = spTask->list.t.data_ptr;
gAudioSPDataSize = spTask->list.t.data_size;
}
// Begin task execution
@@ -584,7 +596,7 @@ void Sched_FaultClient(void* arg0, void* arg1) {
spTask = sched->curRSPTask;
if (spTask != NULL) {
FaultDrawer_Printf("RSPTask %08x %08x %02x %02x\n%01x %08x %08x\n", spTask, spTask->next, spTask->state,
spTask->flags, spTask->list.t.type, spTask->list.t.dataPtr, spTask->list.t.dataSize);
spTask->flags, spTask->list.t.type, spTask->list.t.data_ptr, spTask->list.t.data_size);
}
dpTask = sched->curRDPTask;
+7 -8
View File
@@ -1,16 +1,15 @@
#include "prevent_bss_reordering.h"
#include "z64speed_meter.h"
#include "libc64/malloc.h"
#include "gfx.h"
#include "main.h"
#include "regs.h"
#include "sys_cfb.h"
#include "libc64/malloc.h"
#include "z64game.h"
#include "z64malloc.h"
#include "z64view.h"
#include "variables.h"
/**
* How much time the RSP ran audio tasks for over the course of `gGraphUpdatePeriod`.
*/
@@ -78,15 +77,15 @@ typedef struct {
#define gDrawRect(gfx, color, ulx, uly, lrx, lry) \
do { \
if (gSysCfbHiResEnabled == true) { \
u32 tmp = color; \
u32 c = color; \
gDPPipeSync(gfx); \
gDPSetFillColor(gfx, ((tmp) << 16) | (tmp)); \
gDPSetFillColor(gfx, ((c) << 16) | (c)); \
gDPFillRectangle(gfx, (ulx)*2, (uly)*2, (lrx)*2, (lry)*2); \
if (1) {} \
} else { \
u32 tmp = color; \
u32 c = color; \
gDPPipeSync(gfx); \
gDPSetFillColor(gfx, ((tmp) << 16) | (tmp)); \
gDPSetFillColor(gfx, ((c) << 16) | (c)); \
gDPFillRectangle(gfx, (ulx), (uly), (lrx), (lry)); \
} \
} while (0)
+40 -35
View File
@@ -77,43 +77,46 @@
*/
void Mtx_SetTranslateScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 translateX, f32 translateY,
f32 translateZ) {
Mtx* m = mtx;
struct {
u16 intPart[4][4];
u16 fracPart[4][4];
}* mu = (void*)mtx;
s32 fixedPoint;
m->m[0][1] = 0; // [i02, i03] == [0, 0]
m->m[2][1] = 0; // [f02, f03] == [0, 0]
m->m[0][3] = 0; // [i12, i13] == [0, 0]
m->m[2][3] = 0; // [f22, f23] == [0, 0]
m->m[1][0] = 0; // [i20, i21] == [0, 0]
//
fixedPoint = scaleX * 0x10000; //
m->m[0][0] = fixedPoint; // [i00, i01] == [scaleX.i, scaleX.f]; i01 is now "dirty"
m->intPart[0][1] = 0; // Clean i01 by zeroing it: [i00, i01] == [scaleX.i, 0]
m->m[2][0] = (u32)fixedPoint << 16; // [f00, f01] == [scaleX.f, 0]
//
fixedPoint = scaleY * 0x10000; //
m->m[0][2] = (u32)fixedPoint >> 16; // [i10, i11] == [0, scaleY.i]
m->m[2][2] = fixedPoint & 0xFFFF; // [f10, f11] == [0, scaleY.f]
//
fixedPoint = scaleZ * 0x10000; //
m->m[1][1] = fixedPoint; // [i22, i23] == [scaleZ.i, scaleZ.f]
m->intPart[2][3] = 0; // [i22, i23] == [scaleZ.i, 0]
m->m[3][1] = (u32)fixedPoint << 16; // [f22, f23] == [scaleZ.f, 0]
//
m->m[3][0] = 0; // [f20, f21] == [0, 0]
//
fixedPoint = translateX * 0x10000; //
m->intPart[3][0] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateX.i, ?]
m->fracPart[3][0] = fixedPoint & 0xFFFF; // [f30, f31] == [translateX.f, ?]
//
fixedPoint = translateY * 0x10000; //
m->intPart[3][1] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateX.i, translateY.i]
m->fracPart[3][1] = fixedPoint & 0xFFFF; // [f30, f31] == [translateX.f, translateY.f]
//
fixedPoint = translateZ * 0x10000; //
m->intPart[3][2] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateZ.i, ?]
m->intPart[3][3] = 1; // [i32, i33] == [translateZ.i, 1]
m->m[3][3] = (u32)fixedPoint << 16; // [f32, f33] == [translateZ.f, 0]
mtx->m[0][1] = 0; // [i02, i03] == [0, 0]
mtx->m[2][1] = 0; // [f02, f03] == [0, 0]
mtx->m[0][3] = 0; // [i12, i13] == [0, 0]
mtx->m[2][3] = 0; // [f22, f23] == [0, 0]
mtx->m[1][0] = 0; // [i20, i21] == [0, 0]
//
fixedPoint = scaleX * 0x10000; //
mtx->m[0][0] = fixedPoint; // [i00, i01] == [scaleX.i, scaleX.f]; i01 is now "dirty"
mu->intPart[0][1] = 0; // Clean i01 by zeroing it: [i00, i01] == [scaleX.i, 0]
mtx->m[2][0] = (u32)fixedPoint << 16; // [f00, f01] == [scaleX.f, 0]
//
fixedPoint = scaleY * 0x10000; //
mtx->m[0][2] = (u32)fixedPoint >> 16; // [i10, i11] == [0, scaleY.i]
mtx->m[2][2] = fixedPoint & 0xFFFF; // [f10, f11] == [0, scaleY.f]
//
fixedPoint = scaleZ * 0x10000; //
mtx->m[1][1] = fixedPoint; // [i22, i23] == [scaleZ.i, scaleZ.f]
mu->intPart[2][3] = 0; // [i22, i23] == [scaleZ.i, 0]
mtx->m[3][1] = (u32)fixedPoint << 16; // [f22, f23] == [scaleZ.f, 0]
//
mtx->m[3][0] = 0; // [f20, f21] == [0, 0]
//
fixedPoint = translateX * 0x10000; //
mu->intPart[3][0] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateX.i, ?]
mu->fracPart[3][0] = fixedPoint & 0xFFFF; // [f30, f31] == [translateX.f, ?]
//
fixedPoint = translateY * 0x10000; //
mu->intPart[3][1] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateX.i, translateY.i]
mu->fracPart[3][1] = fixedPoint & 0xFFFF; // [f30, f31] == [translateX.f, translateY.f]
//
fixedPoint = translateZ * 0x10000; //
mu->intPart[3][2] = ((u32)fixedPoint >> 16) & 0xFFFF; // [i30, i31] == [translateZ.i, ?]
mu->intPart[3][3] = 1; // [i32, i33] == [translateZ.i, 1]
mtx->m[3][3] = (u32)fixedPoint << 16; // [f32, f33] == [translateZ.f, 0]
// So we end up with
// [scaleX.i, 0], [0, 0],
@@ -159,6 +162,7 @@ void Mtx_SetTranslateScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32
*
* @remark Original name: probably something like "suMtxMakeR" or "suMtxMakeRotateVector"
*/
// TODO: Find a way to match without the intPart/fracPart union (see Mtx_SetTranslateScaleMtx)
void Mtx_SetRotationMtx(Mtx* mtx, s32 angle, f32 axisX, f32 axisY, f32 axisZ) {
//! FAKE? The somewhat peculiar distribution of temps in this function seems necessary to match?
f32 tempX;
@@ -275,6 +279,7 @@ void Mtx_SetRotationMtx(Mtx* mtx, s32 angle, f32 axisX, f32 axisY, f32 axisZ) {
* @remark Original name: probably something like "suMtxMakeSRT", although Animal Forest function is a Tait-Bryan
* rotation rather than axis-angle.
*/
// TODO: Find a way to match without the intPart/fracPart union (see Mtx_SetTranslateScaleMtx)
void Mtx_SetTranslationRotationScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s32 angle, f32 axisX, f32 axisY,
f32 axisZ, f32 translateX, f32 translateY, f32 translateZ) {
f32 tempX;
+6 -5
View File
@@ -1,12 +1,13 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "sys_flashrom.h"
#include "libc64/malloc.h"
#include "PR/os_internal_flash.h"
#include "fault.h"
#include "macros.h"
#include "stack.h"
#include "stackcheck.h"
#include "libc64/malloc.h"
#include "z64thread.h"
#include "sys_flashrom.h"
#include "PR/os_internal_flash.h"
OSMesgQueue sFlashromMesgQueue;
OSMesg sFlashromMesg[1];
+5 -2
View File
@@ -38,9 +38,12 @@
* Throughout this file, `mode` indicates whether to multiply the matrix on top of the stack by the new construction
* (APPLY), or to just overwrite it (NEW).
*/
#include "sys_matrix.h"
#include "prevent_bss_reordering.h"
#include "global.h"
#include "gfx.h"
#include "macros.h"
#include "z64game.h"
#include "z64skin_matrix.h"
/* data */
+23 -23
View File
@@ -2,35 +2,20 @@
* File: z_actor.c
* Description:
*/
#include "z64actor.h"
#include "prevent_bss_reordering.h"
#include "fault.h"
#include "sys_cfb.h"
#include "loadfragment.h"
#include "z64horse.h"
#include "z64malloc.h"
#include "z64quake.h"
#include "z64rumble.h"
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
#include "overlays/actors/ovl_En_Part/z_en_part.h"
#include "overlays/actors/ovl_En_Box/z_en_box.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "objects/object_bdoor/object_bdoor.h"
// bss
// Variables are put before most headers as a hacky way to bypass bss reordering
FaultClient sActorFaultClient; // 2 funcs
CollisionPoly* D_801ED8B0; // 1 func
s32 D_801ED8B4; // 2 funcs
struct CollisionPoly* D_801ED8B0; // 1 func
s32 D_801ED8B4; // 2 funcs
Actor* sTargetableNearestActor;
Actor* sTargetablePrioritizedActor;
Actor* D_801ED8C0;
Actor* D_801ED8C4;
struct Actor* sTargetableNearestActor;
struct Actor* sTargetablePrioritizedActor;
struct Actor* D_801ED8C0;
struct Actor* D_801ED8C4;
f32 sTargetableNearestActorDistSq;
f32 sBgmEnemyDistSq;
@@ -41,7 +26,22 @@ s16 sTargetPlayerRotY;
Mtx sActorHiliteMtx;
Actor* D_801ED920; // 2 funcs. 1 out of z_actor
struct Actor* D_801ED920; // 2 funcs. 1 out of z_actor
#include "z64actor.h"
#include "z64horse.h"
#include "z64malloc.h"
#include "z64quake.h"
#include "z64rumble.h"
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
#include "overlays/actors/ovl_En_Part/z_en_part.h"
#include "overlays/actors/ovl_En_Box/z_en_box.h"
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "objects/object_bdoor/object_bdoor.h"
#define ACTOR_AUDIO_FLAG_SFX_ACTOR_POS (1 << 0)
#define ACTOR_AUDIO_FLAG_SFX_CENTERED_1 (1 << 1)
-1
View File
@@ -1,4 +1,3 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "fault.h"
+6 -1
View File
@@ -1,8 +1,13 @@
#include "prevent_bss_reordering.h"
#include "fault.h"
#include "z64bgcheck.h"
#include "libc64/fixed_point.h"
#include "libc64/sprintf.h"
#include "fault.h"
#include "vt.h"
#include "z64actor.h"
#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h"
#define DYNA_RAYCAST_FLOORS 1
-1
View File
@@ -1,4 +1,3 @@
#include "prevent_bss_reordering.h"
#include "z64collision_check.h"
#include "z64actor.h"
+4 -4
View File
@@ -53,10 +53,10 @@ void Jpeg_ScheduleDecoderTask(JpegContext* jpegCtx) {
workBuf->taskData.qTableVPtr = &workBuf->qTableV;
sJpegTask.flags = 0;
sJpegTask.ucodeBoot = SysUcode_GetUCodeBoot();
sJpegTask.ucodeBootSize = SysUcode_GetUCodeBootSize();
sJpegTask.yieldDataPtr = (u64*)&workBuf->yieldData;
sJpegTask.dataPtr = (u64*)&workBuf->taskData;
sJpegTask.ucode_boot = SysUcode_GetUCodeBoot();
sJpegTask.ucode_boot_size = SysUcode_GetUCodeBootSize();
sJpegTask.yield_data_ptr = (u64*)&workBuf->yieldData;
sJpegTask.data_ptr = (u64*)&workBuf->taskData;
jpegCtx->scTask.next = NULL;
jpegCtx->scTask.flags = OS_SC_NEEDS_RSP;
+8 -5
View File
@@ -1,12 +1,15 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "z64message.h"
#include "message_data_static.h"
#include "padmgr.h"
#include "z64actor.h"
#include "z64horse.h"
#include "z64shrink_window.h"
#include "z64view.h"
#include "message_data_static.h"
#include "interface/parameter_static/parameter_static.h"
#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h"
#include "interface/parameter_static/parameter_static.h"
u8 D_801C6A70 = 0;
s16 sOcarinaButtonIndexBufPos = 0;
s16 sOcarinaButtonIndexBufLen = 0;
+4 -3
View File
@@ -1,7 +1,8 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "libc/string.h"
#include "z64quake.h"
#include "libc/string.h"
#include "global.h"
#include "z64view.h"
typedef struct {
-1
View File
@@ -1,4 +1,3 @@
#include "prevent_bss_reordering.h"
#include "global.h"
s32 sMatAnimStep;
+4 -3
View File
@@ -2,11 +2,12 @@
* File: z_shrink_window.c
* Description: Draws black top/bottom/side borders on the viewing window (e.g. Z-targeting, talking to NPC)
*/
#include "prevent_bss_reordering.h"
#include "global.h"
#include "z64shrink_window.h"
#include "gfx.h"
#include "main.h"
#include "z64math.h"
typedef struct {
/* 0x0 */ s8 letterboxTarget;
/* 0x1 */ s8 letterboxSize;
+7 -2
View File
@@ -1,7 +1,12 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "z64skin.h"
#include "libc/stdbool.h"
#include "global.h"
#include "gfx.h"
#include "sys_matrix.h"
#include "z64actor.h"
// 60 is an arbitrary number which specifies the max amount of limbs per skeleton this system supports
MtxF gSkinLimbMatrices[60];