Files
dusklight/libs/dolphin/gx/GXFifo.cpp
T
TakaRikka cd401d41d6 j2d / map_path work, d_drawlist / d_attention cleanup (#208)
* work on fop actor / actor mng, daalink, d_a_obj_item

* d_a_title mostly decompiled

* daalink / d_event / JMessage / dmsg_out_font work

* msg_scrn_base / msg_scrn_boss

* some work on mDo machine, d_menu_save, d_tresure, and various

* remove asm

* progress

* finish d_menu_save / d_pane_class_alpha / d_pane_class / rename some data

* rename more data

* remove asm / progress

* match all of d_pane_class

* fixes / some dKankyo doc

* bunch of j2d work. d_drawlist / d_attention cleanup

* progress / asm

* cleanup wip

* decompile JStage

* setup some more JStudio structs

* set up d_demo classes

* some d_demo work

* cleanup dolphin os stuff

* some initial dEvent documentation

* some At collision documentation

* match JUTConsole::doDraw

* dbgs work / split up some of d_a_alink into .inc files

* d_a_alink_spinner work
2022-08-30 15:22:17 -06:00

313 lines
8.8 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: GXFifo
//
#include "dolphin/gx/GXFifo.h"
#include "dolphin/gx/GX.h"
#include "dolphin/os/OS.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" static void GXCPInterruptHandler(OSInterrupt, OSContext* ctx);
extern "C" static void GXInitFifoLimits(void);
extern "C" void GXSetCPUFifo(void);
extern "C" void GXSetGPFifo(void);
extern "C" void __GXSaveCPUFifoAux(void);
extern "C" void GXSetBreakPtCallback(void);
extern "C" void __GXFifoInit(void);
extern "C" void __GXFifoReadEnable(void);
extern "C" void __GXFifoReadDisable(void);
extern "C" void __GXFifoLink(u8);
extern "C" void __GXWriteFifoIntEnable(u8, u8);
extern "C" void __GXWriteFifoIntReset(u8, u8);
extern "C" void __GXCleanGPFifo(void);
extern "C" u32 GXGetGPFifo(void);
//
// External References:
//
extern "C" void PPCSync(void);
extern "C" void OSSetCurrentContext(OSContext*);
extern "C" void OSClearContext(OSContext*);
extern "C" void GXFlush(void);
//
// Declarations:
//
/* ############################################################################################## */
/* 80451948-8045194C 000E48 0004+00 4/3 0/0 0/0 .sbss CPUFifo */
static GXFifoObj* CPUFifo;
/* 8045194C-80451950 000E4C 0004+00 4/3 0/0 0/0 .sbss GPFifo */
static GXFifoObj* GPFifo;
/* 80451950-80451954 000E50 0004+00 4/3 0/0 0/0 .sbss __GXCurrentThread */
static OSThread* __GXCurrentThread;
/* 80451954-80451958 000E54 0004+00 3/3 0/0 0/0 .sbss None */
static u8 data_80451954[4];
/* 80451958-8045195C 000E58 0004+00 2/2 0/0 0/0 .sbss GXOverflowSuspendInProgress */
static u32 GXOverflowSuspendInProgress;
/* 8045195C-80451960 000E5C 0004+00 2/2 0/0 0/0 .sbss BreakPointCB */
static void (*BreakPointCB)(void);
/* 80451960-80451968 000E60 0004+04 1/1 0/0 0/0 .sbss __GXOverflowCount */
static u32 __GXOverflowCount;
/* 8035A5A8-8035A6DC 354EE8 0134+00 1/1 0/0 0/0 .text GXCPInterruptHandler */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void GXCPInterruptHandler(OSInterrupt, OSContext* ctx) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXCPInterruptHandler.s"
}
#pragma pop
/* static void GXCPInterruptHandler(__OSInterrupt, OSContext* ctx) {
OSContext sp10;
__GXData->field_0xc = __cpReg[0];
if (((__GXData->field_0x8 >> 3) & 1) && ((__GXData->field_0xc >> 1) & 1)) {
OSResumeThread(__GXCurrentThread);
GXOverflowSuspendInProgress = 0;
__GXWriteFifoIntReset(1, 1);
__GXWriteFifoIntEnable(1, 0);
}
if (((__GXData->field_0x8 >> 2) & 1) && (__GXData->field_0xc & 1)) {
__GXOverflowCount++;
__GXWriteFifoIntEnable(0, 1);
__GXWriteFifoIntReset(1, 0);
GXOverflowSuspendInProgress = 1;
OSSuspendThread(__GXCurrentThread);
}
if (((__GXData->field_0x8 >> 5) & 1) && ((__GXData->field_0xc >> 4) & 1)) {
__GXData->field_0x8 = __GXData->field_0x8 & ~(1 << 5);
__cpReg[1] = __GXData->field_0x8;
if (BreakPointCB != NULL) {
OSClearContext(&sp10);
OSSetCurrentContext(&sp10);
BreakPointCB();
OSClearContext(&sp10);
OSSetCurrentContext(ctx);
}
}
} */
/* 8035A6DC-8035A748 35501C 006C+00 0/0 2/2 0/0 .text GXInitFifoBase */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXInitFifoBase(GXFifoObj*, void*, u32) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXInitFifoBase.s"
}
#pragma pop
/* 8035A748-8035A7B8 355088 0070+00 1/1 1/1 0/0 .text GXInitFifoPtrs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXInitFifoPtrs(GXFifoObj*, void*, void*) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXInitFifoPtrs.s"
}
#pragma pop
/* 8035A7B8-8035A7C4 3550F8 000C+00 1/1 0/0 0/0 .text GXInitFifoLimits */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void GXInitFifoLimits(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXInitFifoLimits.s"
}
#pragma pop
/* 8035A7C4-8035A8EC 355104 0128+00 1/1 1/1 0/0 .text GXSetCPUFifo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetCPUFifo(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXSetCPUFifo.s"
}
#pragma pop
/* 8035A8EC-8035AA8C 35522C 01A0+00 1/1 1/1 0/0 .text GXSetGPFifo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetGPFifo(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXSetGPFifo.s"
}
#pragma pop
/* 8035AA8C-8035AAC0 3553CC 0034+00 0/0 1/1 0/0 .text GXSaveCPUFifo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSaveCPUFifo(GXFifoObj*) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXSaveCPUFifo.s"
}
#pragma pop
/* 8035AAC0-8035AB88 355400 00C8+00 1/1 0/0 0/0 .text __GXSaveCPUFifoAux */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXSaveCPUFifoAux(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXSaveCPUFifoAux.s"
}
#pragma pop
/* 8035AB88-8035ABD8 3554C8 0050+00 0/0 2/2 0/0 .text GXGetGPStatus */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXGetGPStatus(GXBool*, GXBool*, GXBool*, GXBool*, GXBool*) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXGetGPStatus.s"
}
#pragma pop
/* 8035ABD8-8035ABE0 355518 0008+00 0/0 1/1 0/0 .text GXGetFifoBase */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void* GXGetFifoBase(GXFifoObj*) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXGetFifoBase.s"
}
#pragma pop
/* 8035ABE0-8035ABE8 355520 0008+00 0/0 1/1 0/0 .text GXGetFifoSize */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 GXGetFifoSize(GXFifoObj*) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXGetFifoSize.s"
}
#pragma pop
/* 8035ABE8-8035AC2C 355528 0044+00 0/0 1/1 0/0 .text GXSetBreakPtCallback */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void GXSetBreakPtCallback(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXSetBreakPtCallback.s"
}
#pragma pop
/* 8035AC2C-8035AC78 35556C 004C+00 0/0 1/1 0/0 .text __GXFifoInit */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXFifoInit(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXFifoInit.s"
}
#pragma pop
/* 8035AC78-8035AC9C 3555B8 0024+00 1/1 0/0 0/0 .text __GXFifoReadEnable */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXFifoReadEnable(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXFifoReadEnable.s"
}
#pragma pop
/* 8035AC9C-8035ACC0 3555DC 0024+00 1/1 0/0 0/0 .text __GXFifoReadDisable */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXFifoReadDisable(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXFifoReadDisable.s"
}
#pragma pop
/* 8035ACC0-8035ACF4 355600 0034+00 2/2 0/0 0/0 .text __GXFifoLink */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXFifoLink(u8) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXFifoLink.s"
}
#pragma pop
/* 8035ACF4-8035AD24 355634 0030+00 3/3 0/0 0/0 .text __GXWriteFifoIntEnable */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXWriteFifoIntEnable(u8, u8) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXWriteFifoIntEnable.s"
}
#pragma pop
/* 8035AD24-8035AD54 355664 0030+00 3/3 0/0 0/0 .text __GXWriteFifoIntReset */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXWriteFifoIntReset(u8, u8) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXWriteFifoIntReset.s"
}
#pragma pop
/* 8035AD54-8035AE54 355694 0100+00 0/0 1/1 0/0 .text __GXCleanGPFifo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __GXCleanGPFifo(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/__GXCleanGPFifo.s"
}
#pragma pop
/* 8035AE54-8035AEA0 355794 004C+00 0/0 1/1 0/0 .text GXSetCurrentGXThread */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm OSThread* GXSetCurrentGXThread(void) {
nofralloc
#include "asm/dolphin/gx/GXFifo/GXSetCurrentGXThread.s"
}
#pragma pop
/* 8035AEA0-8035AEA8 -00001 0008+00 0/0 0/0 0/0 .text GXGetCurrentGXThread */
OSThread* GXGetCurrentGXThread(void) {
return *(OSThread**)(&__GXCurrentThread);
}
/* 8035AEA8-8035AEB0 -00001 0008+00 0/0 0/0 0/0 .text GXGetCPUFifo */
GXFifoObj* GXGetCPUFifo(void) {
return *(GXFifoObj**)(&CPUFifo);
}
/* 8035AEB0-8035AEB8 -00001 0008+00 0/0 0/0 0/0 .text GXGetGPFifo */
u32 GXGetGPFifo(void) {
return *(u32*)(&GPFifo);
}