Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions config/GM8E01_00/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15545,7 +15545,7 @@ GXSetTexCoordGen2 = .text:0x80377F94; // type:function size:0x2D0 scope:global
GXSetNumTexGens = .text:0x80378264; // type:function size:0x40 scope:global
GXSetMisc = .text:0x803782A4; // type:function size:0x6C scope:global
GXFlush = .text:0x80378310; // type:function size:0x5C scope:global
fn_8037836C = .text:0x8037836C; // type:function size:0xB4
GXAbortFrame = .text:0x8037836C; // type:function size:0xB4
GXSetDrawSync = .text:0x80378420; // type:function size:0xB8 scope:global
GXReadDrawSync = .text:0x803784D8; // type:function size:0xC scope:global
GXDrawDone = .text:0x803784E4; // type:function size:0x80 scope:global
Expand Down Expand Up @@ -22216,10 +22216,10 @@ lbl_805A9858 = .sbss:0x805A9858; // type:object size:0x4 data:4byte
lbl_805A985C = .sbss:0x805A985C; // type:object size:0x4 data:4byte
lbl_805A9860 = .sbss:0x805A9860; // type:object size:0x4 data:4byte
lbl_805A9864 = .sbss:0x805A9864; // type:object size:0x4 data:4byte
lbl_805A9868 = .sbss:0x805A9868; // type:object size:0x4 data:4byte
lbl_805A986C = .sbss:0x805A986C; // type:object size:0x4 data:4byte
lbl_805A9870 = .sbss:0x805A9870; // type:object size:0x1 data:byte
lbl_805A9874 = .sbss:0x805A9874; // type:object size:0xC
TokenCB = .sbss:0x805A9868; // type:object size:0x4 data:4byte
DrawDoneCB = .sbss:0x805A986C; // type:object size:0x4 data:4byte
DrawDone = .sbss:0x805A9870; // type:object size:0x1 data:byte
FinishQueue = .sbss:0x805A9874; // type:object size:0xC
BootInfo = .sbss:0x805A9880; // type:object size:0x4 scope:local data:4byte
BI2DebugFlag = .sbss:0x805A9884; // type:object size:0x4 scope:local data:4byte
BI2DebugFlagHolder = .sbss:0x805A9888; // type:object size:0x4 scope:local data:4byte
Expand Down
1 change: 1 addition & 0 deletions include/dolphin/gx.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include <dolphin/gx/GXEnum.h>
#include <dolphin/gx/GXStruct.h>

#include <dolphin/gx/GXRegs.h>
#include <dolphin/gx/GXBump.h>
#include <dolphin/gx/GXCommandList.h>
#include <dolphin/gx/GXCull.h>
Expand Down
1 change: 1 addition & 0 deletions include/dolphin/gx/GXManage.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
extern "C" {
#endif

typedef void (*GXDrawSyncCallback)(u16 token);
typedef void (*GXDrawDoneCallback)(void);

GXFifoObj* GXInit(void* base, u32 size);
Expand Down
5 changes: 5 additions & 0 deletions include/dolphin/gx/GXPriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,11 @@ void __GXInitGX();
}
#endif

#define SET_REG_FIELD(reg, size, shift, val) \
do { \
(reg) = ((u32)(reg) & ~(((1 << (size)) - 1) << (shift))) | ((u32)(val) << (shift)); \
} while (0)

#define GX_BITFIELD(field, pos, size, value) (__rlwimi((field), (value), 31 - (pos) - (size) + 1, (pos), (pos) + (size) - 1))
#define GX_BITFIELD_SET(field, pos, size, value) ((field) = GX_BITFIELD(field, pos, size, value))

Expand Down
42 changes: 42 additions & 0 deletions include/dolphin/gx/GXRegs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#ifndef _DOLPHIN_GXREGS
#define _DOLPHIN_GXREGS

#include <dolphin/types.h>

#ifdef __cplusplus
extern "C" {
#endif

extern u16 *__memReg;
extern u16 *__peReg;
extern u16 *__cpReg;
extern u32 *__piReg;

#define GX_GET_CP_REG(offset) (*(volatile u16*)((__cpReg) + (offset)))
#define GX_SET_CP_REG(offset, value) ((*(volatile u16*)((__cpReg) + (offset))) = (value))

inline u32 __GXReadCPCounterU32(u32 regAddrL, u32 regAddrH)
{
u32 ctrH0;
u32 ctrH1;
u32 ctrL;

ctrH0 = GX_GET_CP_REG(regAddrH);
while (TRUE) {
ctrH1 = ctrH0;
ctrL = GX_GET_CP_REG(regAddrL);
ctrH0 = GX_GET_CP_REG(regAddrH);

if (ctrH0 == ctrH1) {
break;
}
}

return (ctrH0 << 16) | (ctrL);
}

#ifdef __cplusplus
}
#endif

#endif
Loading
Loading