mirror of
https://github.com/LNH-team/pico-loader.git
synced 2026-06-02 17:26:48 +02:00
Add support for DATEL devices (GAMES n' MUSIC and Action Replay DS(i) Media Edition) (#64)
This commit is contained in:
66
arm9/source/patches/platform/datel/DatelSpiCommandsAsm.h
Normal file
66
arm9/source/patches/platform/datel/DatelSpiCommandsAsm.h
Normal file
@@ -0,0 +1,66 @@
|
||||
#pragma once
|
||||
#include "sections.h"
|
||||
#include "../SdReadDmaPatchCode.h"
|
||||
|
||||
DEFINE_SECTION_SYMBOLS(datel_read_spi);
|
||||
DEFINE_SECTION_SYMBOLS(datel_spi_send);
|
||||
|
||||
extern "C" u8 datel_readSpiByte();
|
||||
extern "C" u8 datel_readWriteSpiByte(u8 value);
|
||||
extern "C" u8 datel_readSpiByteTimeout();
|
||||
extern "C" bool datel_waitSpiByteTimeout();
|
||||
|
||||
extern "C" u8 datel_spiSendSDIOCommandR0(u32 arg, u8 cmd);
|
||||
extern "C" u8 datel_spiSendSDIOCommand(u32 arg, u8 cmd, int extraBytes);
|
||||
|
||||
extern u32 datel_spiSendSDIOCommandR0_ReadWriteSpiByte;
|
||||
extern u32 datel_spiSendSDIOCommandR0_ReadSpiByteTimeout;
|
||||
|
||||
class DatelReadSpiBytePatchCode : public PatchCode
|
||||
{
|
||||
public:
|
||||
explicit DatelReadSpiBytePatchCode(PatchHeap& patchHeap)
|
||||
: PatchCode(SECTION_START(datel_read_spi), SECTION_SIZE(datel_read_spi), patchHeap) { }
|
||||
|
||||
const void* GetReadSpiByteFunction() const
|
||||
{
|
||||
return GetAddressAtTarget((void*)datel_readSpiByte);
|
||||
}
|
||||
|
||||
const void* GetReadWriteSpiByteFunction() const
|
||||
{
|
||||
return GetAddressAtTarget((void*)datel_readWriteSpiByte);
|
||||
}
|
||||
|
||||
const void* GetWaitSpiByteTimeoutFunction() const
|
||||
{
|
||||
return GetAddressAtTarget((void*)datel_waitSpiByteTimeout);
|
||||
}
|
||||
|
||||
const void* GetReadSpiByteTimeoutFunction() const
|
||||
{
|
||||
return GetAddressAtTarget((void*)datel_readSpiByteTimeout);
|
||||
}
|
||||
};
|
||||
|
||||
class DatelSendSDIOCommandPatchCode : public PatchCode
|
||||
{
|
||||
public:
|
||||
DatelSendSDIOCommandPatchCode(PatchHeap& patchHeap,
|
||||
const DatelReadSpiBytePatchCode* datelReadSpiBytePatchCode)
|
||||
: PatchCode(SECTION_START(datel_spi_send), SECTION_SIZE(datel_spi_send), patchHeap)
|
||||
{
|
||||
datel_spiSendSDIOCommandR0_ReadWriteSpiByte = (u32)datelReadSpiBytePatchCode->GetReadWriteSpiByteFunction();
|
||||
datel_spiSendSDIOCommandR0_ReadSpiByteTimeout = (u32)datelReadSpiBytePatchCode->GetReadSpiByteTimeoutFunction();
|
||||
}
|
||||
|
||||
const void* GetSpiSendSDIOCommandR0Function() const
|
||||
{
|
||||
return GetAddressAtTarget((void*)datel_spiSendSDIOCommandR0);
|
||||
}
|
||||
|
||||
const void* GetSpiSendSDIOCommandFunction() const
|
||||
{
|
||||
return GetAddressAtTarget((void*)datel_spiSendSDIOCommand);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user