Files
tww/include/dolphin/gba/GBAPriv.h
T
2025-01-26 20:52:18 -05:00

80 lines
2.0 KiB
C

#ifndef _DOLPHIN_GBAPRIV
#define _DOLPHIN_GBAPRIV
#include "dolphin/dsp.h"
#include "dolphin/gba/GBA.h"
#include "dolphin/os/OS.h"
#include "global.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*GBATransferCallback)(s32 chan);
typedef struct GBASecParam {
/* 0x00 */ u8 readbuf[4];
/* 0x04 */ s32 paletteColor;
/* 0x08 */ s32 paletteSpeed;
/* 0x0C */ s32 length;
/* 0x10 */ u32* out;
/* 0x14 */ u8 _padding0[12];
/* 0x20 */ u32 keyA;
/* 0x24 */ s32 keyB;
/* 0x28 */ u8 _padding1[24];
} GBASecParam ALIGN_DECL(32); // Size: 0x40
typedef struct GBABootInfo {
/* 0x00 */ s32 paletteColor;
/* 0x04 */ s32 paletteSpeed;
/* 0x08 */ u8* programp;
/* 0x0C */ s32 length;
/* 0x10 */ u8* status;
/* 0x14 */ GBACallback callback;
/* 0x18 */ u8 readbuf[4];
/* 0x1C */ u8 writebuf[4];
/* 0x20 */ int i;
/* 0x24 */ OSTick start;
/* 0x28 */ OSTime begin;
/* 0x30 */ int firstXfer;
/* 0x34 */ int curOffset;
/* 0x38 */ u32 crc;
/* 0x3C */ u32 dummyWord[7];
/* 0x58 */ u32 keyA;
/* 0x5C */ s32 keyB;
/* 0x60 */ u32 initialCode;
/* 0x64 */ int realLength;
} GBABootInfo; // Size: 0x68
typedef struct GBAControl {
/* 0x000 */ u8 output[5];
/* 0x005 */ u8 input[5];
/* 0x00C */ s32 outputBytes;
/* 0x010 */ s32 inputBytes;
/* 0x014 */ u8* status;
/* 0x018 */ u8* ptr;
/* 0x01C */ GBACallback callback;
/* 0x020 */ s32 ret;
/* 0x024 */ OSThreadQueue threadQueue;
/* 0x030 */ OSTime delay;
/* 0x038 */ GBATransferCallback proc;
/* 0x040 */ GBABootInfo bootInfo;
/* 0x0A8 */ DSPTaskInfo task;
/* 0x0F8 */ GBASecParam* param;
} GBAControl; // Size: 0x100
extern GBAControl __GBA[4];
extern BOOL __GBAReset;
void __GBAHandler(s32 chan, u32 error, OSContext* context);
void __GBASyncCallback(s32 chan, s32 ret);
s32 __GBASync(s32 chan);
OSTime __GBASetDelay(s32 chan, OSTime delay);
s32 __GBATransfer(s32 chan, s32 w1, s32 w2, GBATransferCallback callback);
#ifdef __cplusplus
}
#endif
#endif // _DOLPHIN_GBAPRIV