Split main project into core,graphics and chocolarm4 subproject (#29)
This commit is contained in:
parent
cb665bb715
commit
62b827f474
257 changed files with 415 additions and 285 deletions
73
ChocolArm64/Memory/AMemoryHelper.cs
Normal file
73
ChocolArm64/Memory/AMemoryHelper.cs
Normal file
|
@ -0,0 +1,73 @@
|
|||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace ChocolArm64.Memory
|
||||
{
|
||||
public static class AMemoryHelper
|
||||
{
|
||||
public static void FillWithZeros(AMemory Memory, long Position, int Size)
|
||||
{
|
||||
int Size8 = Size & ~(8 - 1);
|
||||
|
||||
for (int Offs = 0; Offs < Size8; Offs += 8)
|
||||
{
|
||||
Memory.WriteInt64(Position + Offs, 0);
|
||||
}
|
||||
|
||||
for (int Offs = Size8; Offs < (Size - Size8); Offs++)
|
||||
{
|
||||
Memory.WriteByte(Position + Offs, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] ReadBytes(AMemory Memory, long Position, int Size)
|
||||
{
|
||||
byte[] Data = new byte[Size];
|
||||
|
||||
for (int Offs = 0; Offs < Size; Offs++)
|
||||
{
|
||||
Data[Offs] = (byte)Memory.ReadByte(Position + Offs);
|
||||
}
|
||||
|
||||
return Data;
|
||||
}
|
||||
|
||||
public static void WriteBytes(AMemory Memory, long Position, byte[] Data)
|
||||
{
|
||||
for (int Offs = 0; Offs < Data.Length; Offs++)
|
||||
{
|
||||
Memory.WriteByte(Position + Offs, Data[Offs]);
|
||||
}
|
||||
}
|
||||
|
||||
public static string ReadAsciiString(AMemory Memory, long Position, int MaxSize = -1)
|
||||
{
|
||||
using (MemoryStream MS = new MemoryStream())
|
||||
{
|
||||
for (int Offs = 0; Offs < MaxSize || MaxSize == -1; Offs++)
|
||||
{
|
||||
byte Value = (byte)Memory.ReadByte(Position + Offs);
|
||||
|
||||
if (Value == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
MS.WriteByte(Value);
|
||||
}
|
||||
|
||||
return Encoding.ASCII.GetString(MS.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
public static long PageRoundUp(long Value)
|
||||
{
|
||||
return (Value + AMemoryMgr.PageMask) & ~AMemoryMgr.PageMask;
|
||||
}
|
||||
|
||||
public static long PageRoundDown(long Value)
|
||||
{
|
||||
return Value & ~AMemoryMgr.PageMask;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue