mirror of
https://gitlab.com/banjo.decomp/banjo-kazooie
synced 2026-09-07 02:49:46 -04:00
documentation: defragmanager.c
This commit is contained in:
@@ -127,4 +127,17 @@ void toggleTextureFilterPoint(void);
|
||||
void getGraphicsStacks(Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||
void dummy_func_80254464(void);
|
||||
|
||||
/* src/core1/defragmanager.c */
|
||||
|
||||
#define DEFRAGMANAGER_THREAD_STACK_SIZE 2048
|
||||
#define DEFRAGMANAGER_THREAD_ID 2
|
||||
#define DEFRAGMANAGER_THREAD_PRIORITY 10
|
||||
#define DEFRAGMANAGER_THREAD_PRIORITY_HIGH 30
|
||||
|
||||
void defragManager_init(void);
|
||||
void defragManager_free(void);
|
||||
void defragManager_resume(void);
|
||||
void defragManager_pause(void);
|
||||
void defragManager_setPriority(OSPri pri);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -513,4 +513,6 @@ extern void baflag_toggle(enum misc_flag_e arg0);
|
||||
|
||||
extern void piMgr_read(void *vaddr, s32 devaddr, s32 size);
|
||||
|
||||
s32 game_defrag(void);
|
||||
|
||||
#endif
|
||||
|
||||
+31
-34
@@ -1,59 +1,56 @@
|
||||
#include <ultra64.h>
|
||||
#include "core1/core1.h"
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
#define DEFRAG_THREAD_STACK_SIZE 0x800
|
||||
static void defragThread_entry(void *args);
|
||||
|
||||
void defragThread_entry(void *arg);
|
||||
static OSMesgQueue sDefragThreadResumeSyncQueue;
|
||||
static OSMesg sDefragThreadResumeSyncMesg;
|
||||
static OSMesgQueue sDefragThreadPauseSyncQueue;
|
||||
static OSMesg sDefragThreadPauseSyncMesg;
|
||||
static OSThread sDefragThread;
|
||||
static u8 sDefragThreadStack[DEFRAGMANAGER_THREAD_STACK_SIZE];
|
||||
|
||||
OSMesgQueue D_8027E120;
|
||||
OSMesg D_8027E138;
|
||||
OSMesgQueue D_8027E140;
|
||||
OSMesg D_8027E158;
|
||||
OSThread sDefragThread;
|
||||
u8 sDefragThreadStack[0x800];
|
||||
|
||||
/* .code */
|
||||
void defragManager_init(void){
|
||||
osCreateMesgQueue(&D_8027E120, &D_8027E138, 1);
|
||||
osCreateMesgQueue(&D_8027E140, &D_8027E158, 1);
|
||||
osCreateThread(&sDefragThread, 2, defragThread_entry, NULL, sDefragThreadStack + DEFRAG_THREAD_STACK_SIZE, 10);
|
||||
void defragManager_init(void) {
|
||||
osCreateMesgQueue(&sDefragThreadResumeSyncQueue, &sDefragThreadResumeSyncMesg, 1);
|
||||
osCreateMesgQueue(&sDefragThreadPauseSyncQueue, &sDefragThreadPauseSyncMesg, 1);
|
||||
osCreateThread(&sDefragThread, DEFRAGMANAGER_THREAD_ID, defragThread_entry, NULL, sDefragThreadStack + DEFRAGMANAGER_THREAD_STACK_SIZE, DEFRAGMANAGER_THREAD_PRIORITY);
|
||||
osStartThread(&sDefragThread);
|
||||
}
|
||||
|
||||
void defragManager_free(void){
|
||||
void defragManager_free(void) {
|
||||
osStopThread(&sDefragThread);
|
||||
osDestroyThread(&sDefragThread);
|
||||
}
|
||||
|
||||
void defragManager_80240874(void){
|
||||
if(func_8023E000() == 3){
|
||||
osSendMesg(&D_8027E120, NULL, OS_MESG_BLOCK);
|
||||
void defragManager_resume(void) {
|
||||
if (func_8023E000() == 3) {
|
||||
osSendMesg(&sDefragThreadResumeSyncQueue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void defragManager_802408B0(void){
|
||||
if(func_8023E000() == 3){
|
||||
osSendMesg(&D_8027E140, NULL, OS_MESG_BLOCK);
|
||||
void defragManager_pause(void) {
|
||||
if (func_8023E000() == 3) {
|
||||
osSendMesg(&sDefragThreadPauseSyncQueue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void defragManager_setPriority(OSPri pri){
|
||||
if(func_8023E000() == 3){
|
||||
void defragManager_setPriority(OSPri pri) {
|
||||
if (func_8023E000() == 3) {
|
||||
osSetThreadPri(&sDefragThread, pri);
|
||||
}
|
||||
}
|
||||
|
||||
void defragThread_entry(void *arg) {
|
||||
int tmp_v0;
|
||||
do{
|
||||
osRecvMesg(&D_8027E120, NULL, OS_MESG_BLOCK);
|
||||
if(!D_8027E140.validCount){
|
||||
do{
|
||||
tmp_v0 = game_defrag();
|
||||
}while(!D_8027E140.validCount && tmp_v0);
|
||||
static void defragThread_entry(void *args) {
|
||||
s32 defrag_flag;
|
||||
|
||||
do {
|
||||
osRecvMesg(&sDefragThreadResumeSyncQueue, NULL, OS_MESG_BLOCK);
|
||||
if (sDefragThreadPauseSyncQueue.validCount == 0) {
|
||||
do {
|
||||
defrag_flag = game_defrag();
|
||||
} while ((sDefragThreadPauseSyncQueue.validCount == 0) && defrag_flag);
|
||||
}
|
||||
osRecvMesg(&D_8027E140, NULL, OS_MESG_BLOCK);
|
||||
}while(1);
|
||||
osRecvMesg(&sDefragThreadPauseSyncQueue, NULL, OS_MESG_BLOCK);
|
||||
} while(1);
|
||||
}
|
||||
|
||||
+4
-4
@@ -165,8 +165,8 @@ void viMgr_func_8024BFD8(s32 arg0){
|
||||
static s32 D_80280E90;
|
||||
|
||||
osSetThreadPri(NULL, 0x7f);
|
||||
defragManager_setPriority(0x1E);
|
||||
defragManager_80240874();
|
||||
defragManager_setPriority(DEFRAGMANAGER_THREAD_PRIORITY_HIGH);
|
||||
defragManager_resume();
|
||||
if(arg0){
|
||||
osRecvMesg(&sMesgQueue2, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
@@ -187,9 +187,9 @@ void viMgr_func_8024BFD8(s32 arg0){
|
||||
}//L8024C178
|
||||
D_80280724 = D_802808D8;
|
||||
D_802808D8 = 0;
|
||||
defragManager_802408B0();
|
||||
defragManager_pause();
|
||||
osSetThreadPri(NULL, 0x14);
|
||||
defragManager_setPriority(0xA);
|
||||
defragManager_setPriority(DEFRAGMANAGER_THREAD_PRIORITY);
|
||||
}
|
||||
|
||||
void viMgr_func_8024C1B4(void){
|
||||
|
||||
Reference in New Issue
Block a user