diff options
author | mrb0nk500 <b0nk@b0nk.xyz> | 2023-02-01 18:45:02 -0400 |
---|---|---|
committer | mrb0nk500 <b0nk@b0nk.xyz> | 2023-02-01 18:50:25 -0400 |
commit | 9fa0a7f1da1b70bee995f53c6c96c43189018772 (patch) | |
tree | 114548896790eaff23cdca84a025281de86bbb51 /src/Dolphin/GBA/GBAWrite.c | |
parent | 2ba3289286bbfcf9fcc13fd135d976058d8b6c2e (diff) |
global: Import Dolphin SDK
This version comes from the Metroid Prime decompilation project.
https://github.com/PrimeDecomp/prime
Diffstat (limited to 'src/Dolphin/GBA/GBAWrite.c')
-rw-r--r-- | src/Dolphin/GBA/GBAWrite.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/Dolphin/GBA/GBAWrite.c b/src/Dolphin/GBA/GBAWrite.c new file mode 100644 index 0000000..f040f92 --- /dev/null +++ b/src/Dolphin/GBA/GBAWrite.c @@ -0,0 +1,42 @@ +#include "dolphin/GBAPriv.h" + +void WriteProc(s32 chan) { + GBA* gba; + gba = &__GBA[chan]; + + if (gba->result != 0) { + return; + } + + gba->status[0] = gba->dst[0] & GBA_JSTAT_MASK; +} + +s32 GBAWriteAsync(s32 chan, u8* src, u8* status, GBACallback callback) { + GBA* gba; + s32 ret; + gba = &__GBA[chan]; + + if (gba->callback != NULL) { + ret = GBA_BUSY; + } else { + gba->command = 0x15; + memcpy(gba->src, src, 4); + gba->buffer = src; + gba->status = status; + gba->callback = callback; + ret = __GBATransfer(chan, 5, 1, WriteProc); + } + + return ret; +} + + +s32 GBAWrite(s32 chan, u8* src, u8* status) { + s32 ret; + s32 tmp; + ret = GBAWriteAsync(chan, src, status, __GBASyncCallback); + if (ret != GBA_READY) { + return ret; + } + return __GBASync(chan); +} |