mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-04 19:25:43 -04:00
cd401d41d6
* 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
313 lines
8.8 KiB
C++
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);
|
|
}
|