#include "libultra_internal.h" #include "hardware.h" s32 __osSpRawStartDma(u32 dir, void* sp_ptr, void* dram_ptr, size_t size) { if (__osSpDeviceBusy()) { return -1; } HW_REG(SP_MEM_ADDR_REG, void*) = sp_ptr; HW_REG(SP_DRAM_ADDR_REG, void*) = (void*) osVirtualToPhysical(dram_ptr); if (dir == 0) { HW_REG(SP_WR_LEN_REG, u32) = size - 1; } else { HW_REG(SP_RD_LEN_REG, u32) = size - 1; } return 0; }