mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
86 lines
2.6 KiB
C
86 lines
2.6 KiB
C
#ifndef GBAPRIV
|
|
#define GBAPRIV
|
|
|
|
#include "types.h"
|
|
|
|
#include "GBA/gba.h"
|
|
#include "dolphin/os.h"
|
|
#include "dolphin/dsp.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef void (*GBATransferCallback)(s32 chan);
|
|
|
|
typedef struct GBASecParam {
|
|
// total size: 0x40
|
|
u8 readbuf[4]; // offset 0x0, size 0x4
|
|
s32 paletteColor; // offset 0x4, size 0x4
|
|
s32 paletteSpeed; // offset 0x8, size 0x4
|
|
s32 length; // offset 0xC, size 0x4
|
|
u32* out; // offset 0x10, size 0x4
|
|
u8 _padding0[12]; // offset 0x14, size 0xC
|
|
u32 keyA; // offset 0x20, size 0x4
|
|
s32 keyB; // offset 0x24, size 0x4
|
|
u8 _padding1[24]; // offset 0x28, size 0x18
|
|
} GBASecParam;
|
|
|
|
typedef struct GBABootInfo {
|
|
// total size: 0x68
|
|
s32 paletteColor; // offset 0x0, size 0x4
|
|
s32 paletteSpeed; // offset 0x4, size 0x4
|
|
u8* programp; // offset 0x8, size 0x4
|
|
s32 length; // offset 0xC, size 0x4
|
|
u8* status; // offset 0x10, size 0x4
|
|
GBACallback callback; // offset 0x14, size 0x4
|
|
u8 readbuf[4]; // offset 0x18, size 0x4
|
|
u8 writebuf[4]; // offset 0x1C, size 0x4
|
|
int i; // offset 0x20, size 0x4
|
|
OSTick start; // offset 0x24, size 0x4
|
|
OSTime begin; // offset 0x28, size 0x8
|
|
BOOL firstXfer; // offset 0x30, size 0x4
|
|
int curOffset; // offset 0x34, size 0x4
|
|
u32 crc; // offset 0x38, size 0x4
|
|
u32 dummyWord[7]; // offset 0x3C, size 0x1C
|
|
u32 keyA; // offset 0x58, size 0x4
|
|
s32 keyB; // offset 0x5C, size 0x4
|
|
u32 initialCode; // offset 0x60, size 0x4
|
|
int realLength; // offset 0x64, size 0x4
|
|
} GBABootInfo;
|
|
|
|
typedef struct GBAControl {
|
|
// total size: 0x100
|
|
u8 output[5]; // offset 0x0, size 0x5
|
|
u8 input[5]; // offset 0x5, size 0x5
|
|
u32 outputBytes; // offset 0xC, size 0x4
|
|
u32 inputBytes; // offset 0x10, size 0x4
|
|
u8* status; // offset 0x14, size 0x4
|
|
void* ptr; // offset 0x18, size 0x4
|
|
GBACallback callback; // offset 0x1C, size 0x4
|
|
s32 ret; // offset 0x20, size 0x4
|
|
OSThreadQueue threadQueue; // offset 0x24, size 0x8
|
|
OSTime delay; // offset 0x30, size 0x8
|
|
GBATransferCallback proc; // offset 0x38, size 0x4
|
|
GBABootInfo bootInfo; // offset 0x40, size 0x68
|
|
DSPTaskInfo task; // offset 0xA8, size 0x50
|
|
GBASecParam * param; // offset 0xF8, size 0x4
|
|
} GBAControl;
|
|
|
|
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, u32 outputBytes, u32 inputBytes, GBATransferCallback proc);
|
|
void __GBAX01(s32 chan, s32 ret);
|
|
// void __GBAX02(s32 chan, u8* readbuf);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|