Allow "reinterpretation" of framebuffer/zeta formats (#418)
* (Re)Implement format reinterpretation, other changes * Implement writeback to guest memory, some refactoring * More refactoring, implement reinterpretation the old way again * Clean up * Some fixes on M2MF (old Dma engine), added partial support for P2MF, fix conditional ssy, add Z24S8 zeta format, other fixes * nit: Formatting * Address PR feedback
This commit is contained in:
parent
3d16dbe12c
commit
193bf223ec
1 changed files with 29 additions and 0 deletions
|
@ -287,6 +287,14 @@ namespace ChocolArm64.Memory
|
||||||
return Data;
|
return Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ReadBytes(long Position, byte[] Data, int StartIndex, int Size)
|
||||||
|
{
|
||||||
|
//Note: This will be moved later.
|
||||||
|
EnsureRangeIsValid(Position, (uint)Size);
|
||||||
|
|
||||||
|
Marshal.Copy((IntPtr)Translate(Position), Data, StartIndex, Size);
|
||||||
|
}
|
||||||
|
|
||||||
public void WriteSByte(long Position, sbyte Value)
|
public void WriteSByte(long Position, sbyte Value)
|
||||||
{
|
{
|
||||||
WriteByte(Position, (byte)Value);
|
WriteByte(Position, (byte)Value);
|
||||||
|
@ -403,6 +411,27 @@ namespace ChocolArm64.Memory
|
||||||
Marshal.Copy(Data, 0, (IntPtr)TranslateWrite(Position), Data.Length);
|
Marshal.Copy(Data, 0, (IntPtr)TranslateWrite(Position), Data.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void WriteBytes(long Position, byte[] Data, int StartIndex, int Size)
|
||||||
|
{
|
||||||
|
//Note: This will be moved later.
|
||||||
|
//Using Translate instead of TranslateWrite is on purpose.
|
||||||
|
EnsureRangeIsValid(Position, (uint)Size);
|
||||||
|
|
||||||
|
Marshal.Copy(Data, StartIndex, (IntPtr)Translate(Position), Size);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CopyBytes(long Src, long Dst, long Size)
|
||||||
|
{
|
||||||
|
//Note: This will be moved later.
|
||||||
|
EnsureRangeIsValid(Src, Size);
|
||||||
|
EnsureRangeIsValid(Dst, Size);
|
||||||
|
|
||||||
|
byte* SrcPtr = Translate(Src);
|
||||||
|
byte* DstPtr = TranslateWrite(Dst);
|
||||||
|
|
||||||
|
Buffer.MemoryCopy(SrcPtr, DstPtr, Size, Size);
|
||||||
|
}
|
||||||
|
|
||||||
public void Map(long VA, long PA, long Size)
|
public void Map(long VA, long PA, long Size)
|
||||||
{
|
{
|
||||||
SetPTEntries(VA, RamPtr + PA, Size);
|
SetPTEntries(VA, RamPtr + PA, Size);
|
||||||
|
|
Loading…
Reference in a new issue